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

Analysis Run

019b3844-953a-71d0-b094-b5861a1c976b

complete
Chain ID
1
Address
Block Number
Created
Fri, Dec 19, 2025 8:19 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
13327 artifact.fetch complete 1 / 3 3 months ago
13328 tool.cast_disasm complete 1 / 3 3 months ago
112186 analysis.bundle complete 1 / 3 1 week ago
112187 capability.graph complete 1 / 3 1 week ago
112188 detector.run complete 1 / 3 1 week ago
112189 validation.fork complete 1 / 3 1 week 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)
4
EXT*/BALANCE
0
Total opcodes
397
Flags
selfdestruct_present
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x0057
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
0000002e: SWAP1
0000002f: DIV
00000030: PUSH4 0xffffffff
00000035: AND
00000036: DUP1
00000037: PUSH4 0x2e1a7d4d
0000003c: EQ
0000003d: PUSH2 0x005c
00000040: JUMPI
00000041: DUP1
00000042: PUSH4 0x771fa920
00000047: EQ
00000048: PUSH2 0x0089
0000004b: JUMPI
0000004c: DUP1
0000004d: PUSH4 0xd0e30db0
00000052: EQ
00000053: PUSH2 0x0116
00000056: JUMPI
00000057: JUMPDEST
00000058: PUSH1 0x00
0000005a: DUP1
0000005b: REVERT
0000005c: JUMPDEST
0000005d: CALLVALUE
0000005e: DUP1
0000005f: ISZERO
00000060: PUSH2 0x0068
00000063: JUMPI
00000064: PUSH1 0x00
00000066: DUP1
00000067: REVERT
00000068: JUMPDEST
00000069: POP
0000006a: PUSH2 0x0087
0000006d: PUSH1 0x04
0000006f: DUP1
00000070: CALLDATASIZE
00000071: SUB
00000072: DUP2
00000073: ADD
00000074: SWAP1
00000075: DUP1
00000076: DUP1
00000077: CALLDATALOAD
00000078: SWAP1
00000079: PUSH1 0x20
0000007b: ADD
0000007c: SWAP1
0000007d: SWAP3
0000007e: SWAP2
0000007f: SWAP1
00000080: POP
00000081: POP
00000082: POP
00000083: PUSH2 0x0120
00000086: JUMP
00000087: JUMPDEST
00000088: STOP
00000089: JUMPDEST
0000008a: CALLVALUE
0000008b: DUP1
0000008c: ISZERO
0000008d: PUSH2 0x0095
00000090: JUMPI
00000091: PUSH1 0x00
00000093: DUP1
00000094: REVERT
00000095: JUMPDEST
00000096: POP
00000097: PUSH2 0x0114
0000009a: PUSH1 0x04
0000009c: DUP1
0000009d: CALLDATASIZE
0000009e: SUB
0000009f: DUP2
000000a0: ADD
000000a1: SWAP1
000000a2: DUP1
000000a3: DUP1
000000a4: CALLDATALOAD
000000a5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000000ba: AND
000000bb: SWAP1
000000bc: PUSH1 0x20
000000be: ADD
000000bf: SWAP1
000000c0: SWAP3
000000c1: SWAP2
000000c2: SWAP1
000000c3: DUP1
000000c4: CALLDATALOAD
000000c5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000000da: AND
000000db: SWAP1
000000dc: PUSH1 0x20
000000de: ADD
000000df: SWAP1
000000e0: SWAP3
000000e1: SWAP2
000000e2: SWAP1
000000e3: DUP1
000000e4: CALLDATALOAD
000000e5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000000fa: AND
000000fb: SWAP1
000000fc: PUSH1 0x20
000000fe: ADD
000000ff: SWAP1
00000100: SWAP3
00000101: SWAP2
00000102: SWAP1
00000103: DUP1
00000104: CALLDATALOAD
00000105: SWAP1
00000106: PUSH1 0x20
00000108: ADD
00000109: SWAP1
0000010a: SWAP3
0000010b: SWAP2
0000010c: SWAP1
0000010d: POP
0000010e: POP
0000010f: POP
00000110: PUSH2 0x01e6
00000113: JUMP
00000114: JUMPDEST
00000115: STOP
00000116: JUMPDEST
00000117: PUSH2 0x011e
0000011a: PUSH2 0x031e
0000011d: JUMP
0000011e: JUMPDEST
0000011f: STOP
00000120: JUMPDEST
00000121: PUSH1 0x00
00000123: DUP1
00000124: SWAP1
00000125: SLOAD
00000126: SWAP1
00000127: PUSH2 0x0100
0000012a: EXP
0000012b: SWAP1
0000012c: DIV
0000012d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000142: AND
00000143: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000158: AND
00000159: CALLER
0000015a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000016f: AND
00000170: EQ
00000171: ISZERO
00000172: ISZERO
00000173: PUSH2 0x017b
00000176: JUMPI
00000177: PUSH1 0x00
00000179: DUP1
0000017a: REVERT
0000017b: JUMPDEST
0000017c: PUSH1 0x00
0000017e: DUP1
0000017f: SWAP1
00000180: SLOAD
00000181: SWAP1
00000182: PUSH2 0x0100
00000185: EXP
00000186: SWAP1
00000187: DIV
00000188: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000019d: AND
0000019e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001b3: AND
000001b4: PUSH2 0x08fc
000001b7: DUP3
000001b8: SWAP1
000001b9: DUP2
000001ba: ISZERO
000001bb: MUL
000001bc: SWAP1
000001bd: PUSH1 0x40
000001bf: MLOAD
000001c0: PUSH1 0x00
000001c2: PUSH1 0x40
000001c4: MLOAD
000001c5: DUP1
000001c6: DUP4
000001c7: SUB
000001c8: DUP2
000001c9: DUP6
000001ca: DUP9
000001cb: DUP9
000001cc: CALL
000001cd: SWAP4
000001ce: POP
000001cf: POP
000001d0: POP
000001d1: POP
000001d2: ISZERO
000001d3: DUP1
000001d4: ISZERO
000001d5: PUSH2 0x01e2
000001d8: JUMPI
000001d9: RETURNDATASIZE
000001da: PUSH1 0x00
000001dc: DUP1
000001dd: RETURNDATACOPY
000001de: RETURNDATASIZE
000001df: PUSH1 0x00
000001e1: REVERT
000001e2: JUMPDEST
000001e3: POP
000001e4: POP
000001e5: JUMP
000001e6: JUMPDEST
000001e7: PUSH1 0x00
000001e9: DUP1
000001ea: SWAP1
000001eb: SLOAD
000001ec: SWAP1
000001ed: PUSH2 0x0100
000001f0: EXP
000001f1: SWAP1
000001f2: DIV
000001f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000208: AND
00000209: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000021e: AND
0000021f: CALLER
00000220: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000235: AND
00000236: EQ
00000237: ISZERO
00000238: ISZERO
00000239: PUSH2 0x0241
0000023c: JUMPI
0000023d: PUSH1 0x00
0000023f: DUP1
00000240: REVERT
00000241: JUMPDEST
00000242: DUP2
00000243: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000258: AND
00000259: PUSH2 0x08fc
0000025c: DUP3
0000025d: SWAP1
0000025e: DUP2
0000025f: ISZERO
00000260: MUL
00000261: SWAP1
00000262: PUSH1 0x40
00000264: MLOAD
00000265: PUSH1 0x00
00000267: PUSH1 0x40
00000269: MLOAD
0000026a: DUP1
0000026b: DUP4
0000026c: SUB
0000026d: DUP2
0000026e: DUP6
0000026f: DUP9
00000270: DUP9
00000271: CALL
00000272: SWAP4
00000273: POP
00000274: POP
00000275: POP
00000276: POP
00000277: ISZERO
00000278: DUP1
00000279: ISZERO
0000027a: PUSH2 0x0287
0000027d: JUMPI
0000027e: RETURNDATASIZE
0000027f: PUSH1 0x00
00000281: DUP1
00000282: RETURNDATACOPY
00000283: RETURNDATASIZE
00000284: PUSH1 0x00
00000286: REVERT
00000287: JUMPDEST
00000288: POP
00000289: DUP4
0000028a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000029f: AND
000002a0: PUSH2 0x08fc
000002a3: PUSH1 0x01
000002a5: SWAP1
000002a6: DUP2
000002a7: ISZERO
000002a8: MUL
000002a9: SWAP1
000002aa: PUSH1 0x40
000002ac: MLOAD
000002ad: PUSH1 0x00
000002af: PUSH1 0x40
000002b1: MLOAD
000002b2: DUP1
000002b3: DUP4
000002b4: SUB
000002b5: DUP2
000002b6: DUP6
000002b7: DUP9
000002b8: DUP9
000002b9: CALL
000002ba: SWAP4
000002bb: POP
000002bc: POP
000002bd: POP
000002be: POP
000002bf: ISZERO
000002c0: DUP1
000002c1: ISZERO
000002c2: PUSH2 0x02cf
000002c5: JUMPI
000002c6: RETURNDATASIZE
000002c7: PUSH1 0x00
000002c9: DUP1
000002ca: RETURNDATACOPY
000002cb: RETURNDATASIZE
000002cc: PUSH1 0x00
000002ce: REVERT
000002cf: JUMPDEST
000002d0: POP
000002d1: DUP3
000002d2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002e7: AND
000002e8: PUSH2 0x08fc
000002eb: PUSH1 0x01
000002ed: SWAP1
000002ee: DUP2
000002ef: ISZERO
000002f0: MUL
000002f1: SWAP1
000002f2: PUSH1 0x40
000002f4: MLOAD
000002f5: PUSH1 0x00
000002f7: PUSH1 0x40
000002f9: MLOAD
000002fa: DUP1
000002fb: DUP4
000002fc: SUB
000002fd: DUP2
000002fe: DUP6
000002ff: DUP9
00000300: DUP9
00000301: CALL
00000302: SWAP4
00000303: POP
00000304: POP
00000305: POP
00000306: POP
00000307: ISZERO
00000308: DUP1
00000309: ISZERO
0000030a: PUSH2 0x0317
0000030d: JUMPI
0000030e: RETURNDATASIZE
0000030f: PUSH1 0x00
00000311: DUP1
00000312: RETURNDATACOPY
00000313: RETURNDATASIZE
00000314: PUSH1 0x00
00000316: REVERT
00000317: JUMPDEST
00000318: POP
00000319: POP
0000031a: POP
0000031b: POP
0000031c: POP
0000031d: JUMP
0000031e: JUMPDEST
0000031f: JUMP
00000320: STOP
00000321: LOG1
00000322: PUSH6 0x627a7a723058
00000329: KECCAK256
0000032a: PUSH11 0x0f4e67641e863dfcd405ba
00000336: SUB
00000337: SWAP3
00000338: CALLDATACOPY
00000339: DUP11
0000033a: SELFDESTRUCT
0000033b: SWAP16
0000033c: DUP16
0000033d: PUSH30
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: 0x10a5ebbb31a44309f196dae44fae5f18320f08367e8295d1c77dac198c47dbb0
call_targets: 0xdd85fd9b66996b84b31fc5a31598a242fcb6425b
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x10a5ebbb31a44309f196dae44fae5f18320f08367e8295d1c77dac198c47dbb0",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xdd85fd9b66996b84b31fc5a31598a242fcb6425b"
    ],
    "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": "0xffffffff",
            "selector": "0xffffffff",
            "calldata_variants": [
                "0xffffffff",
                "0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e1a7d4d",
            "selector": "0x2e1a7d4d",
            "calldata_variants": [
                "0x2e1a7d4d",
                "0x2e1a7d4d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x771fa920",
            "selector": "0x771fa920",
            "calldata_variants": [
                "0x771fa920",
                "0x771fa9200000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd0e30db0",
            "selector": "0xd0e30db0",
            "calldata_variants": [
                "0xd0e30db0",
                "0xd0e30db00000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 460,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 625,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 697,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 4,
    "guards_detected": [
        {
            "pc": 345,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 543,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "untrusted_call_count": 4
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x10a5ebbb31a44309f196dae44fae5f18320f08367e8295d1c77dac198c47dbb0
call_targets: 0xdd85fd9b66996b84b31fc5a31598a242fcb6425b
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x10a5ebbb31a44309f196dae44fae5f18320f08367e8295d1c77dac198c47dbb0",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xdd85fd9b66996b84b31fc5a31598a242fcb6425b"
    ],
    "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": "0xffffffff",
            "selector": "0xffffffff",
            "calldata_variants": [
                "0xffffffff",
                "0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e1a7d4d",
            "selector": "0x2e1a7d4d",
            "calldata_variants": [
                "0x2e1a7d4d",
                "0x2e1a7d4d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x771fa920",
            "selector": "0x771fa920",
            "calldata_variants": [
                "0x771fa920",
                "0x771fa9200000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd0e30db0",
            "selector": "0xd0e30db0",
            "calldata_variants": [
                "0xd0e30db0",
                "0xd0e30db00000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 460,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 625,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 697,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 4,
    "guards_detected": [
        {
            "pc": 345,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 543,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ]
}
medium other detector SELFDESTRUCT reachable 45 no no
view
trace_id: 0xec86d7129a494dbbbdbf15a03e4511efe8c930163eb03ee54817784c6c788798
validation_json
{
    "sink": "SELFDESTRUCT",
    "errors": 0,
    "status": "unknown",
    "attempts": 8,
    "trace_id": "0xec86d7129a494dbbbdbf15a03e4511efe8c930163eb03ee54817784c6c788798",
    "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": "0xffffffff",
            "selector": "0xffffffff",
            "calldata_variants": [
                "0xffffffff",
                "0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e1a7d4d",
            "selector": "0x2e1a7d4d",
            "calldata_variants": [
                "0x2e1a7d4d",
                "0x2e1a7d4d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x771fa920",
            "selector": "0x771fa920",
            "calldata_variants": [
                "0x771fa920",
                "0x771fa9200000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd0e30db0",
            "selector": "0xd0e30db0",
            "calldata_variants": [
                "0xd0e30db0",
                "0xd0e30db00000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 345,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 543,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "selfdestruct_count": 1
}