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

Analysis Run

019b3836-2584-71f2-ab0a-5e3a57ce0b47

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
787 artifact.fetch complete 1 / 3 4 months ago
788 tool.cast_disasm complete 1 / 3 4 months ago
96266 analysis.bundle complete 1 / 3 2 weeks ago
96267 capability.graph complete 1 / 3 2 weeks ago
96268 detector.run complete 1 / 3 2 weeks ago
96269 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
0
Total opcodes
314
Flags
selfdestruct_present
View cast disassembly output
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x00
00000007: CALLDATALOAD
00000008: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00000026: SWAP1
00000027: DIV
00000028: DUP1
00000029: PUSH4 0x41c0e1b5
0000002e: EQ
0000002f: PUSH2 0x0044
00000032: JUMPI
00000033: DUP1
00000034: PUSH4 0xfae2dd4b
00000039: EQ
0000003a: PUSH2 0x0053
0000003d: JUMPI
0000003e: PUSH2 0x0042
00000041: JUMP
00000042: JUMPDEST
00000043: STOP
00000044: JUMPDEST
00000045: PUSH2 0x0051
00000048: PUSH1 0x04
0000004a: DUP1
0000004b: POP
0000004c: POP
0000004d: PUSH2 0x018a
00000050: JUMP
00000051: JUMPDEST
00000052: STOP
00000053: JUMPDEST
00000054: PUSH2 0x0060
00000057: PUSH1 0x04
00000059: DUP1
0000005a: POP
0000005b: POP
0000005c: PUSH2 0x00ce
0000005f: JUMP
00000060: JUMPDEST
00000061: PUSH1 0x40
00000063: MLOAD
00000064: DUP1
00000065: DUP1
00000066: PUSH1 0x20
00000068: ADD
00000069: DUP3
0000006a: DUP2
0000006b: SUB
0000006c: DUP3
0000006d: MSTORE
0000006e: DUP4
0000006f: DUP2
00000070: DUP2
00000071: MLOAD
00000072: DUP2
00000073: MSTORE
00000074: PUSH1 0x20
00000076: ADD
00000077: SWAP2
00000078: POP
00000079: DUP1
0000007a: MLOAD
0000007b: SWAP1
0000007c: PUSH1 0x20
0000007e: ADD
0000007f: SWAP1
00000080: DUP1
00000081: DUP4
00000082: DUP4
00000083: DUP3
00000084: SWAP1
00000085: PUSH1 0x00
00000087: PUSH1 0x04
00000089: PUSH1 0x20
0000008b: DUP5
0000008c: PUSH1 0x1f
0000008e: ADD
0000008f: DIV
00000090: PUSH1 0x03
00000092: MUL
00000093: PUSH1 0x0f
00000095: ADD
00000096: CALL
00000097: POP
00000098: SWAP1
00000099: POP
0000009a: SWAP1
0000009b: DUP2
0000009c: ADD
0000009d: SWAP1
0000009e: PUSH1 0x1f
000000a0: AND
000000a1: DUP1
000000a2: ISZERO
000000a3: PUSH2 0x00c0
000000a6: JUMPI
000000a7: DUP1
000000a8: DUP3
000000a9: SUB
000000aa: DUP1
000000ab: MLOAD
000000ac: PUSH1 0x01
000000ae: DUP4
000000af: PUSH1 0x20
000000b1: SUB
000000b2: PUSH2 0x0100
000000b5: EXP
000000b6: SUB
000000b7: NOT
000000b8: AND
000000b9: DUP2
000000ba: MSTORE
000000bb: PUSH1 0x20
000000bd: ADD
000000be: SWAP2
000000bf: POP
000000c0: JUMPDEST
000000c1: POP
000000c2: SWAP3
000000c3: POP
000000c4: POP
000000c5: POP
000000c6: PUSH1 0x40
000000c8: MLOAD
000000c9: DUP1
000000ca: SWAP2
000000cb: SUB
000000cc: SWAP1
000000cd: RETURN
000000ce: JUMPDEST
000000cf: PUSH1 0x20
000000d1: PUSH1 0x40
000000d3: MLOAD
000000d4: SWAP1
000000d5: DUP2
000000d6: ADD
000000d7: PUSH1 0x40
000000d9: MSTORE
000000da: DUP1
000000db: PUSH1 0x00
000000dd: DUP2
000000de: MSTORE
000000df: PUSH1 0x20
000000e1: ADD
000000e2: POP
000000e3: PUSH1 0x00
000000e5: PUSH1 0x00
000000e7: POP
000000e8: DUP1
000000e9: SLOAD
000000ea: PUSH1 0x01
000000ec: DUP2
000000ed: PUSH1 0x01
000000ef: AND
000000f0: ISZERO
000000f1: PUSH2 0x0100
000000f4: MUL
000000f5: SUB
000000f6: AND
000000f7: PUSH1 0x02
000000f9: SWAP1
000000fa: DIV
000000fb: DUP1
000000fc: PUSH1 0x1f
000000fe: ADD
000000ff: PUSH1 0x20
00000101: DUP1
00000102: SWAP2
00000103: DIV
00000104: MUL
00000105: PUSH1 0x20
00000107: ADD
00000108: PUSH1 0x40
0000010a: MLOAD
0000010b: SWAP1
0000010c: DUP2
0000010d: ADD
0000010e: PUSH1 0x40
00000110: MSTORE
00000111: DUP1
00000112: SWAP3
00000113: SWAP2
00000114: SWAP1
00000115: DUP2
00000116: DUP2
00000117: MSTORE
00000118: PUSH1 0x20
0000011a: ADD
0000011b: DUP3
0000011c: DUP1
0000011d: SLOAD
0000011e: PUSH1 0x01
00000120: DUP2
00000121: PUSH1 0x01
00000123: AND
00000124: ISZERO
00000125: PUSH2 0x0100
00000128: MUL
00000129: SUB
0000012a: AND
0000012b: PUSH1 0x02
0000012d: SWAP1
0000012e: DIV
0000012f: DUP1
00000130: ISZERO
00000131: PUSH2 0x017b
00000134: JUMPI
00000135: DUP1
00000136: PUSH1 0x1f
00000138: LT
00000139: PUSH2 0x0150
0000013c: JUMPI
0000013d: PUSH2 0x0100
00000140: DUP1
00000141: DUP4
00000142: SLOAD
00000143: DIV
00000144: MUL
00000145: DUP4
00000146: MSTORE
00000147: SWAP2
00000148: PUSH1 0x20
0000014a: ADD
0000014b: SWAP2
0000014c: PUSH2 0x017b
0000014f: JUMP
00000150: JUMPDEST
00000151: DUP3
00000152: ADD
00000153: SWAP2
00000154: SWAP1
00000155: PUSH1 0x00
00000157: MSTORE
00000158: PUSH1 0x20
0000015a: PUSH1 0x00
0000015c: KECCAK256
0000015d: SWAP1
0000015e: JUMPDEST
0000015f: DUP2
00000160: SLOAD
00000161: DUP2
00000162: MSTORE
00000163: SWAP1
00000164: PUSH1 0x01
00000166: ADD
00000167: SWAP1
00000168: PUSH1 0x20
0000016a: ADD
0000016b: DUP1
0000016c: DUP4
0000016d: GT
0000016e: PUSH2 0x015e
00000171: JUMPI
00000172: DUP3
00000173: SWAP1
00000174: SUB
00000175: PUSH1 0x1f
00000177: AND
00000178: DUP3
00000179: ADD
0000017a: SWAP2
0000017b: JUMPDEST
0000017c: POP
0000017d: POP
0000017e: POP
0000017f: POP
00000180: POP
00000181: SWAP1
00000182: POP
00000183: PUSH2 0x0187
00000186: JUMP
00000187: JUMPDEST
00000188: SWAP1
00000189: JUMP
0000018a: JUMPDEST
0000018b: PUSH1 0x05
0000018d: PUSH1 0x00
0000018f: SWAP1
00000190: SLOAD
00000191: SWAP1
00000192: PUSH2 0x0100
00000195: EXP
00000196: SWAP1
00000197: DIV
00000198: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001ad: AND
000001ae: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001c3: AND
000001c4: CALLER
000001c5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001da: AND
000001db: EQ
000001dc: ISZERO
000001dd: PUSH2 0x021b
000001e0: JUMPI
000001e1: PUSH1 0x05
000001e3: PUSH1 0x00
000001e5: SWAP1
000001e6: SLOAD
000001e7: SWAP1
000001e8: PUSH2 0x0100
000001eb: EXP
000001ec: SWAP1
000001ed: DIV
000001ee: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000203: AND
00000204: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000219: AND
0000021a: SELFDESTRUCT
0000021b: JUMPDEST
0000021c: JUMPDEST
0000021d: 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: 0x919ea87d161201b342e4aae6513dada5b9ab5a897caf3c76f9f773e83c4300d6
call_targets: 0x0aff0b2c09be79ce9f2cf5e3f53b3a15adb8555b
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x919ea87d161201b342e4aae6513dada5b9ab5a897caf3c76f9f773e83c4300d6",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x0aff0b2c09be79ce9f2cf5e3f53b3a15adb8555b"
    ],
    "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": "0x41c0e1b5",
            "selector": "0x41c0e1b5",
            "calldata_variants": [
                "0x41c0e1b5",
                "0x41c0e1b50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfae2dd4b",
            "selector": "0xfae2dd4b",
            "calldata_variants": [
                "0xfae2dd4b",
                "0xfae2dd4b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 150,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 1,
    "guards_detected": [
        {
            "pc": 452,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "untrusted_call_count": 1
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x919ea87d161201b342e4aae6513dada5b9ab5a897caf3c76f9f773e83c4300d6
call_targets: 0x0aff0b2c09be79ce9f2cf5e3f53b3a15adb8555b
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x919ea87d161201b342e4aae6513dada5b9ab5a897caf3c76f9f773e83c4300d6",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x0aff0b2c09be79ce9f2cf5e3f53b3a15adb8555b"
    ],
    "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": "0x41c0e1b5",
            "selector": "0x41c0e1b5",
            "calldata_variants": [
                "0x41c0e1b5",
                "0x41c0e1b50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfae2dd4b",
            "selector": "0xfae2dd4b",
            "calldata_variants": [
                "0xfae2dd4b",
                "0xfae2dd4b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 150,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 1,
    "guards_detected": [
        {
            "pc": 452,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ]
}
medium other detector SELFDESTRUCT reachable 45 no no
view
trace_id: 0x177f74373563a0be0412be9f2cc12e66f8b373f1e3b115fa4dd313b4140b6d3c
validation_json
{
    "sink": "SELFDESTRUCT",
    "errors": 0,
    "status": "unknown",
    "attempts": 4,
    "trace_id": "0x177f74373563a0be0412be9f2cc12e66f8b373f1e3b115fa4dd313b4140b6d3c",
    "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": "0x41c0e1b5",
            "selector": "0x41c0e1b5",
            "calldata_variants": [
                "0x41c0e1b5",
                "0x41c0e1b50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfae2dd4b",
            "selector": "0xfae2dd4b",
            "calldata_variants": [
                "0xfae2dd4b",
                "0xfae2dd4b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 452,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "selfdestruct_count": 1
}