{"id":"CVE-2020-15703","aliases":["EUVD-2022-5615","GHSA-wpmr-q825-x4c6","PYSEC-2026-783","UBUNTU-CVE-2020-15703","USN-4537-1"],"status":"published","title":"aptdaemon allows unprivileged users to test for the presence of local files via the transaction Locale property","description":"There is no input validation on the Locale property in an apt transaction. An unprivileged user can supply a full path to a writable directory, which lets aptd read a file as root. Having a symlink in place results in an error message if the file exists, and no error otherwise. This way an unprivileged user can check for the existence of any files on the system as root.","severity":{"version":"3.1","score":4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-10","score":0.0049,"percentile":0.42468,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-200","CWE-22"],"published":"2020-09-24T00:00:00Z","modified":"2026-07-07T11:56:14Z","fixes":[{"ecosystem":"PyPI","package":"aptdaemon","fixed_in":["1.1.1"],"sources":["ghsa","osv"]},{"ecosystem":"Ubuntu:16.04:LTS","package":"aptdaemon","fixed_in":["1.1.1+bzr982-0ubuntu14.4"],"sources":["osv"]},{"ecosystem":"Ubuntu:18.04:LTS","package":"aptdaemon","fixed_in":["1.1.1+bzr982-0ubuntu19.4"],"sources":["osv"]},{"ecosystem":"Ubuntu:20.04:LTS","package":"aptdaemon","fixed_in":["1.1.1+bzr982-0ubuntu32.2"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"aptdaemon","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.1.1"}]}]},{"source":"osv","ecosystem":"PyPI","package":"aptdaemon","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.1.1"}]}],"versions":["0.3X","0.40","1.0","1.1","trunk"]},{"source":"osv","ecosystem":"PyPI","package":"aptdaemon","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.1.1"}]}],"versions":["0.3X","0.40","1.0","1.1","trunk"]},{"source":"osv","ecosystem":"Ubuntu:16.04:LTS","package":"aptdaemon","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.1.1+bzr982-0ubuntu14.4"}]}],"versions":["1.1.1+bzr982-0ubuntu14","1.1.1+bzr982-0ubuntu14.1","1.1.1+bzr982-0ubuntu14.2","1.1.1+bzr982-0ubuntu14.3"]},{"source":"osv","ecosystem":"Ubuntu:18.04:LTS","package":"aptdaemon","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.1.1+bzr982-0ubuntu19.4"}]}],"versions":["1.1.1+bzr982-0ubuntu17","1.1.1+bzr982-0ubuntu19","1.1.1+bzr982-0ubuntu19.1","1.1.1+bzr982-0ubuntu19.2","1.1.1+bzr982-0ubuntu19.3"]},{"source":"osv","ecosystem":"Ubuntu:20.04:LTS","package":"aptdaemon","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.1.1+bzr982-0ubuntu32.2"}]}],"versions":["1.1.1+bzr982-0ubuntu28","1.1.1+bzr982-0ubuntu30","1.1.1+bzr982-0ubuntu31","1.1.1+bzr982-0ubuntu32","1.1.1+bzr982-0ubuntu32.1"]},{"source":"osv","ecosystem":"Ubuntu:16.04:LTS","package":"aptdaemon","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.1.1+bzr982-0ubuntu14.4"}]}],"versions":["1.1.1+bzr982-0ubuntu14","1.1.1+bzr982-0ubuntu14.1","1.1.1+bzr982-0ubuntu14.2","1.1.1+bzr982-0ubuntu14.3"]},{"source":"osv","ecosystem":"Ubuntu:18.04:LTS","package":"aptdaemon","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.1.1+bzr982-0ubuntu19.4"}]}],"versions":["1.1.1+bzr982-0ubuntu17","1.1.1+bzr982-0ubuntu19","1.1.1+bzr982-0ubuntu19.1","1.1.1+bzr982-0ubuntu19.2","1.1.1+bzr982-0ubuntu19.3"]},{"source":"osv","ecosystem":"Ubuntu:20.04:LTS","package":"aptdaemon","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.1.1+bzr982-0ubuntu32.2"}]}],"versions":["1.1.1+bzr982-0ubuntu28","1.1.1+bzr982-0ubuntu30","1.1.1+bzr982-0ubuntu31","1.1.1+bzr982-0ubuntu32","1.1.1+bzr982-0ubuntu32.1"]}],"products":[{"vendor":"aptdaemon_project","product":"aptdaemon"},{"vendor":"canonical","product":"aptdaemon"}],"references":[{"url":"https://www.eyecontrol.nl/blog/the-story-of-3-cves-in-ubuntu-desktop.html","tags":["x_refsource_MISC","x_transferred","Exploit","Third Party Advisory","web","report"]},{"url":"https://ubuntu.com/security/notices/USN-4537-1","tags":["x_refsource_MISC","x_transferred","Patch","Third Party Advisory","web","advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2020-15703","tags":["advisory"]},{"url":"https://bugs.launchpad.net/ubuntu/+source/aptdaemon/+bug/1888235","tags":["web"]},{"url":"https://github.com/linuxmint/aptdaemon/blob/4d24cb61575ac6fbee8d5e61ef933e6093ee0a2e/debian/patches/CVE-2020-15703.patch","tags":["web"]},{"url":"https://github.com/advisories/GHSA-wpmr-q825-x4c6","tags":["advisory"]},{"url":"https://github.com/linuxmint/aptdaemon","tags":["package"]},{"url":"https://pypi.org/project/aptdaemon","tags":["package"]},{"url":"https://ubuntu.com/security/CVE-2020-15703","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2020-15703","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2020-15703","title":"aptdaemon allows unprivileged users to test for the presence of local files via the transaction Locale property","description":"There is no input validation on the Locale property in an apt transaction. An unprivileged user can supply a full path to a writable directory, which lets aptd read a file as root. Having a symlink in place results in an error message if the file exists, and no error otherwise. This way an unprivileged user can check for the existence of any files on the system as root.","status":"published","published":"2020-10-31T03:45:19.526Z","modified":"2024-09-16T22:01:51.102Z","cvss":[{"version":"3.1","score":4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","level":"medium","assessor":"cna"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T14:35:50.545879Z"}],"euvd":[{"id":"EUVD-2022-5615","description":"There is no input validation on the Locale property in an apt transaction. An unprivileged user can supply a full path to a writable directory, which lets aptd read a file as root. Having a symlink in place results in an error message if the file exists, and no error otherwise. This way an unprivileged user can check for the existence of any files on the system as root.","status":"published","published":"2020-10-31T03:45:19Z","modified":"2024-09-16T22:01:51Z","cvss":[{"version":"3.1","score":4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"updated_at":"2026-11-03T00:55:06.714252Z"}],"ghsa":[{"id":"GHSA-wpmr-q825-x4c6","title":"aptdaemon Information Disclosure via Improper Input Validation in Transaction class","description":"There is no input validation on the Locale property in an apt transaction. An unprivileged user can supply a full path to a writable directory, which lets aptd read a file as root. Having a symlink in place results in an error message if the file exists, and no error otherwise. This way an unprivileged user can check for the existence of any files on the system as root.","status":"published","published":"2022-05-24T17:32:47Z","modified":"2023-08-16T05:02:25Z","cvss":[{"version":"3.1","score":4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"cwes":["CWE-200"],"updated_at":"2026-11-02T14:36:59.456342Z"}],"nvd":[{"id":"CVE-2020-15703","description":"There is no input validation on the Locale property in an apt transaction. An unprivileged user can supply a full path to a writable directory, which lets aptd read a file as root. Having a symlink in place results in an error message if the file exists, and no error otherwise. This way an unprivileged user can check for the existence of any files on the system as root.","status":"published","published":"2020-10-31T04:15:10.897Z","modified":"2026-06-17T02:57:05.01Z","cvss":[{"version":"3.1","score":4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","level":"medium","assessor":"secondary"},{"version":"3.1","score":3.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"low","assessor":"primary"},{"version":"2.0","score":2.1,"vector":"AV:L/AC:L/Au:N/C:P/I:N/A:N","level":"low","assessor":"primary"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T14:06:21.80969Z"}],"osv":[{"id":"GHSA-wpmr-q825-x4c6","title":"aptdaemon Information Disclosure via Improper Input Validation in Transaction class","description":"There is no input validation on the Locale property in an apt transaction. An unprivileged user can supply a full path to a writable directory, which lets aptd read a file as root. Having a symlink in place results in an error message if the file exists, and no error otherwise. This way an unprivileged user can check for the existence of any files on the system as root.","status":"published","published":"2022-05-24T17:32:47Z","modified":"2026-07-07T11:56:14.578428766Z","cvss":[{"version":"3.1","score":4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"cwes":["CWE-200"],"updated_at":"2026-11-02T15:46:58.767335Z"},{"id":"PYSEC-2026-783","title":"aptdaemon Information Disclosure via Improper Input Validation in Transaction class","description":"There is no input validation on the Locale property in an apt transaction. An unprivileged user can supply a full path to a writable directory, which lets aptd read a file as root. Having a symlink in place results in an error message if the file exists, and no error otherwise. This way an unprivileged user can check for the existence of any files on the system as root.","status":"published","published":"2026-07-06T08:03:28.812075Z","modified":"2026-07-07T11:45:42.953970163Z","cvss":[{"version":"3.1","score":4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"updated_at":"2026-11-02T15:52:58.117212Z"},{"id":"UBUNTU-CVE-2020-15703","description":"There is no input validation on the Locale property in an apt transaction. An unprivileged user can supply a full path to a writable directory, which lets aptd read a file as root. Having a symlink in place results in an error message if the file exists, and no error otherwise. This way an unprivileged user can check for the existence of any files on the system as root.","status":"published","published":"2020-09-24T00:00:00Z","modified":"2026-02-04T04:39:07.067217Z","cvss":[{"version":"3.1","score":4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","level":"medium"},{"version":"3.1","score":3.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"low"}],"updated_at":"2026-11-02T15:54:23.344108Z"},{"id":"USN-4537-1","title":"aptdaemon vulnerability","description":"Vaisha Bernard discovered that Aptdaemon incorrectly handled the Locale\nproperty. A local attacker could use this issue to test for the presence of\nlocal files.\n","status":"published","published":"2020-09-24T12:52:50Z","modified":"2026-02-10T04:41:56Z","updated_at":"2026-11-02T16:58:14.547547Z"}]}}
