{"api_version":"1","generated_at":"2026-04-23T04:34:00+00:00","cve":"CVE-2020-16120","urls":{"html":"https://cve.report/CVE-2020-16120","api":"https://cve.report/api/cve/CVE-2020-16120.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2020-16120","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2020-16120"},"summary":{"title":"CVE-2020-16120","description":"Overlayfs did not properly perform permission checking when copying up files in an overlayfs and could be exploited from within a user namespace, if, for example, unprivileged user namespaces were allowed. It was possible to have a file not readable by an unprivileged user to be copied to a mountpoint controlled by the user, like a removable device. This was introduced in kernel version 4.19 by commit d1d04ef (\"ovl: stack file ops\"). This was fixed in kernel version 5.8 by commits 56230d9 (\"ovl: verify permissions in ovl_path_open()\"), 48bd024 (\"ovl: switch to mounter creds in readdir\") and 05acefb (\"ovl: check permission to open real file\"). Additionally, commits 130fdbc (\"ovl: pass correct flags for opening real directory\") and 292f902 (\"ovl: call secutiry hook in ovl_real_ioctl()\") in kernel 5.8 might also be desired or necessary. These additional commits introduced a regression in overlay mounts within user namespaces which prevented access to files with ownership outside of the user namespace. This regression was mitigated by subsequent commit b6650da (\"ovl: do not fail because of O_NOATIMEi\") in kernel 5.11.","state":"PUBLIC","assigner":"security@ubuntu.com","published_at":"2021-02-10 20:15:00","updated_at":"2021-11-18 18:40:00"},"problem_types":["NVD-CWE-Other"],"metrics":[],"references":[{"url":"https://git.kernel.org/linus/b6650dab404c701d7fe08a108b746542a934da84","name":"https://git.kernel.org/linus/b6650dab404c701d7fe08a108b746542a934da84","refsource":"CONFIRM","tags":["Patch","Third Party Advisory"],"title":"kernel/git/torvalds/linux.git - Linux kernel source tree","mime":"text/html","httpstatus":"200","archivestatus":"404"},{"url":"https://ubuntu.com/USN-4578-1","name":"https://ubuntu.com/USN-4578-1","refsource":"UBUNTU","tags":["Third Party Advisory"],"title":"USN-4578-1: Linux kernel vulnerabilities | Ubuntu security notices | Ubuntu","mime":"text/html","httpstatus":"200","archivestatus":"404"},{"url":"https://git.kernel.org/linus/48bd024b8a40d73ad6b086de2615738da0c7004f","name":"https://git.kernel.org/linus/48bd024b8a40d73ad6b086de2615738da0c7004f","refsource":"CONFIRM","tags":["Patch","Third Party Advisory"],"title":"kernel/git/torvalds/linux.git - Linux kernel source tree","mime":"text/html","httpstatus":"200","archivestatus":"200"},{"url":"https://git.kernel.org/linus/05acefb4872dae89e772729efb194af754c877e8","name":"https://git.kernel.org/linus/05acefb4872dae89e772729efb194af754c877e8","refsource":"CONFIRM","tags":["Patch","Third Party Advisory"],"title":"kernel/git/torvalds/linux.git - Linux kernel source tree","mime":"text/html","httpstatus":"200","archivestatus":"200"},{"url":"https://launchpad.net/bugs/1894980","name":"https://launchpad.net/bugs/1894980","refsource":"UBUNTU","tags":["Issue Tracking","Patch","Third Party Advisory"],"title":"Bug #1894980 “CVE-2020-16120: unprivileged overlayfs permission ...” : Bugs : linux package : Ubuntu","mime":"text/html","httpstatus":"200","archivestatus":"200"},{"url":"https://ubuntu.com/USN-4576-1","name":"https://ubuntu.com/USN-4576-1","refsource":"UBUNTU","tags":["Third Party Advisory"],"title":"USN-4576-1: Linux kernel vulnerabilities | Ubuntu security notices | Ubuntu","mime":"text/html","httpstatus":"200","archivestatus":"200"},{"url":"https://git.kernel.org/linus/56230d956739b9cb1cbde439d76227d77979a04d","name":"https://git.kernel.org/linus/56230d956739b9cb1cbde439d76227d77979a04d","refsource":"CONFIRM","tags":["Patch","Third Party Advisory"],"title":"kernel/git/torvalds/linux.git - Linux kernel source tree","mime":"text/html","httpstatus":"200","archivestatus":"200"},{"url":"https://ubuntu.com/USN-4577-1","name":"https://ubuntu.com/USN-4577-1","refsource":"UBUNTU","tags":["Third Party Advisory"],"title":"USN-4577-1: Linux kernel vulnerabilities | Ubuntu security notices | Ubuntu","mime":"text/html","httpstatus":"200","archivestatus":"200"},{"url":"https://git.kernel.org/linus/d1d04ef8572bc8c22265057bd3d5a79f223f8f52","name":"https://git.kernel.org/linus/d1d04ef8572bc8c22265057bd3d5a79f223f8f52","refsource":"CONFIRM","tags":["Patch","Third Party Advisory"],"title":"kernel/git/torvalds/linux.git - Linux kernel source tree","mime":"text/html","httpstatus":"200","archivestatus":"200"},{"url":"https://launchpad.net/bugs/1900141","name":"https://launchpad.net/bugs/1900141","refsource":"UBUNTU","tags":["Issue Tracking","Third Party Advisory"],"title":"Bug #1900141 “overlay: permission regression in 5.4.0-51.56 due ...” : Bugs : linux package : Ubuntu","mime":"text/html","httpstatus":"200","archivestatus":"404"},{"url":"https://www.openwall.com/lists/oss-security/2020/10/14/2","name":"https://www.openwall.com/lists/oss-security/2020/10/14/2","refsource":"CONFIRM","tags":["Mailing List","Third Party Advisory"],"title":"oss-security - Re: CVE-2020-16120 - incorrect unprivileged overlayfs permission checking","mime":"text/html","httpstatus":"200","archivestatus":"200"},{"url":"https://www.cve.org/CVERecord?id=CVE-2020-16120","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2020-16120","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[{"source":"LEGACY","value":"Giuseppe Scrivano","lang":""}],"nvd_cpes":[{"cve_year":"2020","cve_id":"16120","vulnerable":"1","versionEndIncluding":"","cpe1":"cpe","cpe2":"2.3","cpe3":"o","cpe4":"canonical","cpe5":"ubuntu_linux","cpe6":"14.04","cpe7":"*","cpe8":"*","cpe9":"*","cpe10":"esm","cpe11":"*","cpe12":"*","cpe13":"*"},{"cve_year":"2020","cve_id":"16120","vulnerable":"1","versionEndIncluding":"","cpe1":"cpe","cpe2":"2.3","cpe3":"o","cpe4":"canonical","cpe5":"ubuntu_linux","cpe6":"16.04","cpe7":"*","cpe8":"*","cpe9":"*","cpe10":"lts","cpe11":"*","cpe12":"*","cpe13":"*"},{"cve_year":"2020","cve_id":"16120","vulnerable":"1","versionEndIncluding":"","cpe1":"cpe","cpe2":"2.3","cpe3":"o","cpe4":"canonical","cpe5":"ubuntu_linux","cpe6":"18.04","cpe7":"*","cpe8":"*","cpe9":"*","cpe10":"lts","cpe11":"*","cpe12":"*","cpe13":"*"},{"cve_year":"2020","cve_id":"16120","vulnerable":"1","versionEndIncluding":"","cpe1":"cpe","cpe2":"2.3","cpe3":"o","cpe4":"canonical","cpe5":"ubuntu_linux","cpe6":"20.04","cpe7":"*","cpe8":"*","cpe9":"*","cpe10":"lts","cpe11":"*","cpe12":"*","cpe13":"*"},{"cve_year":"2020","cve_id":"16120","vulnerable":"1","versionEndIncluding":"1","cpe1":"cpe","cpe2":"2.3","cpe3":"o","cpe4":"canonical","cpe5":"ubuntu_linux","cpe6":"14.04","cpe7":"*","cpe8":"*","cpe9":"*","cpe10":"esm","cpe11":"*","cpe12":"*","cpe13":"*"},{"cve_year":"2020","cve_id":"16120","vulnerable":"1","versionEndIncluding":"1","cpe1":"cpe","cpe2":"2.3","cpe3":"o","cpe4":"canonical","cpe5":"ubuntu_linux","cpe6":"16.04","cpe7":"*","cpe8":"*","cpe9":"*","cpe10":"lts","cpe11":"*","cpe12":"*","cpe13":"*"},{"cve_year":"2020","cve_id":"16120","vulnerable":"1","versionEndIncluding":"1","cpe1":"cpe","cpe2":"2.3","cpe3":"o","cpe4":"canonical","cpe5":"ubuntu_linux","cpe6":"18.04","cpe7":"*","cpe8":"*","cpe9":"*","cpe10":"lts","cpe11":"*","cpe12":"*","cpe13":"*"},{"cve_year":"2020","cve_id":"16120","vulnerable":"1","versionEndIncluding":"1","cpe1":"cpe","cpe2":"2.3","cpe3":"o","cpe4":"canonical","cpe5":"ubuntu_linux","cpe6":"20.04","cpe7":"*","cpe8":"*","cpe9":"*","cpe10":"lts","cpe11":"*","cpe12":"*","cpe13":"*"},{"cve_year":"2020","cve_id":"16120","vulnerable":"1","versionEndIncluding":"","cpe1":"cpe","cpe2":"2.3","cpe3":"o","cpe4":"linux","cpe5":"linux_kernel","cpe6":"*","cpe7":"*","cpe8":"*","cpe9":"*","cpe10":"*","cpe11":"*","cpe12":"*","cpe13":"*"},{"cve_year":"2020","cve_id":"16120","vulnerable":"1","versionEndIncluding":"1","cpe1":"cpe","cpe2":"2.3","cpe3":"o","cpe4":"linux","cpe5":"linux_kernel","cpe6":"*","cpe7":"*","cpe8":"*","cpe9":"*","cpe10":"*","cpe11":"*","cpe12":"*","cpe13":"*"}],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[{"cve":"CVE-2020-16120","qid":"670375","title":"EulerOS Security Update for kernel (EulerOS-SA-2021-1950)"},{"cve":"CVE-2020-16120","qid":"670396","title":"EulerOS Security Update for kernel (EulerOS-SA-2021-1929)"},{"cve":"CVE-2020-16120","qid":"670936","title":"EulerOS Security Update for kernel (EulerOS-SA-2021-1929)"},{"cve":"CVE-2020-16120","qid":"750376","title":"OpenSUSE Security Update for RT kernel (openSUSE-SU-2021:0242-1)"},{"cve":"CVE-2020-16120","qid":"750533","title":"OpenSUSE Security Update for the Linux Kernel (openSUSE-SU-2020:2112-1)"},{"cve":"CVE-2020-16120","qid":"750609","title":"OpenSUSE Security Update for the Linux Kernel (openSUSE-SU-2020:1906-1)"},{"cve":"CVE-2020-16120","qid":"750738","title":"SUSE Enterprise Linux Security Update for the Linux Kernel (SUSE-SU-2020:3326-1)"},{"cve":"CVE-2020-16120","qid":"900100","title":"CBL-Mariner Linux Security Update for kernel 5.10.52.1"},{"cve":"CVE-2020-16120","qid":"900305","title":"CBL-Mariner Linux Security Update for kernel 5.10.57.1"},{"cve":"CVE-2020-16120","qid":"900320","title":"CBL-Mariner Linux Security Update for kernel 5.10.60.1"},{"cve":"CVE-2020-16120","qid":"901249","title":"Common Base Linux Mariner (CBL-Mariner) Security Update for kernel (6522-1)"},{"cve":"CVE-2020-16120","qid":"903418","title":"Common Base Linux Mariner (CBL-Mariner) Security Update for kernel (3885)"},{"cve":"CVE-2020-16120","qid":"905831","title":"Common Base Linux Mariner (CBL-Mariner) Security Update for kernel (3885-1)"}]},"source_records":{"cve_program":{"CVE_data_meta":{"AKA":"","ASSIGNER":"security@ubuntu.com","DATE_PUBLIC":"2020-10-13T16:00:00.000Z","ID":"CVE-2020-16120","STATE":"PUBLIC","TITLE":"Unprivileged overlay + shiftfs read access"},"affects":{"vendor":{"vendor_data":[{"product":{"product_data":[{"product_name":"Linux kernel","version":{"version_data":[{"platform":"","version_affected":"<","version_name":"5.11-stable","version_value":"5.11.0"}]}}]},"vendor_name":"Linux kernel"}]}},"configuration":[],"credit":[{"lang":"eng","value":"Giuseppe Scrivano"}],"data_format":"MITRE","data_type":"CVE","data_version":"4.0","description":{"description_data":[{"lang":"eng","value":"Overlayfs did not properly perform permission checking when copying up files in an overlayfs and could be exploited from within a user namespace, if, for example, unprivileged user namespaces were allowed. It was possible to have a file not readable by an unprivileged user to be copied to a mountpoint controlled by the user, like a removable device. This was introduced in kernel version 4.19 by commit d1d04ef (\"ovl: stack file ops\"). This was fixed in kernel version 5.8 by commits 56230d9 (\"ovl: verify permissions in ovl_path_open()\"), 48bd024 (\"ovl: switch to mounter creds in readdir\") and 05acefb (\"ovl: check permission to open real file\"). Additionally, commits 130fdbc (\"ovl: pass correct flags for opening real directory\") and 292f902 (\"ovl: call secutiry hook in ovl_real_ioctl()\") in kernel 5.8 might also be desired or necessary. These additional commits introduced a regression in overlay mounts within user namespaces which prevented access to files with ownership outside of the user namespace. This regression was mitigated by subsequent commit b6650da (\"ovl: do not fail because of O_NOATIMEi\") in kernel 5.11."}]},"exploit":[],"generator":{"engine":"Vulnogram 0.0.9"},"impact":{"cvss":{"attackComplexity":"HIGH","attackVector":"LOCAL","availabilityImpact":"NONE","baseScore":5.1,"baseSeverity":"MEDIUM","confidentialityImpact":"HIGH","integrityImpact":"NONE","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N","version":"3.1"}},"problemtype":{"problemtype_data":[{"description":[{"lang":"eng","value":"CWE-266 Incorrect Privilege Assignment"}]}]},"references":{"reference_data":[{"name":"https://ubuntu.com/USN-4576-1","refsource":"UBUNTU","url":"https://ubuntu.com/USN-4576-1"},{"name":"https://ubuntu.com/USN-4577-1","refsource":"UBUNTU","url":"https://ubuntu.com/USN-4577-1"},{"name":"https://ubuntu.com/USN-4578-1","refsource":"UBUNTU","url":"https://ubuntu.com/USN-4578-1"},{"name":"https://www.openwall.com/lists/oss-security/2020/10/14/2","refsource":"CONFIRM","url":"https://www.openwall.com/lists/oss-security/2020/10/14/2"},{"name":"https://launchpad.net/bugs/1894980","refsource":"UBUNTU","url":"https://launchpad.net/bugs/1894980"},{"name":"https://launchpad.net/bugs/1900141","refsource":"UBUNTU","url":"https://launchpad.net/bugs/1900141"},{"name":"https://git.kernel.org/linus/56230d956739b9cb1cbde439d76227d77979a04d","refsource":"CONFIRM","url":"https://git.kernel.org/linus/56230d956739b9cb1cbde439d76227d77979a04d"},{"name":"https://git.kernel.org/linus/48bd024b8a40d73ad6b086de2615738da0c7004f","refsource":"CONFIRM","url":"https://git.kernel.org/linus/48bd024b8a40d73ad6b086de2615738da0c7004f"},{"name":"https://git.kernel.org/linus/05acefb4872dae89e772729efb194af754c877e8","refsource":"CONFIRM","url":"https://git.kernel.org/linus/05acefb4872dae89e772729efb194af754c877e8"},{"name":"https://git.kernel.org/linus/d1d04ef8572bc8c22265057bd3d5a79f223f8f52","refsource":"CONFIRM","url":"https://git.kernel.org/linus/d1d04ef8572bc8c22265057bd3d5a79f223f8f52"},{"name":"https://git.kernel.org/linus/b6650dab404c701d7fe08a108b746542a934da84","refsource":"CONFIRM","url":"https://git.kernel.org/linus/b6650dab404c701d7fe08a108b746542a934da84"}]},"solution":[],"source":{"advisory":"https://ubuntu.com/USN-4576-1","defect":["https://launchpad.net/bugs/1894980"],"discovery":"EXTERNAL"},"work_around":[]},"nvd":{"publishedDate":"2021-02-10 20:15:00","lastModifiedDate":"2021-11-18 18:40:00","problem_types":["NVD-CWE-Other"],"metrics":{"baseMetricV3":{"cvssV3":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N","attackVector":"LOCAL","attackComplexity":"LOW","privilegesRequired":"HIGH","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"NONE","availabilityImpact":"NONE","baseScore":4.4,"baseSeverity":"MEDIUM"},"exploitabilityScore":0.8,"impactScore":3.6},"baseMetricV2":{"cvssV2":{"version":"2.0","vectorString":"AV:L/AC:L/Au:N/C:P/I:N/A:N","accessVector":"LOCAL","accessComplexity":"LOW","authentication":"NONE","confidentialityImpact":"PARTIAL","integrityImpact":"NONE","availabilityImpact":"NONE","baseScore":2.1},"severity":"LOW","exploitabilityScore":3.9,"impactScore":2.9,"acInsufInfo":false,"obtainAllPrivilege":false,"obtainUserPrivilege":false,"obtainOtherPrivilege":false,"userInteractionRequired":false}},"configurations":{"CVE_data_version":"4.0","nodes":[{"operator":"OR","children":[],"cpe_match":[{"vulnerable":true,"cpe23Uri":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"5.11","cpe_name":[]}]},{"operator":"OR","children":[],"cpe_match":[{"vulnerable":true,"cpe23Uri":"cpe:2.3:o:canonical:ubuntu_linux:16.04:*:*:*:lts:*:*:*","cpe_name":[]},{"vulnerable":true,"cpe23Uri":"cpe:2.3:o:canonical:ubuntu_linux:18.04:*:*:*:lts:*:*:*","cpe_name":[]},{"vulnerable":true,"cpe23Uri":"cpe:2.3:o:canonical:ubuntu_linux:14.04:*:*:*:esm:*:*:*","cpe_name":[]},{"vulnerable":true,"cpe23Uri":"cpe:2.3:o:canonical:ubuntu_linux:20.04:*:*:*:lts:*:*:*","cpe_name":[]}]}]}},"legacy_mitre":{"record":{"CveYear":"2020","CveId":"16120","Ordinal":"177527","Title":"CVE-2020-16120","CVE":"CVE-2020-16120","Year":"2020"},"notes":[{"CveYear":"2020","CveId":"16120","Ordinal":"1","NoteData":"Overlayfs did not properly perform permission checking when copying up files in an overlayfs and could be exploited from within a user namespace, if, for example, unprivileged user namespaces were allowed. It was possible to have a file not readable by an unprivileged user to be copied to a mountpoint controlled by the user, like a removable device. This was introduced in kernel version 4.19 by commit d1d04ef (\"ovl: stack file ops\"). This was fixed in kernel version 5.8 by commits 56230d9 (\"ovl: verify permissions in ovl_path_open()\"), 48bd024 (\"ovl: switch to mounter creds in readdir\") and 05acefb (\"ovl: check permission to open real file\"). Additionally, commits 130fdbc (\"ovl: pass correct flags for opening real directory\") and 292f902 (\"ovl: call secutiry hook in ovl_real_ioctl()\") in kernel 5.8 might also be desired or necessary. These additional commits introduced a regression in overlay mounts within user namespaces which prevented access to files with ownership outside of the user namespace. This regression was mitigated by subsequent commit b6650da (\"ovl: do not fail because of O_NOATIMEi\") in kernel 5.11.","Type":"Description","Title":null},{"CveYear":"2020","CveId":"16120","Ordinal":"2","NoteData":"2021-02-10","Type":"Other","Title":"Published"},{"CveYear":"2020","CveId":"16120","Ordinal":"3","NoteData":"2021-02-10","Type":"Other","Title":"Modified"}]}}}