Vulnerability Details CVE-2017-1000405
The Linux Kernel versions 2.6.38 through 4.14 have a problematic use of pmd_mkdirty() in the touch_pmd() function inside the THP implementation. touch_pmd() can be reached by get_user_pages(). In such case, the pmd will become dirty. This scenario breaks the new can_follow_write_pmd()'s logic - pmd can become dirty without going through a COW cycle. This bug is not as severe as the original "Dirty cow" because an ext4 file (or any other regular file) cannot be mapped using THP. Nevertheless, it does allow us to overwrite read-only huge pages. For example, the zero huge page and sealed shmem files can be overwritten (since their mapping can be populated using THP). Note that after the first write page-fault to the zero page, it will be replaced with a new fresh (and zeroed) thp.
Exploit prediction scoring system (EPSS) score
EPSS Score 0.021
EPSS Ranking 83.0%
CVSS Severity
CVSS v3 Score 7.0
CVSS v2 Score 6.9
Products affected by CVE-2017-1000405
-
cpe:2.3:o:linux:linux_kernel:3.10.106
-
cpe:2.3:o:linux:linux_kernel:3.10.107
-
cpe:2.3:o:linux:linux_kernel:3.10.108
-
cpe:2.3:o:linux:linux_kernel:3.12.73
-
cpe:2.3:o:linux:linux_kernel:3.12.74
-
cpe:2.3:o:linux:linux_kernel:3.16.42
-
cpe:2.3:o:linux:linux_kernel:3.16.43
-
cpe:2.3:o:linux:linux_kernel:3.16.44
-
cpe:2.3:o:linux:linux_kernel:3.16.45
-
cpe:2.3:o:linux:linux_kernel:3.16.46
-
cpe:2.3:o:linux:linux_kernel:3.16.47
-
cpe:2.3:o:linux:linux_kernel:3.16.48
-
cpe:2.3:o:linux:linux_kernel:3.16.49
-
cpe:2.3:o:linux:linux_kernel:3.16.50
-
cpe:2.3:o:linux:linux_kernel:3.16.51
-
cpe:2.3:o:linux:linux_kernel:3.18.55
-
cpe:2.3:o:linux:linux_kernel:3.18.56
-
cpe:2.3:o:linux:linux_kernel:3.18.57
-
cpe:2.3:o:linux:linux_kernel:3.18.58
-
cpe:2.3:o:linux:linux_kernel:3.18.59
-
cpe:2.3:o:linux:linux_kernel:3.18.60
-
cpe:2.3:o:linux:linux_kernel:3.18.61
-
cpe:2.3:o:linux:linux_kernel:3.18.62
-
cpe:2.3:o:linux:linux_kernel:3.18.63
-
cpe:2.3:o:linux:linux_kernel:3.18.64
-
cpe:2.3:o:linux:linux_kernel:3.18.65
-
cpe:2.3:o:linux:linux_kernel:3.18.66
-
cpe:2.3:o:linux:linux_kernel:3.18.67
-
cpe:2.3:o:linux:linux_kernel:3.18.68
-
cpe:2.3:o:linux:linux_kernel:3.18.69
-
cpe:2.3:o:linux:linux_kernel:3.18.70
-
cpe:2.3:o:linux:linux_kernel:3.18.71
-
cpe:2.3:o:linux:linux_kernel:3.18.72
-
cpe:2.3:o:linux:linux_kernel:3.18.73
-
cpe:2.3:o:linux:linux_kernel:3.18.74
-
cpe:2.3:o:linux:linux_kernel:3.18.75
-
cpe:2.3:o:linux:linux_kernel:3.18.76
-
cpe:2.3:o:linux:linux_kernel:3.18.77
-
cpe:2.3:o:linux:linux_kernel:3.18.78
-
cpe:2.3:o:linux:linux_kernel:3.18.79
-
cpe:2.3:o:linux:linux_kernel:3.18.80
-
cpe:2.3:o:linux:linux_kernel:3.18.81
-
cpe:2.3:o:linux:linux_kernel:3.18.82
-
cpe:2.3:o:linux:linux_kernel:3.18.83
-
cpe:2.3:o:linux:linux_kernel:3.18.84
-
cpe:2.3:o:linux:linux_kernel:3.18.85
-
cpe:2.3:o:linux:linux_kernel:3.2.100
-
cpe:2.3:o:linux:linux_kernel:3.2.101
-
cpe:2.3:o:linux:linux_kernel:3.2.102
-
cpe:2.3:o:linux:linux_kernel:3.2.87
-
cpe:2.3:o:linux:linux_kernel:3.2.88
-
cpe:2.3:o:linux:linux_kernel:3.2.89
-
cpe:2.3:o:linux:linux_kernel:3.2.90
-
cpe:2.3:o:linux:linux_kernel:3.2.91
-
cpe:2.3:o:linux:linux_kernel:3.2.92
-
cpe:2.3:o:linux:linux_kernel:3.2.93
-
cpe:2.3:o:linux:linux_kernel:3.2.94
-
cpe:2.3:o:linux:linux_kernel:3.2.95
-
cpe:2.3:o:linux:linux_kernel:3.2.96
-
cpe:2.3:o:linux:linux_kernel:3.2.97
-
cpe:2.3:o:linux:linux_kernel:3.2.98
-
cpe:2.3:o:linux:linux_kernel:3.2.99
-
cpe:2.3:o:linux:linux_kernel:4.1.41
-
cpe:2.3:o:linux:linux_kernel:4.1.42
-
cpe:2.3:o:linux:linux_kernel:4.1.43
-
cpe:2.3:o:linux:linux_kernel:4.1.44
-
cpe:2.3:o:linux:linux_kernel:4.1.45
-
cpe:2.3:o:linux:linux_kernel:4.1.46
-
cpe:2.3:o:linux:linux_kernel:4.1.47
-
cpe:2.3:o:linux:linux_kernel:4.10
-
cpe:2.3:o:linux:linux_kernel:4.10.1
-
cpe:2.3:o:linux:linux_kernel:4.10.10
-
cpe:2.3:o:linux:linux_kernel:4.10.11
-
cpe:2.3:o:linux:linux_kernel:4.10.12
-
cpe:2.3:o:linux:linux_kernel:4.10.13
-
cpe:2.3:o:linux:linux_kernel:4.10.14
-
cpe:2.3:o:linux:linux_kernel:4.10.15
-
cpe:2.3:o:linux:linux_kernel:4.10.16
-
cpe:2.3:o:linux:linux_kernel:4.10.17
-
cpe:2.3:o:linux:linux_kernel:4.10.2
-
cpe:2.3:o:linux:linux_kernel:4.10.3
-
cpe:2.3:o:linux:linux_kernel:4.10.4
-
cpe:2.3:o:linux:linux_kernel:4.10.5
-
cpe:2.3:o:linux:linux_kernel:4.10.6
-
cpe:2.3:o:linux:linux_kernel:4.10.7
-
cpe:2.3:o:linux:linux_kernel:4.10.8
-
cpe:2.3:o:linux:linux_kernel:4.10.9
-
cpe:2.3:o:linux:linux_kernel:4.11
-
cpe:2.3:o:linux:linux_kernel:4.11.1
-
cpe:2.3:o:linux:linux_kernel:4.11.10
-
cpe:2.3:o:linux:linux_kernel:4.11.11
-
cpe:2.3:o:linux:linux_kernel:4.11.12
-
cpe:2.3:o:linux:linux_kernel:4.11.2
-
cpe:2.3:o:linux:linux_kernel:4.11.3
-
cpe:2.3:o:linux:linux_kernel:4.11.4
-
cpe:2.3:o:linux:linux_kernel:4.11.5
-
cpe:2.3:o:linux:linux_kernel:4.11.6
-
cpe:2.3:o:linux:linux_kernel:4.11.7
-
cpe:2.3:o:linux:linux_kernel:4.11.8
-
cpe:2.3:o:linux:linux_kernel:4.11.9
-
cpe:2.3:o:linux:linux_kernel:4.12
-
cpe:2.3:o:linux:linux_kernel:4.12.1
-
cpe:2.3:o:linux:linux_kernel:4.12.10
-
cpe:2.3:o:linux:linux_kernel:4.12.11
-
cpe:2.3:o:linux:linux_kernel:4.12.12
-
cpe:2.3:o:linux:linux_kernel:4.12.13
-
cpe:2.3:o:linux:linux_kernel:4.12.14
-
cpe:2.3:o:linux:linux_kernel:4.12.2
-
cpe:2.3:o:linux:linux_kernel:4.12.3
-
cpe:2.3:o:linux:linux_kernel:4.12.4
-
cpe:2.3:o:linux:linux_kernel:4.12.5
-
cpe:2.3:o:linux:linux_kernel:4.12.6
-
cpe:2.3:o:linux:linux_kernel:4.12.7
-
cpe:2.3:o:linux:linux_kernel:4.12.8
-
cpe:2.3:o:linux:linux_kernel:4.12.9
-
cpe:2.3:o:linux:linux_kernel:4.13
-
cpe:2.3:o:linux:linux_kernel:4.13.1
-
cpe:2.3:o:linux:linux_kernel:4.13.10
-
cpe:2.3:o:linux:linux_kernel:4.13.11
-
cpe:2.3:o:linux:linux_kernel:4.13.12
-
cpe:2.3:o:linux:linux_kernel:4.13.13
-
cpe:2.3:o:linux:linux_kernel:4.13.14
-
cpe:2.3:o:linux:linux_kernel:4.13.15
-
cpe:2.3:o:linux:linux_kernel:4.13.16
-
cpe:2.3:o:linux:linux_kernel:4.13.2
-
cpe:2.3:o:linux:linux_kernel:4.13.3
-
cpe:2.3:o:linux:linux_kernel:4.13.4
-
cpe:2.3:o:linux:linux_kernel:4.13.5
-
cpe:2.3:o:linux:linux_kernel:4.13.6
-
cpe:2.3:o:linux:linux_kernel:4.13.7
-
cpe:2.3:o:linux:linux_kernel:4.13.8
-
cpe:2.3:o:linux:linux_kernel:4.13.9
-
cpe:2.3:o:linux:linux_kernel:4.14
-
cpe:2.3:o:linux:linux_kernel:4.14.1
-
cpe:2.3:o:linux:linux_kernel:4.14.2
-
cpe:2.3:o:linux:linux_kernel:4.14.3
-
cpe:2.3:o:linux:linux_kernel:4.4.100
-
cpe:2.3:o:linux:linux_kernel:4.4.101
-
cpe:2.3:o:linux:linux_kernel:4.4.102
-
cpe:2.3:o:linux:linux_kernel:4.4.103
-
cpe:2.3:o:linux:linux_kernel:4.4.70
-
cpe:2.3:o:linux:linux_kernel:4.4.71
-
cpe:2.3:o:linux:linux_kernel:4.4.72
-
cpe:2.3:o:linux:linux_kernel:4.4.73
-
cpe:2.3:o:linux:linux_kernel:4.4.74
-
cpe:2.3:o:linux:linux_kernel:4.4.75
-
cpe:2.3:o:linux:linux_kernel:4.4.76
-
cpe:2.3:o:linux:linux_kernel:4.4.77
-
cpe:2.3:o:linux:linux_kernel:4.4.78
-
cpe:2.3:o:linux:linux_kernel:4.4.79
-
cpe:2.3:o:linux:linux_kernel:4.4.80
-
cpe:2.3:o:linux:linux_kernel:4.4.81
-
cpe:2.3:o:linux:linux_kernel:4.4.82
-
cpe:2.3:o:linux:linux_kernel:4.4.83
-
cpe:2.3:o:linux:linux_kernel:4.4.84
-
cpe:2.3:o:linux:linux_kernel:4.4.85
-
cpe:2.3:o:linux:linux_kernel:4.4.86
-
cpe:2.3:o:linux:linux_kernel:4.4.87
-
cpe:2.3:o:linux:linux_kernel:4.4.88
-
cpe:2.3:o:linux:linux_kernel:4.4.89
-
cpe:2.3:o:linux:linux_kernel:4.4.90
-
cpe:2.3:o:linux:linux_kernel:4.4.91
-
cpe:2.3:o:linux:linux_kernel:4.4.92
-
cpe:2.3:o:linux:linux_kernel:4.4.93
-
cpe:2.3:o:linux:linux_kernel:4.4.94
-
cpe:2.3:o:linux:linux_kernel:4.4.95
-
cpe:2.3:o:linux:linux_kernel:4.4.96
-
cpe:2.3:o:linux:linux_kernel:4.4.97
-
cpe:2.3:o:linux:linux_kernel:4.4.98
-
cpe:2.3:o:linux:linux_kernel:4.4.99
-
cpe:2.3:o:linux:linux_kernel:4.9.10
-
cpe:2.3:o:linux:linux_kernel:4.9.11
-
cpe:2.3:o:linux:linux_kernel:4.9.12
-
cpe:2.3:o:linux:linux_kernel:4.9.13
-
cpe:2.3:o:linux:linux_kernel:4.9.14
-
cpe:2.3:o:linux:linux_kernel:4.9.15
-
cpe:2.3:o:linux:linux_kernel:4.9.16
-
cpe:2.3:o:linux:linux_kernel:4.9.17
-
cpe:2.3:o:linux:linux_kernel:4.9.18
-
cpe:2.3:o:linux:linux_kernel:4.9.19
-
cpe:2.3:o:linux:linux_kernel:4.9.20
-
cpe:2.3:o:linux:linux_kernel:4.9.21
-
cpe:2.3:o:linux:linux_kernel:4.9.22
-
cpe:2.3:o:linux:linux_kernel:4.9.23
-
cpe:2.3:o:linux:linux_kernel:4.9.24
-
cpe:2.3:o:linux:linux_kernel:4.9.25
-
cpe:2.3:o:linux:linux_kernel:4.9.26
-
cpe:2.3:o:linux:linux_kernel:4.9.27
-
cpe:2.3:o:linux:linux_kernel:4.9.28
-
cpe:2.3:o:linux:linux_kernel:4.9.29
-
cpe:2.3:o:linux:linux_kernel:4.9.30
-
cpe:2.3:o:linux:linux_kernel:4.9.31
-
cpe:2.3:o:linux:linux_kernel:4.9.32
-
cpe:2.3:o:linux:linux_kernel:4.9.33
-
cpe:2.3:o:linux:linux_kernel:4.9.34
-
cpe:2.3:o:linux:linux_kernel:4.9.35
-
cpe:2.3:o:linux:linux_kernel:4.9.36
-
cpe:2.3:o:linux:linux_kernel:4.9.37
-
cpe:2.3:o:linux:linux_kernel:4.9.38
-
cpe:2.3:o:linux:linux_kernel:4.9.39
-
cpe:2.3:o:linux:linux_kernel:4.9.40
-
cpe:2.3:o:linux:linux_kernel:4.9.41
-
cpe:2.3:o:linux:linux_kernel:4.9.42
-
cpe:2.3:o:linux:linux_kernel:4.9.43
-
cpe:2.3:o:linux:linux_kernel:4.9.44
-
cpe:2.3:o:linux:linux_kernel:4.9.45
-
cpe:2.3:o:linux:linux_kernel:4.9.46
-
cpe:2.3:o:linux:linux_kernel:4.9.47
-
cpe:2.3:o:linux:linux_kernel:4.9.48
-
cpe:2.3:o:linux:linux_kernel:4.9.49
-
cpe:2.3:o:linux:linux_kernel:4.9.50
-
cpe:2.3:o:linux:linux_kernel:4.9.51
-
cpe:2.3:o:linux:linux_kernel:4.9.52
-
cpe:2.3:o:linux:linux_kernel:4.9.53
-
cpe:2.3:o:linux:linux_kernel:4.9.54
-
cpe:2.3:o:linux:linux_kernel:4.9.55
-
cpe:2.3:o:linux:linux_kernel:4.9.56
-
cpe:2.3:o:linux:linux_kernel:4.9.57
-
cpe:2.3:o:linux:linux_kernel:4.9.58
-
cpe:2.3:o:linux:linux_kernel:4.9.59
-
cpe:2.3:o:linux:linux_kernel:4.9.60
-
cpe:2.3:o:linux:linux_kernel:4.9.61
-
cpe:2.3:o:linux:linux_kernel:4.9.62
-
cpe:2.3:o:linux:linux_kernel:4.9.63
-
cpe:2.3:o:linux:linux_kernel:4.9.64
-
cpe:2.3:o:linux:linux_kernel:4.9.65
-
cpe:2.3:o:linux:linux_kernel:4.9.66
-
cpe:2.3:o:linux:linux_kernel:4.9.7
-
cpe:2.3:o:linux:linux_kernel:4.9.8
-
cpe:2.3:o:linux:linux_kernel:4.9.9