=== Log4j2 MarshalledObject FOIS bypass: real TcpSocketServer production path === ROOT=/workspace/bundle [identity] java.runtime.version=25.0.4+7-1-26.04-Ubuntu [identity] java.bin=/usr/lib/jvm/java-25-openjdk-amd64/bin/java [identity] runtime_digest=98b16715ef49ca21a5b32b7184a718cb9110ddc5269b06be0c3e3167467df639 [setup] verified cached log4j-api-2.26.1.jar [setup] verified cached log4j-core-2.26.1.jar [setup] verified cached log4j-api-2.26.1-sources.jar [setup] verified cached commons-collections-3.2.1.jar [identity] samples_repository=https://github.com/apache/logging-log4j-samples [identity] samples_commit=672a1555c7f5670e7affcc7b9984a90b492eb322 [build] compiling real Apache log4j-server product classes Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: /workspace/bundle/repro/src/poc/SampleReceiverMain.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: /workspace/bundle/repro/src/poc/Sender.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. [identity] target_digest=7310f18dd2601851bcc37b1963906cbd86f417a18b196251c8fe64a6b3b18673 === CONTROL: unwrapped non-allowlisted object is rejected by real FOIS === [PASS] direct control reached TCP/FOIS and was rejected === TIER 1: exact MarshalledObject payload executes non-allowlisted readObject, twice === [PASS] tier1 attempt 1 executed arbitrary inner readObject: PWNED-TIER1:tier1-gadget [PASS] tier1 attempt 2 executed arbitrary inner readObject: PWNED-TIER1:tier1-gadget === TIER 2: one exact Commons Collections payload executes on two receiver instances === [PASS] tier2 attempt 1 receiver-side command marker: PWNED-TIER2 token=RCE-1787737383615632389-15376 shell_pid=39677 parent_pid=39626 uid=1000(vscode) gid=1000(vscode) groups=1000(vscode) [PASS] tier2 attempt 2 receiver-side command marker: PWNED-TIER2 token=RCE-1787737383615632389-15376 shell_pid=39759 parent_pid=39708 uid=1000(vscode) gid=1000(vscode) groups=1000(vscode) === FIXED CONTROL: replay exact same tier2 bytes; patched API rejects them, twice === [PASS] fixed attempt 1 reached TCP/FOIS, rejected exact tier2 bytes, and created no RCE marker [PASS] fixed attempt 2 reached TCP/FOIS, rejected exact tier2 bytes, and created no RCE marker === MITIGATION CONTROL: global filter rejects exact same tier2 bytes === [PASS] JEP 290 control reached TCP path, rejected exact tier2 bytes, and created no RCE marker [manifest] wrote /workspace/bundle/repro/runtime_manifest.json RESULT: VULNERABILITY CONFIRMED — production TCP path, RCE x2, patched rejection x2