{"url":"http://public2.vulnerablecode.io/api/vulnerabilities/49319?format=json","vulnerability_id":"VCID-1wr2-9bym-kke5","summary":"Keras Directory Traversal Vulnerability\nKeras's `keras.utils.get_file()` function is vulnerable to directory traversal attacks despite implementing `filter_safe_paths()`. The vulnerability exists because `extract_archive()` uses Python's `tarfile.extractall()` method without the security-critical `filter=\"data\"` parameter. A PATH_MAX symlink resolution bug occurs before path filtering, allowing malicious tar archives to bypass security checks and write files outside the intended extraction directory.","aliases":[{"alias":"CVE-2025-12060"},{"alias":"GHSA-hjqc-jx6g-rwp9"}],"fixed_packages":[{"url":"http://public2.vulnerablecode.io/api/packages/47087?format=json","purl":"pkg:pypi/keras@3.12.0","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-1xj9-1kng-8ua4"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:pypi/keras@3.12.0"}],"affected_packages":[],"references":[{"reference_url":"https://github.com/keras-team/keras","reference_id":"","reference_type":"","scores":[],"url":"https://github.com/keras-team/keras"},{"reference_url":"https://github.com/keras-team/keras/commit/47fcb397ee4caffd5a75efd1fa3067559594e951","reference_id":"","reference_type":"","scores":[],"url":"https://github.com/keras-team/keras/commit/47fcb397ee4caffd5a75efd1fa3067559594e951"},{"reference_url":"https://github.com/keras-team/keras/pull/21760","reference_id":"","reference_type":"","scores":[],"url":"https://github.com/keras-team/keras/pull/21760"},{"reference_url":"https://huntr.com/bounties/f94f5beb-54d8-4e6a-8bac-86d9aee103f4","reference_id":"","reference_type":"","scores":[],"url":"https://huntr.com/bounties/f94f5beb-54d8-4e6a-8bac-86d9aee103f4"},{"reference_url":"https://nvd.nist.gov/vuln/detail/CVE-2025-12060","reference_id":"CVE-2025-12060","reference_type":"","scores":[],"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-12060"},{"reference_url":"https://nvd.nist.gov/vuln/detail/CVE-2025-12638","reference_id":"CVE-2025-12638","reference_type":"","scores":[],"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-12638"},{"reference_url":"https://github.com/advisories/GHSA-hjqc-jx6g-rwp9","reference_id":"GHSA-hjqc-jx6g-rwp9","reference_type":"","scores":[],"url":"https://github.com/advisories/GHSA-hjqc-jx6g-rwp9"},{"reference_url":"https://github.com/keras-team/keras/security/advisories/GHSA-hjqc-jx6g-rwp9","reference_id":"GHSA-hjqc-jx6g-rwp9","reference_type":"","scores":[],"url":"https://github.com/keras-team/keras/security/advisories/GHSA-hjqc-jx6g-rwp9"}],"weaknesses":[{"cwe_id":22,"name":"Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')","description":"The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory."},{"cwe_id":937,"name":"OWASP Top Ten 2013 Category A9 - Using Components with Known Vulnerabilities","description":"Weaknesses in this category are related to the A9 category in the OWASP Top Ten 2013."},{"cwe_id":1035,"name":"OWASP Top Ten 2017 Category A9 - Using Components with Known Vulnerabilities","description":"Weaknesses in this category are related to the A9 category in the OWASP Top Ten 2017."}],"exploits":[],"severity_range_score":null,"exploitability":null,"weighted_severity":null,"risk_score":null,"resource_url":"http://public2.vulnerablecode.io/vulnerabilities/VCID-1wr2-9bym-kke5"}