p PatchFirst

CVE-2026-12484

CVE-2026-12484 · Unsafe Deserialization in keras.layers.TorchModuleWrapper.from_config

This page contains facts from public vulnerability sources. Check the original advisory before updating.

A vulnerability in keras-team/keras version 3.15.0 allows unsafe deserialization of attacker-controlled PyTorch pickle data through the public `keras.layers.TorchModuleWrapper.from_config` method. This method invokes `torch.load(..., weights_only=False)` without requiring an explicit unsafe opt-in, such as a `safe_mode=False` parameter. When called outside a `SafeModeScope(True)` context, the absence of an ambient safe mode state permits unsafe deserialization by default. This issue can lead to arbitrary code execution if untrusted Keras layer configurations are processed using this method. The vulnerability arises because the method does not enforce safe deserialization practices unless explicitly guarded by Keras safe mode.

CVSS 7.8 · High · EPSS 0.3% · Fix available

Published
Updated

Stack: system · python

Affected products and versions

  • keras-team/keras

    Versions
    • ≥ unspecified, ≤ latest: Affected (custom)

    No fix published

  • keras Debian:11

    Versions
    • 2.3.1+dfsg-3
    • 2.3.1+dfsg2-1
    Affected ranges
    • ECOSYSTEM: (−∞, +∞)

    No fix published

  • keras PyPI

    Versions
    • 0.2.0
    • 0.3.0
    • 0.3.1
    • 0.3.2
    • 0.3.3
    • 1.0.0
    • 1.0.1
    • 1.0.2
    • 1.0.3
    • 1.0.4
    • 1.0.5
    • 1.0.6
    • 1.0.7
    • 1.0.8
    • 1.1.0
    • 1.1.1
    • 1.1.2
    • 1.2.0
    • 1.2.1
    • 1.2.2
    • 2.0.0
    • 2.0.1
    • 2.0.2
    • 2.0.3
    • 2.0.4
    • 2.0.5
    • 2.0.6
    • 2.0.7
    • 2.0.8
    • 2.0.9
    • 2.1.0
    • 2.1.1
    • 2.1.2
    • 2.1.3
    • 2.1.4
    • 2.1.5
    • 2.1.6
    • 2.10.0
    • 2.10.0rc0
    • 2.10.0rc1
    • 2.11.0
    • 2.11.0rc0
    • 2.11.0rc1
    • 2.11.0rc2
    • 2.11.0rc3
    • 2.12.0
    • 2.12.0rc0
    • 2.12.0rc1
    • 2.13.1
    • 2.13.1rc0
    • 2.13.1rc1
    • 2.14.0
    • 2.14.0rc0
    • 2.15.0
    • 2.15.0rc0
    • 2.15.0rc1
    • 2.2.0
    • 2.2.1
    • 2.2.2
    • 2.2.3
    • 2.2.4
    • 2.2.5
    • 2.3.0
    • 2.3.1
    • 2.4.0
    • 2.4.1
    • 2.4.2
    • 2.4.3
    • 2.5.0rc0
    • 2.6.0
    • 2.6.0rc0
    • 2.6.0rc1
    • 2.6.0rc2
    • 2.6.0rc3
    • 2.7.0
    • 2.7.0rc0
    • 2.7.0rc2
    • 2.8.0
    • 2.8.0rc0
    • 2.8.0rc1
    • 2.9.0
    • 2.9.0rc0
    • 2.9.0rc1
    • 2.9.0rc2
    • 3.0.0
    • 3.0.1
    • 3.0.2
    • 3.0.3
    • 3.0.4
    • 3.0.5
    • 3.1.0
    • 3.1.1
    • 3.10.0
    • 3.11.0
    • 3.11.1
    • 3.11.2
    • 3.11.3
    • 3.12.0
    • 3.12.1
    • 3.12.2
    • 3.2.0
    • 3.2.1
    • 3.3.0
    • 3.3.1
    • 3.3.2
    • 3.3.3
    • 3.4.0
    • 3.4.1
    • 3.5.0
    • 3.6.0
    • 3.7.0
    • 3.8.0
    • 3.9.0
    • 3.9.1
    • 3.9.2
    Affected ranges
    • ECOSYSTEM: < 3.12.3

    Update to 3.12.3

  • keras PyPI

    Versions
    • 3.13.0
    • 3.13.1
    • 3.13.2
    • 3.14.0
    • 3.14.1
    Affected ranges
    • ECOSYSTEM: ≥ 3.13.0, < 3.15.0

    Update to 3.15.0

  • keras PyPI

    Versions
    • 0.2.0
    • 0.3.0
    • 0.3.1
    • 0.3.2
    • 0.3.3
    • 1.0.0
    • 1.0.1
    • 1.0.2
    • 1.0.3
    • 1.0.4
    • 1.0.5
    • 1.0.6
    • 1.0.7
    • 1.0.8
    • 1.1.0
    • 1.1.1
    • 1.1.2
    • 1.2.0
    • 1.2.1
    • 1.2.2
    • 2.0.0
    • 2.0.1
    • 2.0.2
    • 2.0.3
    • 2.0.4
    • 2.0.5
    • 2.0.6
    • 2.0.7
    • 2.0.8
    • 2.0.9
    • 2.1.0
    • 2.1.1
    • 2.1.2
    • 2.1.3
    • 2.1.4
    • 2.1.5
    • 2.1.6
    • 2.10.0
    • 2.10.0rc0
    • 2.10.0rc1
    • 2.11.0
    • 2.11.0rc0
    • 2.11.0rc1
    • 2.11.0rc2
    • 2.11.0rc3
    • 2.12.0
    • 2.12.0rc0
    • 2.12.0rc1
    • 2.13.1
    • 2.13.1rc0
    • 2.13.1rc1
    • 2.14.0
    • 2.14.0rc0
    • 2.15.0
    • 2.15.0rc0
    • 2.15.0rc1
    • 2.2.0
    • 2.2.1
    • 2.2.2
    • 2.2.3
    • 2.2.4
    • 2.2.5
    • 2.3.0
    • 2.3.1
    • 2.4.0
    • 2.4.1
    • 2.4.2
    • 2.4.3
    • 2.5.0rc0
    • 2.6.0
    • 2.6.0rc0
    • 2.6.0rc1
    • 2.6.0rc2
    • 2.6.0rc3
    • 2.7.0
    • 2.7.0rc0
    • 2.7.0rc2
    • 2.8.0
    • 2.8.0rc0
    • 2.8.0rc1
    • 2.9.0
    • 2.9.0rc0
    • 2.9.0rc1
    • 2.9.0rc2
    • 3.0.0
    • 3.0.1
    • 3.0.2
    • 3.0.3
    • 3.0.4
    • 3.0.5
    • 3.1.0
    • 3.1.1
    • 3.10.0
    • 3.11.0
    • 3.11.1
    • 3.11.2
    • 3.11.3
    • 3.12.0
    • 3.12.1
    • 3.12.2
    • 3.13.0
    • 3.13.1
    • 3.13.2
    • 3.14.0
    • 3.14.1
    • 3.2.0
    • 3.2.1
    • 3.3.0
    • 3.3.1
    • 3.3.2
    • 3.3.3
    • 3.4.0
    • 3.4.1
    • 3.5.0
    • 3.6.0
    • 3.7.0
    • 3.8.0
    • 3.9.0
    • 3.9.1
    • 3.9.2
    Affected ranges
    • ECOSYSTEM: < 3.12.3 ∪ ≥ 3.13.0, < 3.15.0

    Update to 3.12.3; Update to 3.15.0

  • keras Ubuntu:18.04:LTS

    Versions
    • 1.0.7-2
    • 2.1.1-1
    Affected ranges
    • ECOSYSTEM: (−∞, +∞)

    No fix published

  • keras Ubuntu:20.04:LTS

    Versions
    • 2.2.4-1
    Affected ranges
    • ECOSYSTEM: (−∞, +∞)

    No fix published

Original sources

Check your server →