{
  "cve_id": "CVE-2026-24425",
  "ghsa_id": "GHSA-2q52-x2ff-qgfr",
  "package": "twig/twig",
  "affected_versions": "3.9.0 - 3.25.x",
  "fixed_version": "3.26.0",
  "vulnerability_type": "CWE-693 Protection Mechanism Failure",
  "severity": "High (CVSS 8.7)",
  "validation_status": "CONFIRMED",
  "vulnerable_behavior": "Sandbox bypass via SourcePolicyInterface — arbitrary PHP callable passed to map/filter/sort/reduce filters is executed despite per-template sandboxing",
  "fixed_behavior": "RuntimeError thrown: 'The callable passed to the map filter must be a Closure in sandbox mode'",
  "reproduction_script": "repro/reproduction_steps.sh",
  "logs": "logs/reproduction.log",
  "runtime_manifest": "repro/runtime_manifest.json",
  "rca_report": "repro/rca_report.md",
  "vulnerable_confirmed": true,
  "fixed_confirmed": true,
  "reproduction_timestamp": "2026-05-22T18:09:43Z",
  "verdict": "The vulnerability CVE-2026-24425 in twig/twig versions 3.9.0 through 3.25.x was successfully reproduced. The vulnerable version (3.25.0) executes shell_exec('id') through the map filter despite per-template sandboxing being active via SourcePolicyInterface. The fixed version (3.26.0) correctly throws a RuntimeError blocking non-Closure callables in sandbox mode. The fix is validated and effective."
}
