{
  "entrypoint_kind": "endpoint",
  "entrypoint_detail": "HTTP PUT with Content-Range to Tomcat DefaultServlet followed by HTTP request with Cookie JSESSIONID=.payload to trigger PersistentManager/FileStore session deserialization",
  "service_started": true,
  "healthcheck_passed": true,
  "target_path_reached": true,
  "runtime_stack": [
    "Apache Tomcat 10.1.34 vulnerable control",
    "Apache Tomcat 10.1.35 fixed negative control",
    "DefaultServlet readonly=false",
    "PersistentManager + FileStore",
    "real HTTP PUT/GET requests",
    "webapp classloader deserialization gadget"
  ],
  "proof_artifacts": [
    "bundle/logs/cve2025_24813_requests.log",
    "bundle/logs/tomcat-10.1.34-catalina.out",
    "bundle/logs/tomcat-10.1.35-catalina.out",
    "bundle/repro/vuln_rce_marker.txt"
  ],
  "observations": {
    "vulnerable_put_status": "201",
    "vulnerable_trigger_status": "500",
    "vulnerable_work_session_created": "true",
    "vulnerable_marker_text": "uid=1000(vscode) gid=1000(vscode) groups=1000(vscode)",
    "fixed_put_status": "201",
    "fixed_trigger_status": "200",
    "fixed_work_session_created": "false",
    "fixed_marker_created": "false",
    "crash_observed": false,
    "read_write_primitive_observed": true,
    "exploit_chain_demonstrated": true
  },
  "notes": "confirmed: Tomcat 10.1.34 wrote attacker supplied partial PUT body to FileStore session path and deserialized it on JSESSIONID=.payload, executing the attacker command; Tomcat 10.1.35 negative control did not create the FileStore session and did not execute the command"
}
