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

Analysis Run

019b3836-2ef8-7095-b724-5be73bef1154

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
2361 artifact.fetch complete 1 / 3 4 months ago
2362 tool.cast_disasm complete 1 / 3 4 months ago
97090 analysis.bundle complete 1 / 3 2 weeks ago
97091 capability.graph complete 1 / 3 2 weeks ago
97092 detector.run complete 1 / 3 2 weeks ago
97093 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)
1
EXT*/BALANCE
1
Total opcodes
459
Flags
selfdestruct_present
View cast disassembly output
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLDATASIZE
00000006: ISZERO
00000007: PUSH2 0x0069
0000000a: JUMPI
0000000b: PUSH1 0x00
0000000d: CALLDATALOAD
0000000e: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
0000002c: SWAP1
0000002d: DIV
0000002e: DUP1
0000002f: PUSH4 0x232a3060
00000034: EQ
00000035: PUSH2 0x00d8
00000038: JUMPI
00000039: DUP1
0000003a: PUSH4 0x69f384c4
0000003f: EQ
00000040: PUSH2 0x00f0
00000043: JUMPI
00000044: DUP1
00000045: PUSH4 0x9d735286
0000004a: EQ
0000004b: PUSH2 0x0132
0000004e: JUMPI
0000004f: DUP1
00000050: PUSH4 0xa6f9dae1
00000055: EQ
00000056: PUSH2 0x0141
00000059: JUMPI
0000005a: DUP1
0000005b: PUSH4 0xfa89401a
00000060: EQ
00000061: PUSH2 0x0159
00000064: JUMPI
00000065: PUSH2 0x0069
00000068: JUMP
00000069: JUMPDEST
0000006a: PUSH2 0x00d6
0000006d: JUMPDEST
0000006e: NUMBER
0000006f: PUSH32 0x5d6ac9b7defd8fbb29ef2ab0f08c3744192b3777466dd98d1fd7daed5064b6db
00000090: CALLER
00000091: CALLVALUE
00000092: TIMESTAMP
00000093: PUSH1 0x40
00000095: MLOAD
00000096: DUP1
00000097: DUP5
00000098: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000000ad: AND
000000ae: DUP2
000000af: MSTORE
000000b0: PUSH1 0x20
000000b2: ADD
000000b3: DUP4
000000b4: DUP2
000000b5: MSTORE
000000b6: PUSH1 0x20
000000b8: ADD
000000b9: DUP3
000000ba: DUP2
000000bb: MSTORE
000000bc: PUSH1 0x20
000000be: ADD
000000bf: SWAP4
000000c0: POP
000000c1: POP
000000c2: POP
000000c3: POP
000000c4: PUSH1 0x40
000000c6: MLOAD
000000c7: DUP1
000000c8: SWAP2
000000c9: SUB
000000ca: SWAP1
000000cb: LOG2
000000cc: PUSH2 0x00d3
000000cf: PUSH2 0x033b
000000d2: JUMP
000000d3: JUMPDEST
000000d4: JUMPDEST
000000d5: JUMP
000000d6: JUMPDEST
000000d7: STOP
000000d8: JUMPDEST
000000d9: PUSH2 0x00ee
000000dc: PUSH1 0x04
000000de: DUP1
000000df: DUP1
000000e0: CALLDATALOAD
000000e1: SWAP1
000000e2: PUSH1 0x20
000000e4: ADD
000000e5: SWAP1
000000e6: SWAP2
000000e7: SWAP1
000000e8: POP
000000e9: POP
000000ea: PUSH2 0x0171
000000ed: JUMP
000000ee: JUMPDEST
000000ef: STOP
000000f0: JUMPDEST
000000f1: PUSH2 0x0106
000000f4: PUSH1 0x04
000000f6: DUP1
000000f7: DUP1
000000f8: CALLDATALOAD
000000f9: SWAP1
000000fa: PUSH1 0x20
000000fc: ADD
000000fd: SWAP1
000000fe: SWAP2
000000ff: SWAP1
00000100: POP
00000101: POP
00000102: PUSH2 0x0200
00000105: JUMP
00000106: JUMPDEST
00000107: PUSH1 0x40
00000109: MLOAD
0000010a: DUP1
0000010b: DUP3
0000010c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000121: AND
00000122: DUP2
00000123: MSTORE
00000124: PUSH1 0x20
00000126: ADD
00000127: SWAP2
00000128: POP
00000129: POP
0000012a: PUSH1 0x40
0000012c: MLOAD
0000012d: DUP1
0000012e: SWAP2
0000012f: SUB
00000130: SWAP1
00000131: RETURN
00000132: JUMPDEST
00000133: PUSH2 0x013f
00000136: PUSH1 0x04
00000138: DUP1
00000139: POP
0000013a: POP
0000013b: PUSH2 0x033b
0000013e: JUMP
0000013f: JUMPDEST
00000140: STOP
00000141: JUMPDEST
00000142: PUSH2 0x0157
00000145: PUSH1 0x04
00000147: DUP1
00000148: DUP1
00000149: CALLDATALOAD
0000014a: SWAP1
0000014b: PUSH1 0x20
0000014d: ADD
0000014e: SWAP1
0000014f: SWAP2
00000150: SWAP1
00000151: POP
00000152: POP
00000153: PUSH2 0x02ac
00000156: JUMP
00000157: JUMPDEST
00000158: STOP
00000159: JUMPDEST
0000015a: PUSH2 0x016f
0000015d: PUSH1 0x04
0000015f: DUP1
00000160: DUP1
00000161: CALLDATALOAD
00000162: SWAP1
00000163: PUSH1 0x20
00000165: ADD
00000166: SWAP1
00000167: SWAP2
00000168: SWAP1
00000169: POP
0000016a: POP
0000016b: PUSH2 0x03aa
0000016e: JUMP
0000016f: JUMPDEST
00000170: STOP
00000171: JUMPDEST
00000172: PUSH1 0x00
00000174: PUSH1 0x00
00000176: SWAP1
00000177: SLOAD
00000178: SWAP1
00000179: PUSH2 0x0100
0000017c: EXP
0000017d: SWAP1
0000017e: DIV
0000017f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000194: AND
00000195: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001aa: AND
000001ab: CALLER
000001ac: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001c1: AND
000001c2: EQ
000001c3: ISZERO
000001c4: PUSH2 0x01f7
000001c7: JUMPI
000001c8: DUP1
000001c9: PUSH1 0x01
000001cb: PUSH1 0x00
000001cd: PUSH2 0x0100
000001d0: EXP
000001d1: DUP2
000001d2: SLOAD
000001d3: DUP2
000001d4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001e9: MUL
000001ea: NOT
000001eb: AND
000001ec: SWAP1
000001ed: DUP4
000001ee: MUL
000001ef: OR
000001f0: SWAP1
000001f1: SSTORE
000001f2: POP
000001f3: PUSH2 0x01fc
000001f6: JUMP
000001f7: JUMPDEST
000001f8: PUSH2 0x0002
000001fb: JUMP
000001fc: JUMPDEST
000001fd: JUMPDEST
000001fe: POP
000001ff: JUMP
00000200: JUMPDEST
00000201: PUSH1 0x00
00000203: PUSH1 0x00
00000205: PUSH1 0x00
00000207: SWAP1
00000208: SLOAD
00000209: SWAP1
0000020a: PUSH2 0x0100
0000020d: EXP
0000020e: SWAP1
0000020f: DIV
00000210: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000225: AND
00000226: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000023b: AND
0000023c: CALLER
0000023d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000252: AND
00000253: EQ
00000254: ISZERO
00000255: PUSH2 0x02a1
00000258: JUMPI
00000259: PUSH1 0x02
0000025b: PUSH1 0x00
0000025d: POP
0000025e: PUSH1 0x00
00000260: PUSH1 0x00
00000262: DUP2
00000263: MSTORE
00000264: PUSH1 0x20
00000266: ADD
00000267: SWAP1
00000268: DUP2
00000269: MSTORE
0000026a: PUSH1 0x20
0000026c: ADD
0000026d: PUSH1 0x00
0000026f: KECCAK256
00000270: PUSH1 0x00
00000272: POP
00000273: PUSH1 0x00
00000275: ADD
00000276: PUSH1 0x00
00000278: SWAP1
00000279: SLOAD
0000027a: SWAP1
0000027b: PUSH2 0x0100
0000027e: EXP
0000027f: SWAP1
00000280: DIV
00000281: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000296: AND
00000297: SWAP1
00000298: POP
00000299: PUSH2 0x02a7
0000029c: JUMP
0000029d: PUSH2 0x02a6
000002a0: JUMP
000002a1: JUMPDEST
000002a2: PUSH2 0x0002
000002a5: JUMP
000002a6: JUMPDEST
000002a7: JUMPDEST
000002a8: SWAP2
000002a9: SWAP1
000002aa: POP
000002ab: JUMP
000002ac: JUMPDEST
000002ad: PUSH1 0x00
000002af: PUSH1 0x00
000002b1: SWAP1
000002b2: SLOAD
000002b3: SWAP1
000002b4: PUSH2 0x0100
000002b7: EXP
000002b8: SWAP1
000002b9: DIV
000002ba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002cf: AND
000002d0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002e5: AND
000002e6: CALLER
000002e7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002fc: AND
000002fd: EQ
000002fe: ISZERO
000002ff: PUSH2 0x0332
00000302: JUMPI
00000303: DUP1
00000304: PUSH1 0x00
00000306: PUSH1 0x00
00000308: PUSH2 0x0100
0000030b: EXP
0000030c: DUP2
0000030d: SLOAD
0000030e: DUP2
0000030f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000324: MUL
00000325: NOT
00000326: AND
00000327: SWAP1
00000328: DUP4
00000329: MUL
0000032a: OR
0000032b: SWAP1
0000032c: SSTORE
0000032d: POP
0000032e: PUSH2 0x0337
00000331: JUMP
00000332: JUMPDEST
00000333: PUSH2 0x0002
00000336: JUMP
00000337: JUMPDEST
00000338: JUMPDEST
00000339: POP
0000033a: JUMP
0000033b: JUMPDEST
0000033c: PUSH1 0x01
0000033e: PUSH1 0x00
00000340: SWAP1
00000341: SLOAD
00000342: SWAP1
00000343: PUSH2 0x0100
00000346: EXP
00000347: SWAP1
00000348: DIV
00000349: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000035e: AND
0000035f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000374: AND
00000375: PUSH1 0x00
00000377: ADDRESS
00000378: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000038d: AND
0000038e: BALANCE
0000038f: PUSH1 0x40
00000391: MLOAD
00000392: DUP1
00000393: SWAP1
00000394: POP
00000395: PUSH1 0x00
00000397: PUSH1 0x40
00000399: MLOAD
0000039a: DUP1
0000039b: DUP4
0000039c: SUB
0000039d: DUP2
0000039e: DUP6
0000039f: DUP9
000003a0: DUP9
000003a1: CALL
000003a2: SWAP4
000003a3: POP
000003a4: POP
000003a5: POP
000003a6: POP
000003a7: POP
000003a8: JUMPDEST
000003a9: JUMP
000003aa: JUMPDEST
000003ab: PUSH1 0x00
000003ad: PUSH1 0x00
000003af: SWAP1
000003b0: SLOAD
000003b1: SWAP1
000003b2: PUSH2 0x0100
000003b5: EXP
000003b6: SWAP1
000003b7: DIV
000003b8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000003cd: AND
000003ce: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000003e3: AND
000003e4: CALLER
000003e5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000003fa: AND
000003fb: EQ
000003fc: ISZERO
000003fd: PUSH2 0x0472
00000400: JUMPI
00000401: PUSH32 0xb854f581145dc1eb640e9c943dd96947618be343eb869017cae7a0d959b41689
00000422: ADDRESS
00000423: TIMESTAMP
00000424: PUSH1 0x40
00000426: MLOAD
00000427: DUP1
00000428: DUP4
00000429: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000043e: AND
0000043f: DUP2
00000440: MSTORE
00000441: PUSH1 0x20
00000443: ADD
00000444: DUP3
00000445: DUP2
00000446: MSTORE
00000447: PUSH1 0x20
00000449: ADD
0000044a: SWAP3
0000044b: POP
0000044c: POP
0000044d: POP
0000044e: PUSH1 0x40
00000450: MLOAD
00000451: DUP1
00000452: SWAP2
00000453: SUB
00000454: SWAP1
00000455: LOG1
00000456: DUP1
00000457: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000046c: AND
0000046d: SELFDESTRUCT
0000046e: PUSH2 0x0477
00000471: JUMP
00000472: JUMPDEST
00000473: PUSH2 0x0002
00000476: JUMP
00000477: JUMPDEST
00000478: JUMPDEST
00000479: POP
0000047a: 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: 0x539b842f1ee46ed985f11354ed615b3fdfb1ba64f4fb0ec25a213de6c23cc37a
call_targets: 0x22ea823ddb595da01895308815470080218538d4
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x539b842f1ee46ed985f11354ed615b3fdfb1ba64f4fb0ec25a213de6c23cc37a",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x22ea823ddb595da01895308815470080218538d4"
    ],
    "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": "0x232a3060",
            "selector": "0x232a3060",
            "calldata_variants": [
                "0x232a3060",
                "0x232a30600000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x69f384c4",
            "selector": "0x69f384c4",
            "calldata_variants": [
                "0x69f384c4",
                "0x69f384c40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9d735286",
            "selector": "0x9d735286",
            "calldata_variants": [
                "0x9d735286",
                "0x9d7352860000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa6f9dae1",
            "selector": "0xa6f9dae1",
            "calldata_variants": [
                "0xa6f9dae1",
                "0xa6f9dae10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfa89401a",
            "selector": "0xfa89401a",
            "calldata_variants": [
                "0xfa89401a",
                "0xfa89401a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 929,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 1,
    "guards_detected": [
        {
            "pc": 427,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 572,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 742,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 996,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "untrusted_call_count": 1
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x539b842f1ee46ed985f11354ed615b3fdfb1ba64f4fb0ec25a213de6c23cc37a
call_targets: 0x22ea823ddb595da01895308815470080218538d4
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x539b842f1ee46ed985f11354ed615b3fdfb1ba64f4fb0ec25a213de6c23cc37a",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x22ea823ddb595da01895308815470080218538d4"
    ],
    "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": "0x232a3060",
            "selector": "0x232a3060",
            "calldata_variants": [
                "0x232a3060",
                "0x232a30600000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x69f384c4",
            "selector": "0x69f384c4",
            "calldata_variants": [
                "0x69f384c4",
                "0x69f384c40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9d735286",
            "selector": "0x9d735286",
            "calldata_variants": [
                "0x9d735286",
                "0x9d7352860000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa6f9dae1",
            "selector": "0xa6f9dae1",
            "calldata_variants": [
                "0xa6f9dae1",
                "0xa6f9dae10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfa89401a",
            "selector": "0xfa89401a",
            "calldata_variants": [
                "0xfa89401a",
                "0xfa89401a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 929,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 1,
    "guards_detected": [
        {
            "pc": 427,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 572,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 742,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 996,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ]
}
medium other detector SELFDESTRUCT reachable 45 no no
view
trace_id: 0xe3d409bc8b7e8efee98162ea7078ad8b2fa37f9191479fde508f7b2acf5ff14b
validation_json
{
    "sink": "SELFDESTRUCT",
    "errors": 0,
    "status": "unknown",
    "attempts": 10,
    "trace_id": "0xe3d409bc8b7e8efee98162ea7078ad8b2fa37f9191479fde508f7b2acf5ff14b",
    "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": "0x232a3060",
            "selector": "0x232a3060",
            "calldata_variants": [
                "0x232a3060",
                "0x232a30600000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x69f384c4",
            "selector": "0x69f384c4",
            "calldata_variants": [
                "0x69f384c4",
                "0x69f384c40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9d735286",
            "selector": "0x9d735286",
            "calldata_variants": [
                "0x9d735286",
                "0x9d7352860000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa6f9dae1",
            "selector": "0xa6f9dae1",
            "calldata_variants": [
                "0xa6f9dae1",
                "0xa6f9dae10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfa89401a",
            "selector": "0xfa89401a",
            "calldata_variants": [
                "0xfa89401a",
                "0xfa89401a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 427,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 572,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 742,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 996,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "selfdestruct_count": 1
}