{"id":"CVE-2025-9906","aliases":["GHSA-36fq-jgmw-4r9c","PYSEC-2025-76"],"url":"https://o3.security/vulnerability/CVE-2025-9906","summary":"Arbitrary Code execution in Keras Safe Mode","details":"### Arbitrary Code Execution in Keras\n\nKeras versions prior to 3.11.0 allow for arbitrary code execution when loading a crafted `.keras` model archive, even when `safe_mode=True`.\n\nThe issue arises because the archive’s `config.json` is parsed before layer deserialization. This can invoke `keras.config.enable_unsafe_deserialization()`, effectively disabling safe mode from within the loading process itself. An attacker can place this call first in the archive and then include a `Lambda` layer whose function is deserialized from a pickle, leading to the execution of attacker-controlled Python code as soon as a victim loads the model file.\n\nExploitation requires a user to open an untrusted model; no additional privileges are needed. The fix in version 3.11.0 enforces safe-mode semantics *before* reading any user-controlled configuration and prevents the toggling of unsafe deserialization via the config file.\n\n**Affected versions:** < 3.11.0\n**Patched version:** 3.11.0\n\nIt is recommended to upgrade to version 3.11.0 or later and to avoid opening untrusted model files.","published":"2025-09-19T08:15:04.349Z","modified":"2026-10-28T02:30:27.868505194Z","cvss":null,"epss":{"score":0.00199,"percentile":0.097,"asOf":"2026-08-24"},"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"PyPI","name":"keras","fixedVersion":"3.11.0"}],"fix":{"url":"https://github.com/keras-team/keras/pull/21429","label":"keras-team/keras#21429"},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/9xxx/CVE-2025-9906.json"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2025-9906"},{"type":"FIX","url":"https://github.com/keras-team/keras/pull/21429"},{"type":"PACKAGE","url":"https://github.com/keras-team/keras"},{"type":"WEB","url":"https://github.com/keras-team/keras/commit/713172ab56b864e59e2aa79b1a51b0e728bba858"},{"type":"WEB","url":"https://github.com/keras-team/keras/releases/tag/v3.11.0"},{"type":"WEB","url":"https://github.com/pypa/advisory-database/tree/main/vulns/keras/PYSEC-2025-76.yaml"},{"type":"WEB","url":"https://osv.dev/vulnerability/CVE-2025-9906"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-10-28T02:30:27.868505194Z"}}