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

Analysis Run

9ce7dbf3-1570-4c69-9fde-e6dccc96770d

complete
Chain ID
1
Address
Block Number
Created
Fri, Jan 2, 2026 2:12 AM
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
DELEGATECALL present
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
31185 report.consolidate complete 1 / 1 3 months ago
76924 artifact.fetch complete 1 / 3 3 weeks ago
76925 tool.cast_disasm complete 1 / 3 3 weeks ago
76926 analysis.bundle complete 1 / 3 3 weeks ago
76927 capability.graph complete 1 / 3 3 weeks ago
76928 detector.run complete 1 / 3 3 weeks ago
76929 validation.fork complete 1 / 3 3 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
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
Reviewed the provided runtime bytecode; it is a minimal proxy/clone that delegates to a fixed implementation address (0x652a2a2876b855d9c30d9265f882f0a486608976) with immutable args appended. The proxy itself has no dynamic call targets, no selfdestruct, and no obvious value-extraction paths without the implementation bytecode, so no concrete exploit path can be asserted from this bundle alone.
View stderr
[codex:1086012] OpenAI Codex v0.77.0 (research preview)
[codex:1086012] --------
[codex:1086012] workdir: /tmp/codex-multi-511qoken
[codex:1086012] model: gpt-5.2-codex
[codex:1086012] provider: openai
[codex:1086012] approval: never
[codex:1086012] sandbox: read-only
[codex:1086012] reasoning effort: xhigh
[codex:1086012] reasoning summaries: auto
[codex:1086012] session id: 019b7c77-fb19-73c1-ad25-ab789448c9d1
[codex:1086012] --------
[codex:1086012] user
[codex:1086012] You are a profit-focused exploit hunter analyzing EVM bytecode. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:1086012] 
[codex:1086012] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:1086012] 
[codex:1086012] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:1086012] - Gas inefficiency, code quality, or best practices
[codex:1086012] - Theoretical vulnerabilities without a clear extraction path
[codex:1086012] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:1086012] - Issues requiring social engineering or off-chain coordination
[codex:1086012] 
[codex:1086012] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:1086012] - CALL/DELEGATECALL with controllable destination or calldata
[codex:1086012] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:1086012] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:1086012] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:1086012] - External calls before state updates (reentrancy)
[codex:1086012] - SELFDESTRUCT with controllable beneficiary
[codex:1086012] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:1086012] 
[codex:1086012] For each finding, you MUST explain:
[codex:1086012] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:1086012] 2. The concrete sequence of transactions to extract value
[codex:1086012] 3. Why you believe this is exploitable (not just suspicious)
[codex:1086012] 
[codex:1086012] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:1086012] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:1086012] 
[codex:1086012] Output MUST be valid JSON matching the provided schema.
[codex:1086012] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:1086012] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:1086012] mcp startup: no servers
[codex:1086012] 
[codex:1086012] thinking
[codex:1086012] **Reviewing BYTECODE_BUNDLE.txt instructions**
[codex:1086012] exec
[codex:1086012] /bin/bash -lc ls in /tmp/codex-multi-511qoken succeeded in 5ms:
[codex:1086012] BYTECODE_BUNDLE.txt
[codex:1086012] codex-output-schema.json
[codex:1086012] 
[codex:1086012] thinking
[codex:1086012] **Requesting cat file**
[codex:1086012] exec
[codex:1086012] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-511qoken succeeded in 5ms:
[codex:1086012] Runtime bytecode bundle for best-effort auditing.
[codex:1086012] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:1086012] 
[codex:1086012] FILE: runtime_bytecode.hex
[codex:1086012] 0x36602f57343d527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff60203da13d3df35b3d3d3d3d363d3d376100366067363936610036013d73652a2a2876b855d9c30d9265f882f0a4866089765af43d3d93803e606557fd5bf32e1a2823b6e65e6ac46bad6e0cc4096976fc265e00000000000000000000000000000000000000000000000000000000078615600034
[codex:1086012] 
[codex:1086012] thinking
[codex:1086012] **Analyzing proxy bytecode structure**
[codex:1086012] exec
[codex:1086012] /bin/bash -lc "python - <<'PY'
[codex:1086012] code='36602f57343d527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff60203da13d3df35b3d3d3d3d363d3d376100366067363936610036013d73652a2a2876b855d9c30d9265f882f0a4866089765af43d3d93803e606557fd5bf32e1a2823b6e65e6ac46bad6e0cc4096976fc265e00000000000000000000000000000000000000000000000000000000078615600034'
[codex:1086012] # remove 0x if any
[codex:1086012] if code.startswith('0x'): code=code[2:]
[codex:1086012] # disasm
[codex:1086012] opcodes={
[codex:1086012] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:1086012] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:1086012] 0x20:'SHA3',
[codex:1086012] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1086012] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1086012] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:1086012] 0x5f:'PUSH0',
[codex:1086012] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:1086012] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:1086012] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:1086012] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1086012] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xf6:'STATICCALL',0xf7:'REVERT',0xf8:'INVALID',0xf9:'SELFDESTRUCT',0xfa:'INVALID',0xfb:'INVALID',0xfc:'INVALID',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1086012] }
[codex:1086012] bs=bytes.fromhex(code)
[codex:1086012] 
[codex:1086012] i=0
[codex:1086012] while i<len(bs):
[codex:1086012]     b=bs[i]
[codex:1086012]     op=opcodes.get(b, 'OP'+hex(b))
[codex:1086012]     if 0x60<=b<=0x7f:
[codex:1086012]         n=b-0x5f
[codex:1086012]         data=bs[i+1:i+1+n]
[codex:1086012]         print(f'{i:04x}: {op} 0x{data.hex()}')
[codex:1086012]         i+=1+n
[codex:1086012]     elif b==0x5f:
[codex:1086012]         print(f'{i:04x}: PUSH0')
[codex:1086012]         i+=1
[codex:1086012]     else:
[codex:1086012]         print(f'{i:04x}: {op}')
[codex:1086012]         i+=1
[codex:1086012] PY" in /tmp/codex-multi-511qoken succeeded in 19ms:
[codex:1086012] 0000: CALLDATASIZE
[codex:1086012] 0001: PUSH1 0x2f
[codex:1086012] 0003: JUMPI
[codex:1086012] 0004: CALLVALUE
[codex:1086012] 0005: RETURNDATASIZE
[codex:1086012] 0006: MSTORE
[codex:1086012] 0007: PUSH32 0x9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff
[codex:1086012] 0028: PUSH1 0x20
[codex:1086012] 002a: RETURNDATASIZE
[codex:1086012] 002b: LOG1
[codex:1086012] 002c: RETURNDATASIZE
[codex:1086012] 002d: RETURNDATASIZE
[codex:1086012] 002e: RETURN
[codex:1086012] 002f: JUMPDEST
[codex:1086012] 0030: RETURNDATASIZE
[codex:1086012] 0031: RETURNDATASIZE
[codex:1086012] 0032: RETURNDATASIZE
[codex:1086012] 0033: RETURNDATASIZE
[codex:1086012] 0034: CALLDATASIZE
[codex:1086012] 0035: RETURNDATASIZE
[codex:1086012] 
[codex:1086012] thinking
[codex:1086012] **Analyzing runtime code with appended immutable arguments**
[codex:1086012] exec
[codex:1086012] /bin/bash -lc "python - <<'PY'
[codex:1086012] code='36602f57343d527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff60203da13d3df35b3d3d3d3d363d3d376100366067363936610036013d73652a2a2876b855d9c30d9265f882f0a4866089765af43d3d93803e606557fd5bf32e1a2823b6e65e6ac46bad6e0cc4096976fc265e00000000000000000000000000000000000000000000000000000000078615600034'
[codex:1086012] if code.startswith('0x'): code=code[2:]
[codex:1086012] bs=bytes.fromhex(code)
[codex:1086012] print('len', len(bs))
[codex:1086012] start=0x67
[codex:1086012] length=0x36
[codex:1086012] chunk=bs[start:start+length]
[codex:1086012] print('chunk len', len(chunk))
[codex:1086012] print(chunk.hex())
[codex:1086012] PY" in /tmp/codex-multi-511qoken succeeded in 17ms:
[codex:1086012] len 157
[codex:1086012] chunk len 54
[codex:1086012] 2e1a2823b6e65e6ac46bad6e0cc4096976fc265e00000000000000000000000000000000000000000000000000000000078615600034
[codex:1086012] 
[codex:1086012] thinking
[codex:1086012] **Analyzing minimal proxy bytecode**
[codex:1086012] exec
[codex:1086012] /bin/bash -lc 'cat codex-output-schema.json' in /tmp/codex-multi-511qoken succeeded in 5ms:
[codex:1086012] {"type": "object", "additionalProperties": false, "required": ["no_findings", "summary", "findings"], "properties": {"no_findings": {"type": "boolean"}, "summary": {"type": "string"}, "findings": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["severity", "category", "title", "evidence", "locations", "exploit_scenario", "recommendation"], "properties": {"severity": {"type": "string", "enum": ["info", "low", "medium", "high", "critical"]}, "category": {"type": "string", "enum": ["access_control", "reentrancy", "math", "oracle", "upgradeability", "auth", "other"]}, "title": {"type": "string"}, "exploit_scenario": {"type": "string"}, "recommendation": {"type": "string"}, "evidence": {"type": "string"}, "locations": {"type": "array", "items": {"type": "string"}}}}}}}
[codex:1086012] 
[codex:1086012] thinking
[codex:1086012] **Preparing JSON response**
[codex:1086012] codex
[codex:1086012] {"no_findings":true,"summary":"Reviewed the provided runtime bytecode; it is a minimal proxy/clone that delegates to a fixed implementation address (0x652a2a2876b855d9c30d9265f882f0a486608976) with immutable args appended. The proxy itself has no dynamic call targets, no selfdestruct, and no obvious value-extraction paths without the implementation bytecode, so no concrete exploit path can be asserted from this bundle alone.","findings":[]}
[codex:1086012] tokens used
[codex:1086012] 14,229
[codex:1086012] {"no_findings":true,"summary":"Reviewed the provided runtime bytecode; it is a minimal proxy/clone that delegates to a fixed implementation address (0x652a2a2876b855d9c30d9265f882f0a486608976) with immutable args appended. The proxy itself has no dynamic call targets, no selfdestruct, and no obvious value-extraction paths without the implementation bytecode, so no concrete exploit path can be asserted from this bundle alone.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-02T02:12:14.249010+00:00",
        "returncode": 0
    },
    "summary": "Reviewed the provided runtime bytecode; it is a minimal proxy/clone that delegates to a fixed implementation address (0x652a2a2876b855d9c30d9265f882f0a486608976) with immutable args appended. The proxy itself has no dynamic call targets, no selfdestruct, and no obvious value-extraction paths without the implementation bytecode, so no concrete exploit path can be asserted from this bundle alone.",
    "raw_final": {
        "summary": "Reviewed the provided runtime bytecode; it is a minimal proxy/clone that delegates to a fixed implementation address (0x652a2a2876b855d9c30d9265f882f0a486608976) with immutable args appended. The proxy itself has no dynamic call targets, no selfdestruct, and no obvious value-extraction paths without the implementation bytecode, so no concrete exploit path can be asserted from this bundle alone.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
1
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
0
EXT*/BALANCE
0
Total opcodes
85
Flags
delegatecall_present
View cast disassembly output
00000000: CALLDATASIZE
00000001: PUSH1 0x2f
00000003: JUMPI
00000004: CALLVALUE
00000005: RETURNDATASIZE
00000006: MSTORE
00000007: PUSH32 0x9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff
00000028: PUSH1 0x20
0000002a: RETURNDATASIZE
0000002b: LOG1
0000002c: RETURNDATASIZE
0000002d: RETURNDATASIZE
0000002e: RETURN
0000002f: JUMPDEST
00000030: RETURNDATASIZE
00000031: RETURNDATASIZE
00000032: RETURNDATASIZE
00000033: RETURNDATASIZE
00000034: CALLDATASIZE
00000035: RETURNDATASIZE
00000036: RETURNDATASIZE
00000037: CALLDATACOPY
00000038: PUSH2 0x0036
0000003b: PUSH1 0x67
0000003d: CALLDATASIZE
0000003e: CODECOPY
0000003f: CALLDATASIZE
00000040: PUSH2 0x0036
00000043: ADD
00000044: RETURNDATASIZE
00000045: PUSH20 0x652a2a2876b855d9c30d9265f882f0a486608976
0000005a: GAS
0000005b: DELEGATECALL
0000005c: RETURNDATASIZE
0000005d: RETURNDATASIZE
0000005e: SWAP4
0000005f: DUP1
00000060: RETURNDATACOPY
00000061: PUSH1 0x65
00000063: JUMPI
00000064: REVERT
00000065: JUMPDEST
00000066: RETURN
00000067: UNKNOWN(0x2E)
00000068: BYTE
00000069: UNKNOWN(0x28)
0000006a: UNKNOWN(0x23)
0000006b: UNKNOWN(0xB6)
0000006c: UNKNOWN(0xE6)
0000006d: MCOPY
0000006e: PUSH11 0xc46bad6e0cc4096976fc26
0000007a: MCOPY
0000007b: STOP
0000007c: STOP
0000007d: STOP
0000007e: STOP
0000007f: STOP
00000080: STOP
00000081: STOP
00000082: STOP
00000083: STOP
00000084: STOP
00000085: STOP
00000086: STOP
00000087: STOP
00000088: STOP
00000089: STOP
0000008a: STOP
0000008b: STOP
0000008c: STOP
0000008d: STOP
0000008e: STOP
0000008f: STOP
00000090: STOP
00000091: STOP
00000092: STOP
00000093: STOP
00000094: STOP
00000095: STOP
00000096: STOP
00000097: SMOD
00000098: DUP7
00000099: ISZERO
0000009a: PUSH1 0x00
0000009c: CALLVALUE

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
medium upgradeability cast DELEGATECALL present 80 no
view
evidence_json
{
    "notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
    "delegatecall_count": 1
}