TW
Tripwire
Find contracts. Test them. Review real vulns.

Analysis Run

019b3836-3e6a-7049-9114-ea8552fce1d3

complete
Chain ID
1
Address
Block Number
Created
Fri, Dec 19, 2025 8:03 PM
Review Summary

What survived the funnel

Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?

Confirmed
0
Validated
0
Source
Bytecode only
Review Backing
Not yet
Best current signal
Untrusted CALL target/value reachable
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
4887 artifact.fetch complete 1 / 3 4 months ago
4888 tool.cast_disasm complete 1 / 3 4 months ago
47868 analysis.bundle complete 1 / 3 2 weeks ago
47869 capability.graph complete 1 / 3 2 weeks ago
47870 detector.run complete 1 / 3 2 weeks ago
47871 validation.fork complete 1 / 3 2 weeks ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no
Implementation:
Verified Source: no

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate

No codex job recorded yet.

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
1
CREATE2
0
CALL-family (heavy)
2
EXT*/BALANCE
1
Total opcodes
291
Flags
selfdestruct_present
View cast disassembly output
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLDATASIZE
00000006: ISZERO
00000007: PUSH2 0x0053
0000000a: JUMPI
0000000b: PUSH1 0x00
0000000d: CALLDATALOAD
0000000e: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
0000002c: SWAP1
0000002d: DIV
0000002e: DUP1
0000002f: PUSH4 0x29b5b30c
00000034: EQ
00000035: PUSH2 0x00b6
00000038: JUMPI
00000039: DUP1
0000003a: PUSH4 0x41c0e1b5
0000003f: EQ
00000040: PUSH2 0x00d5
00000043: JUMPI
00000044: DUP1
00000045: PUSH4 0xe5225381
0000004a: EQ
0000004b: PUSH2 0x00e2
0000004e: JUMPI
0000004f: PUSH2 0x0053
00000052: JUMP
00000053: JUMPDEST
00000054: PUSH2 0x00b4
00000057: JUMPDEST
00000058: PUSH1 0x00
0000005a: CALLVALUE
0000005b: GT
0000005c: ISZERO
0000005d: PUSH2 0x00b1
00000060: JUMPI
00000061: PUSH1 0x58
00000063: CALLER
00000064: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000079: AND
0000007a: PUSH32 0x90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15
0000009b: CALLVALUE
0000009c: PUSH1 0x40
0000009e: MLOAD
0000009f: DUP1
000000a0: DUP3
000000a1: DUP2
000000a2: MSTORE
000000a3: PUSH1 0x20
000000a5: ADD
000000a6: SWAP2
000000a7: POP
000000a8: POP
000000a9: PUSH1 0x40
000000ab: MLOAD
000000ac: DUP1
000000ad: SWAP2
000000ae: SUB
000000af: SWAP1
000000b0: LOG3
000000b1: JUMPDEST
000000b2: JUMPDEST
000000b3: JUMP
000000b4: JUMPDEST
000000b5: STOP
000000b6: JUMPDEST
000000b7: PUSH2 0x00d3
000000ba: PUSH1 0x04
000000bc: DUP1
000000bd: CALLDATALOAD
000000be: SWAP1
000000bf: PUSH1 0x20
000000c1: ADD
000000c2: DUP1
000000c3: CALLDATALOAD
000000c4: SWAP1
000000c5: PUSH1 0x20
000000c7: ADD
000000c8: DUP1
000000c9: CALLDATALOAD
000000ca: SWAP1
000000cb: PUSH1 0x20
000000cd: ADD
000000ce: POP
000000cf: PUSH2 0x0249
000000d2: JUMP
000000d3: JUMPDEST
000000d4: STOP
000000d5: JUMPDEST
000000d6: PUSH2 0x00e0
000000d9: PUSH1 0x04
000000db: POP
000000dc: PUSH2 0x00ef
000000df: JUMP
000000e0: JUMPDEST
000000e1: STOP
000000e2: JUMPDEST
000000e3: PUSH2 0x00ed
000000e6: PUSH1 0x04
000000e8: POP
000000e9: PUSH2 0x0183
000000ec: JUMP
000000ed: JUMPDEST
000000ee: STOP
000000ef: JUMPDEST
000000f0: PUSH1 0x00
000000f2: PUSH1 0x00
000000f4: SWAP1
000000f5: SLOAD
000000f6: SWAP1
000000f7: PUSH2 0x0100
000000fa: EXP
000000fb: SWAP1
000000fc: DIV
000000fd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000112: AND
00000113: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000128: AND
00000129: CALLER
0000012a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000013f: AND
00000140: EQ
00000141: ISZERO
00000142: PUSH2 0x0180
00000145: JUMPI
00000146: PUSH1 0x00
00000148: PUSH1 0x00
0000014a: SWAP1
0000014b: SLOAD
0000014c: SWAP1
0000014d: PUSH2 0x0100
00000150: EXP
00000151: SWAP1
00000152: DIV
00000153: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000168: AND
00000169: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000017e: AND
0000017f: SELFDESTRUCT
00000180: JUMPDEST
00000181: JUMPDEST
00000182: JUMP
00000183: JUMPDEST
00000184: PUSH1 0x00
00000186: PUSH1 0x00
00000188: SWAP1
00000189: SLOAD
0000018a: SWAP1
0000018b: PUSH2 0x0100
0000018e: EXP
0000018f: SWAP1
00000190: DIV
00000191: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001a6: AND
000001a7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001bc: AND
000001bd: CALLER
000001be: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001d3: AND
000001d4: EQ
000001d5: ISZERO
000001d6: PUSH2 0x0246
000001d9: JUMPI
000001da: PUSH1 0x00
000001dc: PUSH1 0x00
000001de: SWAP1
000001df: SLOAD
000001e0: SWAP1
000001e1: PUSH2 0x0100
000001e4: EXP
000001e5: SWAP1
000001e6: DIV
000001e7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001fc: AND
000001fd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000212: AND
00000213: PUSH1 0x00
00000215: ADDRESS
00000216: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000022b: AND
0000022c: BALANCE
0000022d: PUSH1 0x40
0000022f: MLOAD
00000230: DUP1
00000231: SWAP1
00000232: POP
00000233: PUSH1 0x00
00000235: PUSH1 0x40
00000237: MLOAD
00000238: DUP1
00000239: DUP4
0000023a: SUB
0000023b: DUP2
0000023c: DUP6
0000023d: DUP9
0000023e: DUP9
0000023f: CALL
00000240: SWAP4
00000241: POP
00000242: POP
00000243: POP
00000244: POP
00000245: POP
00000246: JUMPDEST
00000247: JUMPDEST
00000248: JUMP
00000249: JUMPDEST
0000024a: PUSH1 0x00
0000024c: PUSH1 0x00
0000024e: PUSH1 0x00
00000250: SWAP1
00000251: SLOAD
00000252: SWAP1
00000253: PUSH2 0x0100
00000256: EXP
00000257: SWAP1
00000258: DIV
00000259: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000026e: AND
0000026f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000284: AND
00000285: CALLER
00000286: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000029b: AND
0000029c: EQ
0000029d: ISZERO
0000029e: PUSH2 0x032c
000002a1: JUMPI
000002a2: DUP4
000002a3: SWAP1
000002a4: POP
000002a5: DUP1
000002a6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002bb: AND
000002bc: PUSH4 0xa9059cbb
000002c1: DUP5
000002c2: DUP5
000002c3: PUSH1 0x40
000002c5: MLOAD
000002c6: DUP4
000002c7: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
000002e5: MUL
000002e6: DUP2
000002e7: MSTORE
000002e8: PUSH1 0x04
000002ea: ADD
000002eb: DUP1
000002ec: DUP4
000002ed: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000302: AND
00000303: DUP2
00000304: MSTORE
00000305: PUSH1 0x20
00000307: ADD
00000308: DUP3
00000309: DUP2
0000030a: MSTORE
0000030b: PUSH1 0x20
0000030d: ADD
0000030e: SWAP3
0000030f: POP
00000310: POP
00000311: POP
00000312: PUSH1 0x00
00000314: PUSH1 0x40
00000316: MLOAD
00000317: DUP1
00000318: DUP4
00000319: SUB
0000031a: DUP2
0000031b: PUSH1 0x00
0000031d: DUP8
0000031e: PUSH2 0x61da
00000321: GAS
00000322: SUB
00000323: CALL
00000324: ISZERO
00000325: PUSH2 0x0002
00000328: JUMPI
00000329: POP
0000032a: POP
0000032b: POP
0000032c: JUMPDEST
0000032d: JUMPDEST
0000032e: POP
0000032f: POP
00000330: POP
00000331: POP
00000332: JUMP
View stderr
Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment.

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0x062839d1643082005eeb1adc16ded12d13a99e2dcd79ee63fe134508ec42f8ed
call_targets: 0x12419dce274b85da588e0f32ddc1e6ea3a39be97
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x062839d1643082005eeb1adc16ded12d13a99e2dcd79ee63fe134508ec42f8ed",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x12419dce274b85da588e0f32ddc1e6ea3a39be97"
    ],
    "matched_probe": null,
    "target_varies": false,
    "classification": "constant_target"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x29b5b30c",
            "selector": "0x29b5b30c",
            "calldata_variants": [
                "0x29b5b30c",
                "0x29b5b30c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x41c0e1b5",
            "selector": "0x41c0e1b5",
            "calldata_variants": [
                "0x41c0e1b5",
                "0x41c0e1b50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe5225381",
            "selector": "0xe5225381",
            "calldata_variants": [
                "0xe5225381",
                "0xe52253810000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 575,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 803,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 2,
    "guards_detected": [
        {
            "pc": 297,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 445,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 645,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "untrusted_call_count": 2
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x062839d1643082005eeb1adc16ded12d13a99e2dcd79ee63fe134508ec42f8ed
call_targets: 0x12419dce274b85da588e0f32ddc1e6ea3a39be97
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x062839d1643082005eeb1adc16ded12d13a99e2dcd79ee63fe134508ec42f8ed",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x12419dce274b85da588e0f32ddc1e6ea3a39be97"
    ],
    "matched_probe": null,
    "target_varies": false,
    "classification": "constant_target"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x29b5b30c",
            "selector": "0x29b5b30c",
            "calldata_variants": [
                "0x29b5b30c",
                "0x29b5b30c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x41c0e1b5",
            "selector": "0x41c0e1b5",
            "calldata_variants": [
                "0x41c0e1b5",
                "0x41c0e1b50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe5225381",
            "selector": "0xe5225381",
            "calldata_variants": [
                "0xe5225381",
                "0xe52253810000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 575,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 803,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 2,
    "guards_detected": [
        {
            "pc": 297,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 445,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 645,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ]
}
medium other detector SELFDESTRUCT reachable 45 no no
view
trace_id: 0x7acfeab0856f2b8cad23694a9144bf4c2057495561f8750a9216295e7df647f6
validation_json
{
    "sink": "SELFDESTRUCT",
    "errors": 0,
    "status": "unknown",
    "attempts": 6,
    "trace_id": "0x7acfeab0856f2b8cad23694a9144bf4c2057495561f8750a9216295e7df647f6",
    "confirmed": false,
    "trace_mode": "structLogs",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x29b5b30c",
            "selector": "0x29b5b30c",
            "calldata_variants": [
                "0x29b5b30c",
                "0x29b5b30c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x41c0e1b5",
            "selector": "0x41c0e1b5",
            "calldata_variants": [
                "0x41c0e1b5",
                "0x41c0e1b50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe5225381",
            "selector": "0xe5225381",
            "calldata_variants": [
                "0xe5225381",
                "0xe52253810000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 297,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 445,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 645,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "selfdestruct_count": 1
}