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

Analysis Run

019b477e-c05a-7356-971e-30eb7b39dffd

complete
Chain ID
1
Address
Block Number
Created
Mon, Dec 22, 2025 7:17 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
2
Validated
2
Source
Bytecode only
Review Backing
Not yet
Best current signal
Untrusted CALL target/value reachable
crit 0 high 2 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
24679 artifact.fetch complete 1 / 3 3 months ago
24680 tool.cast_disasm complete 1 / 3 3 months ago
102500 analysis.bundle complete 1 / 3 1 week ago
102501 capability.graph complete 1 / 3 1 week ago
102502 detector.run complete 1 / 3 1 week ago
102503 validation.fork complete 1 / 3 1 week ago
113883 report.consolidate complete 1 / 6 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
Job Status
complete
Attempts
1 / 6
Findings
0
No findings?
View stderr
OpenAI Codex v0.118.0 (research preview)
--------
workdir: /tmp/codex-b9ewcz0o
model: gpt-5.4
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: none
session id: 019d5ca1-c34d-7a50-8064-81c7504a1ee2
--------
user
You are a security auditor. You ONLY have runtime bytecode + analysis artifacts.
You MUST read `BYTECODE_BUNDLE.json` before concluding; it contains the bytecode summary,
evidence bundle, callsites, storage slots, and detector findings.

Special cases when reasoning from bytecode (be explicit about uncertainty):
- Selector inference is best-effort; missing selectors are common.
- Fallback/receive paths may be the only entrypoints.
- CALL vs DELEGATECALL semantics differ; DELEGATECALL executes in caller storage.
- Proxy patterns (EIP-1967, minimal proxies, beacon) change which storage is authoritative.
- Storage slots are raw; mappings/arrays appear via keccak patterns, names are unknown.
- Guard detection is heuristic; absence of guards does NOT mean unguarded.
- Returndata checking is unknown unless explicitly shown in evidence.
- Precompiles (0x1..0x9) and common ERC20 transfer selectors may appear; do not over-claim.

Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title.
- Locations can be pc references like "pc:0x123" or selectors like "selector:0xa9059cbb".

Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation,
accounting/invariant breaks, dangerous delegatecall, and untrusted external calls.
Be conservative: if evidence is weak, mark severity low/medium and explain why.
warning: Codex could not find system bubblewrap on PATH. Please install bubblewrap with your package manager. Codex will use the vendored bubblewrap in the meantime.
ERROR: You've hit your usage limit. Visit https://chatgpt.com/codex/settings/usage to purchase more credits or try again at Apr 8th, 2026 9:11 AM.
ERROR: You've hit your usage limit. Visit https://chatgpt.com/codex/settings/usage to purchase more credits or try again at Apr 8th, 2026 9:11 AM.
Metadata
{
    "codex": {
        "ran_at": "2026-04-05T07:53:20.079180+00:00",
        "returncode": 1
    },
    "project": {
        "mode": "bytecode",
        "bytecode_length": 1644,
        "bytecode_truncated": false,
        "capability_graph_present": true,
        "analysis_artifact_present": true
    },
    "summary": null,
    "no_findings": null,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
3
EXT*/BALANCE
0
Total opcodes
421
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x002d
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x625f3127
00000019: EQ
0000001a: PUSH2 0x0042
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xcfc54848
00000024: EQ
00000025: PUSH2 0x004c
00000028: JUMPI
00000029: PUSH2 0x003d
0000002c: JUMP
0000002d: JUMPDEST
0000002e: CALLDATASIZE
0000002f: PUSH2 0x003d
00000032: JUMPI
00000033: PUSH2 0x003b
00000036: CALLVALUE
00000037: PUSH2 0x0068
0000003a: JUMP
0000003b: JUMPDEST
0000003c: STOP
0000003d: JUMPDEST
0000003e: PUSH1 0x00
00000040: DUP1
00000041: REVERT
00000042: JUMPDEST
00000043: PUSH2 0x004a
00000046: PUSH2 0x015a
00000049: JUMP
0000004a: JUMPDEST
0000004b: STOP
0000004c: JUMPDEST
0000004d: PUSH2 0x0066
00000050: PUSH1 0x04
00000052: DUP1
00000053: CALLDATASIZE
00000054: SUB
00000055: DUP2
00000056: ADD
00000057: SWAP1
00000058: PUSH2 0x0061
0000005b: SWAP2
0000005c: SWAP1
0000005d: PUSH2 0x01cc
00000060: JUMP
00000061: JUMPDEST
00000062: PUSH2 0x0068
00000065: JUMP
00000066: JUMPDEST
00000067: STOP
00000068: JUMPDEST
00000069: PUSH1 0x00
0000006b: PUSH2 0x03e8
0000006e: DUP3
0000006f: PUSH2 0x0078
00000072: SWAP2
00000073: SWAP1
00000074: PUSH2 0x01f5
00000077: JUMP
00000078: JUMPDEST
00000079: SWAP1
0000007a: POP
0000007b: PUSH1 0x00
0000007d: PUSH20 0x04d93a6a04a1ffcc4aa2034e3bfbfa90a099e572
00000092: SWAP1
00000093: POP
00000094: PUSH1 0x00
00000096: PUSH20 0xac12c99ca790aef85e85cdef70282a6d04cb73c3
000000ab: SWAP1
000000ac: POP
000000ad: DUP2
000000ae: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000000c3: AND
000000c4: PUSH2 0x08fc
000000c7: PUSH2 0x0145
000000ca: DUP6
000000cb: PUSH2 0x00d4
000000ce: SWAP2
000000cf: SWAP1
000000d0: PUSH2 0x0226
000000d3: JUMP
000000d4: JUMPDEST
000000d5: SWAP1
000000d6: DUP2
000000d7: ISZERO
000000d8: MUL
000000d9: SWAP1
000000da: PUSH1 0x40
000000dc: MLOAD
000000dd: PUSH1 0x00
000000df: PUSH1 0x40
000000e1: MLOAD
000000e2: DUP1
000000e3: DUP4
000000e4: SUB
000000e5: DUP2
000000e6: DUP6
000000e7: DUP9
000000e8: DUP9
000000e9: CALL
000000ea: SWAP4
000000eb: POP
000000ec: POP
000000ed: POP
000000ee: POP
000000ef: ISZERO
000000f0: DUP1
000000f1: ISZERO
000000f2: PUSH2 0x00ff
000000f5: JUMPI
000000f6: RETURNDATASIZE
000000f7: PUSH1 0x00
000000f9: DUP1
000000fa: RETURNDATACOPY
000000fb: RETURNDATASIZE
000000fc: PUSH1 0x00
000000fe: REVERT
000000ff: JUMPDEST
00000100: POP
00000101: DUP1
00000102: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000117: AND
00000118: PUSH2 0x08fc
0000011b: PUSH2 0x023f
0000011e: DUP6
0000011f: PUSH2 0x0128
00000122: SWAP2
00000123: SWAP1
00000124: PUSH2 0x0226
00000127: JUMP
00000128: JUMPDEST
00000129: SWAP1
0000012a: DUP2
0000012b: ISZERO
0000012c: MUL
0000012d: SWAP1
0000012e: PUSH1 0x40
00000130: MLOAD
00000131: PUSH1 0x00
00000133: PUSH1 0x40
00000135: MLOAD
00000136: DUP1
00000137: DUP4
00000138: SUB
00000139: DUP2
0000013a: DUP6
0000013b: DUP9
0000013c: DUP9
0000013d: CALL
0000013e: SWAP4
0000013f: POP
00000140: POP
00000141: POP
00000142: POP
00000143: ISZERO
00000144: DUP1
00000145: ISZERO
00000146: PUSH2 0x0153
00000149: JUMPI
0000014a: RETURNDATASIZE
0000014b: PUSH1 0x00
0000014d: DUP1
0000014e: RETURNDATACOPY
0000014f: RETURNDATASIZE
00000150: PUSH1 0x00
00000152: REVERT
00000153: JUMPDEST
00000154: POP
00000155: POP
00000156: POP
00000157: POP
00000158: POP
00000159: JUMP
0000015a: JUMPDEST
0000015b: PUSH20 0xac12c99ca790aef85e85cdef70282a6d04cb73c3
00000170: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000185: AND
00000186: PUSH2 0x08fc
00000189: SELFBALANCE
0000018a: SWAP1
0000018b: DUP2
0000018c: ISZERO
0000018d: MUL
0000018e: SWAP1
0000018f: PUSH1 0x40
00000191: MLOAD
00000192: PUSH1 0x00
00000194: PUSH1 0x40
00000196: MLOAD
00000197: DUP1
00000198: DUP4
00000199: SUB
0000019a: DUP2
0000019b: DUP6
0000019c: DUP9
0000019d: DUP9
0000019e: CALL
0000019f: SWAP4
000001a0: POP
000001a1: POP
000001a2: POP
000001a3: POP
000001a4: ISZERO
000001a5: DUP1
000001a6: ISZERO
000001a7: PUSH2 0x01b4
000001aa: JUMPI
000001ab: RETURNDATASIZE
000001ac: PUSH1 0x00
000001ae: DUP1
000001af: RETURNDATACOPY
000001b0: RETURNDATASIZE
000001b1: PUSH1 0x00
000001b3: REVERT
000001b4: JUMPDEST
000001b5: POP
000001b6: JUMP
000001b7: JUMPDEST
000001b8: PUSH1 0x00
000001ba: DUP2
000001bb: CALLDATALOAD
000001bc: SWAP1
000001bd: POP
000001be: PUSH2 0x01c6
000001c1: DUP2
000001c2: PUSH2 0x02e8
000001c5: JUMP
000001c6: JUMPDEST
000001c7: SWAP3
000001c8: SWAP2
000001c9: POP
000001ca: POP
000001cb: JUMP
000001cc: JUMPDEST
000001cd: PUSH1 0x00
000001cf: PUSH1 0x20
000001d1: DUP3
000001d2: DUP5
000001d3: SUB
000001d4: SLT
000001d5: ISZERO
000001d6: PUSH2 0x01de
000001d9: JUMPI
000001da: PUSH1 0x00
000001dc: DUP1
000001dd: REVERT
000001de: JUMPDEST
000001df: PUSH1 0x00
000001e1: PUSH2 0x01ec
000001e4: DUP5
000001e5: DUP3
000001e6: DUP6
000001e7: ADD
000001e8: PUSH2 0x01b7
000001eb: JUMP
000001ec: JUMPDEST
000001ed: SWAP2
000001ee: POP
000001ef: POP
000001f0: SWAP3
000001f1: SWAP2
000001f2: POP
000001f3: POP
000001f4: JUMP
000001f5: JUMPDEST
000001f6: PUSH1 0x00
000001f8: PUSH2 0x0200
000001fb: DUP3
000001fc: PUSH2 0x0280
000001ff: JUMP
00000200: JUMPDEST
00000201: SWAP2
00000202: POP
00000203: PUSH2 0x020b
00000206: DUP4
00000207: PUSH2 0x0280
0000020a: JUMP
0000020b: JUMPDEST
0000020c: SWAP3
0000020d: POP
0000020e: DUP3
0000020f: PUSH2 0x021b
00000212: JUMPI
00000213: PUSH2 0x021a
00000216: PUSH2 0x02b9
00000219: JUMP
0000021a: JUMPDEST
0000021b: JUMPDEST
0000021c: DUP3
0000021d: DUP3
0000021e: DIV
0000021f: SWAP1
00000220: POP
00000221: SWAP3
00000222: SWAP2
00000223: POP
00000224: POP
00000225: JUMP
00000226: JUMPDEST
00000227: PUSH1 0x00
00000229: PUSH2 0x0231
0000022c: DUP3
0000022d: PUSH2 0x0280
00000230: JUMP
00000231: JUMPDEST
00000232: SWAP2
00000233: POP
00000234: PUSH2 0x023c
00000237: DUP4
00000238: PUSH2 0x0280
0000023b: JUMP
0000023c: JUMPDEST
0000023d: SWAP3
0000023e: POP
0000023f: DUP2
00000240: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00000261: DIV
00000262: DUP4
00000263: GT
00000264: DUP3
00000265: ISZERO
00000266: ISZERO
00000267: AND
00000268: ISZERO
00000269: PUSH2 0x0275
0000026c: JUMPI
0000026d: PUSH2 0x0274
00000270: PUSH2 0x028a
00000273: JUMP
00000274: JUMPDEST
00000275: JUMPDEST
00000276: DUP3
00000277: DUP3
00000278: MUL
00000279: SWAP1
0000027a: POP
0000027b: SWAP3
0000027c: SWAP2
0000027d: POP
0000027e: POP
0000027f: JUMP
00000280: JUMPDEST
00000281: PUSH1 0x00
00000283: DUP2
00000284: SWAP1
00000285: POP
00000286: SWAP2
00000287: SWAP1
00000288: POP
00000289: JUMP
0000028a: JUMPDEST
0000028b: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000002ac: PUSH1 0x00
000002ae: MSTORE
000002af: PUSH1 0x11
000002b1: PUSH1 0x04
000002b3: MSTORE
000002b4: PUSH1 0x24
000002b6: PUSH1 0x00
000002b8: REVERT
000002b9: JUMPDEST
000002ba: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000002db: PUSH1 0x00
000002dd: MSTORE
000002de: PUSH1 0x12
000002e0: PUSH1 0x04
000002e2: MSTORE
000002e3: PUSH1 0x24
000002e5: PUSH1 0x00
000002e7: REVERT
000002e8: JUMPDEST
000002e9: PUSH2 0x02f1
000002ec: DUP2
000002ed: PUSH2 0x0280
000002f0: JUMP
000002f1: JUMPDEST
000002f2: DUP2
000002f3: EQ
000002f4: PUSH2 0x02fc
000002f7: JUMPI
000002f8: PUSH1 0x00
000002fa: DUP1
000002fb: REVERT
000002fc: JUMPDEST
000002fd: POP
000002fe: JUMP
000002ff: INVALID
00000300: LOG2
00000301: PUSH5 0x6970667358
00000307: UNKNOWN(0x22)
00000308: SLT
00000309: KECCAK256
0000030a: UNKNOWN(0xEE)
0000030b: UNKNOWN(0xE2)
0000030c: UNKNOWN(0xFC)
0000030d: PUSH8 0xb418ac5f51842cf5
00000316: UNKNOWN(0x2E)
00000317: UNKNOWN(0xA9)
00000318: JUMPDEST
00000319: PUSH14 0xc1197baa29dfbf9edf18754ca01b
00000328: REVERT
00000329: SWAP8
0000032a: PUSH5 0x736f6c6343
00000330: STOP
00000331: ADDMOD
00000332: DIV
00000333: STOP
00000334: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 yes yes
view
trace_id: 0x3e8b90705431ab2354182ff2b3e139b7740864c805eea5e2f7f04742d35dc38a
call_targets: 0x139ae84e57b35948cf3eff9baf1e83e149e23059, 0xac12c99ca790aef85e85cdef70282a6d04cb73c3
target_varies: yes
classification: target_varies
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "confirmed",
    "attempts": 1,
    "trace_id": "0x3e8b90705431ab2354182ff2b3e139b7740864c805eea5e2f7f04742d35dc38a",
    "confirmed": true,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x139ae84e57b35948cf3eff9baf1e83e149e23059",
        "0xac12c99ca790aef85e85cdef70282a6d04cb73c3"
    ],
    "matched_probe": null,
    "target_varies": true,
    "classification": "target_varies"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x625f3127",
            "selector": "0x625f3127",
            "calldata_variants": [
                "0x625f3127",
                "0x625f31270000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcfc54848",
            "selector": "0xcfc54848",
            "calldata_variants": [
                "0xcfc54848",
                "0xcfc548480000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 233,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 317,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 414,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 3,
    "guards_detected": [],
    "untrusted_call_count": 3
}
high other detector ETH value transfer possible 55 yes yes
view
trace_id: 0x3e8b90705431ab2354182ff2b3e139b7740864c805eea5e2f7f04742d35dc38a
call_targets: 0x139ae84e57b35948cf3eff9baf1e83e149e23059, 0xac12c99ca790aef85e85cdef70282a6d04cb73c3
target_varies: yes
classification: target_varies
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "confirmed",
    "attempts": 1,
    "trace_id": "0x3e8b90705431ab2354182ff2b3e139b7740864c805eea5e2f7f04742d35dc38a",
    "confirmed": true,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x139ae84e57b35948cf3eff9baf1e83e149e23059",
        "0xac12c99ca790aef85e85cdef70282a6d04cb73c3"
    ],
    "matched_probe": null,
    "target_varies": true,
    "classification": "target_varies"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x625f3127",
            "selector": "0x625f3127",
            "calldata_variants": [
                "0x625f3127",
                "0x625f31270000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcfc54848",
            "selector": "0xcfc54848",
            "calldata_variants": [
                "0xcfc54848",
                "0xcfc548480000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 233,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 317,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 414,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 3,
    "guards_detected": []
}