da09a895-da60-46f6-92dd-2d365b3161b9
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 31033 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 76012 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 76013 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 76014 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 76015 | capability.graph | complete | 1 / 3 | 1 week ago |
| 76016 | detector.run | complete | 1 / 3 | 1 week ago |
| 76017 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:8513995] OpenAI Codex v0.77.0 (research preview)
[codex:8513995] --------
[codex:8513995] workdir: /tmp/codex-multi-bbo14oyn
[codex:8513995] model: gpt-5.2-codex
[codex:8513995] provider: openai
[codex:8513995] approval: never
[codex:8513995] sandbox: read-only
[codex:8513995] reasoning effort: xhigh
[codex:8513995] reasoning summaries: auto
[codex:8513995] session id: 019b79e6-42ad-7d73-bd41-1578fd38fc1b
[codex:8513995] --------
[codex:8513995] user
[codex:8513995] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:8513995]
[codex:8513995] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:8513995]
[codex:8513995] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:8513995] - Gas inefficiency, code quality, naming, or best practices
[codex:8513995] - Theoretical vulnerabilities without a clear extraction path
[codex:8513995] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:8513995] - Front-running unless it enables theft beyond MEV
[codex:8513995] - DoS, griefing, or issues that don't result in attacker profit
[codex:8513995] - Missing events, view function issues, or informational findings
[codex:8513995]
[codex:8513995] HIGH-VALUE PATTERNS TO HUNT:
[codex:8513995] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:8513995] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:8513995] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:8513995] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:8513995] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:8513995] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:8513995] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:8513995] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:8513995] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:8513995]
[codex:8513995] For each finding, you MUST provide:
[codex:8513995] 1. Exact file and line numbers of vulnerable code
[codex:8513995] 2. Step-by-step exploit transaction sequence
[codex:8513995] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:8513995]
[codex:8513995] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:8513995]
[codex:8513995] Output MUST be valid JSON matching the provided schema.
[codex:8513995] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:8513995] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:8513995] mcp startup: no servers
[codex:8513995]
[codex:8513995] thinking
[codex:8513995] **Preparing to read audit file**
[codex:8513995] exec
[codex:8513995] /bin/bash -lc ls in /tmp/codex-multi-bbo14oyn succeeded in 5ms:
[codex:8513995] AUDIT_BUNDLE.txt
[codex:8513995] codex-output-schema.json
[codex:8513995] contracts
[codex:8513995] exec
[codex:8513995] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-bbo14oyn succeeded in 5ms:
[codex:8513995] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:8513995]
[codex:8513995] ================================================================================
[codex:8513995] FILE: contracts/Contract.sol
[codex:8513995] ================================================================================
[codex:8513995] contract PI_QUIZ
[codex:8513995] {
[codex:8513995] function Try(string memory _response) public payable
[codex:8513995] {
[codex:8513995] require(msg.sender == tx.origin);
[codex:8513995]
[codex:8513995] if(responseHash == keccak256(abi.encode(_response)) && msg.value > 1 ether)
[codex:8513995] {
[codex:8513995] payable(msg.sender).transfer(address(this).balance);
[codex:8513995] }
[codex:8513995] }
[codex:8513995]
[codex:8513995] string public question;
[codex:8513995]
[codex:8513995] bytes32 responseHash;
[codex:8513995]
[codex:8513995] thinking
[codex:8513995] **Analyzing potential exploit via on-chain response exposure**
[codex:8513995] exec
[codex:8513995] /bin/bash -lc 'nl -ba contracts/Contract.sol' in /tmp/codex-multi-bbo14oyn succeeded in 5ms:
[codex:8513995] 1 contract PI_QUIZ
[codex:8513995] 2 {
[codex:8513995] 3 function Try(string memory _response) public payable
[codex:8513995] 4 {
[codex:8513995] 5 require(msg.sender == tx.origin);
[codex:8513995] 6
[codex:8513995] 7 if(responseHash == keccak256(abi.encode(_response)) && msg.value > 1 ether)
[codex:8513995] 8 {
[codex:8513995] 9 payable(msg.sender).transfer(address(this).balance);
[codex:8513995] 10 }
[codex:8513995] 11 }
[codex:8513995] 12
[codex:8513995] 13 string public question;
[codex:8513995] 14
[codex:8513995] 15 bytes32 responseHash;
[codex:8513995] 16
[codex:8513995] 17 mapping (bytes32=>bool) admin;
[codex:8513995] 18
[codex:8513995] 19 function Start(string calldata _question, string calldata _response) public payable isAdmin{
[codex:8513995] 20 if(responseHash==0x0){
[codex:8513995]
[codex:8513995] thinking
[codex:8513995] **Preparing detailed vulnerability report**
[codex:8513995] codex
[codex:8513995] {"no_findings":false,"summary":"Plaintext quiz answer is revealed on-chain in Start, enabling anyone to claim the full contract balance via Try.","findings":[{"severity":"high","category":"other","title":"Plaintext answer exposure lets any EOA drain the full balance","exploit_scenario":"1) Monitor mempool or chain for an admin calling Start and read the _response string directly from calldata. 2) Compute keccak256(abi.encode(_response)) locally. 3) Call Try from an EOA with the same _response and send >1 ether. 4) The contract transfers its entire balance to the attacker.","recommendation":"Never publish the plaintext answer on-chain. Use a commit-reveal scheme or only set the precomputed hash via New, and remove/disable Start or require the answer to be provided off-chain.","evidence":"Start stores keccak256(abi.encode(_response)) of a plaintext _response supplied in calldata, and Try pays out the entire balance when a caller submits that response with >1 ether.","locations":["contracts/Contract.sol:19","contracts/Contract.sol:7"]}]}
[codex:8513995] tokens used
[codex:8513995] 13,102
[codex:8513995] {"no_findings":false,"summary":"Plaintext quiz answer is revealed on-chain in Start, enabling anyone to claim the full contract balance via Try.","findings":[{"severity":"high","category":"other","title":"Plaintext answer exposure lets any EOA drain the full balance","exploit_scenario":"1) Monitor mempool or chain for an admin calling Start and read the _response string directly from calldata. 2) Compute keccak256(abi.encode(_response)) locally. 3) Call Try from an EOA with the same _response and send >1 ether. 4) The contract transfers its entire balance to the attacker.","recommendation":"Never publish the plaintext answer on-chain. Use a commit-reveal scheme or only set the precomputed hash via New, and remove/disable Start or require the answer to be provided off-chain.","evidence":"Start stores keccak256(abi.encode(_response)) of a plaintext _response supplied in calldata, and Try pays out the entire balance when a caller submits that response with >1 ether.","locations":["contracts/Contract.sol:19","contracts/Contract.sol:7"]}]}
{
"codex": {
"ran_at": "2026-01-01T14:12:05.688883+00:00",
"returncode": 0
},
"summary": "Plaintext quiz answer is revealed on-chain in Start, enabling anyone to claim the full contract balance via Try.",
"raw_final": {
"summary": "Plaintext quiz answer is revealed on-chain in Start, enabling anyone to claim the full contract balance via Try.",
"findings": [
{
"title": "Plaintext answer exposure lets any EOA drain the full balance",
"category": "other",
"evidence": "Start stores keccak256(abi.encode(_response)) of a plaintext _response supplied in calldata, and Try pays out the entire balance when a caller submits that response with >1 ether.",
"severity": "high",
"locations": [
"contracts/Contract.sol:19",
"contracts/Contract.sol:7"
],
"recommendation": "Never publish the plaintext answer on-chain. Use a commit-reveal scheme or only set the precomputed hash via New, and remove/disable Start or require the answer to be provided off-chain.",
"exploit_scenario": "1) Monitor mempool or chain for an admin calling Start and read the _response string directly from calldata. 2) Compute keccak256(abi.encode(_response)) locally. 3) Call Try from an EOA with the same _response and send >1 ether. 4) The contract transfers its entire balance to the attacker."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x004a 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x3853682c 00000019: EQ 0000001a: PUSH2 0x0058 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0x3fad9ae0 00000024: EQ 00000025: PUSH2 0x006b 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xbedf0f4a 0000002f: EQ 00000030: PUSH2 0x0096 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xc76de3e9 0000003a: EQ 0000003b: PUSH2 0x009e 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xed8df164 00000045: EQ 00000046: PUSH2 0x00b1 00000049: JUMPI 0000004a: JUMPDEST 0000004b: CALLVALUE 0000004c: DUP1 0000004d: ISZERO 0000004e: PUSH2 0x0056 00000051: JUMPI 00000052: PUSH1 0x00 00000054: DUP1 00000055: REVERT 00000056: JUMPDEST 00000057: STOP 00000058: JUMPDEST 00000059: PUSH2 0x0056 0000005c: PUSH2 0x0066 0000005f: CALLDATASIZE 00000060: PUSH1 0x04 00000062: PUSH2 0x0371 00000065: JUMP 00000066: JUMPDEST 00000067: PUSH2 0x00c4 0000006a: JUMP 0000006b: JUMPDEST 0000006c: CALLVALUE 0000006d: DUP1 0000006e: ISZERO 0000006f: PUSH2 0x0077 00000072: JUMPI 00000073: PUSH1 0x00 00000075: DUP1 00000076: REVERT 00000077: JUMPDEST 00000078: POP 00000079: PUSH2 0x0080 0000007c: PUSH2 0x0144 0000007f: JUMP 00000080: JUMPDEST 00000081: PUSH1 0x40 00000083: MLOAD 00000084: PUSH2 0x008d 00000087: SWAP2 00000088: SWAP1 00000089: PUSH2 0x0422 0000008c: JUMP 0000008d: JUMPDEST 0000008e: PUSH1 0x40 00000090: MLOAD 00000091: DUP1 00000092: SWAP2 00000093: SUB 00000094: SWAP1 00000095: RETURN 00000096: JUMPDEST 00000097: PUSH2 0x0056 0000009a: PUSH2 0x01d2 0000009d: JUMP 0000009e: JUMPDEST 0000009f: PUSH2 0x0056 000000a2: PUSH2 0x00ac 000000a5: CALLDATASIZE 000000a6: PUSH1 0x04 000000a8: PUSH2 0x04b9 000000ab: JUMP 000000ac: JUMPDEST 000000ad: PUSH2 0x0257 000000b0: JUMP 000000b1: JUMPDEST 000000b2: PUSH2 0x0056 000000b5: PUSH2 0x00bf 000000b8: CALLDATASIZE 000000b9: PUSH1 0x04 000000bb: PUSH2 0x0525 000000be: JUMP 000000bf: JUMPDEST 000000c0: PUSH2 0x02f5 000000c3: JUMP 000000c4: JUMPDEST 000000c5: CALLER 000000c6: ORIGIN 000000c7: EQ 000000c8: PUSH2 0x00d0 000000cb: JUMPI 000000cc: PUSH1 0x00 000000ce: DUP1 000000cf: REVERT 000000d0: JUMPDEST 000000d1: DUP1 000000d2: PUSH1 0x40 000000d4: MLOAD 000000d5: PUSH1 0x20 000000d7: ADD 000000d8: PUSH2 0x00e1 000000db: SWAP2 000000dc: SWAP1 000000dd: PUSH2 0x0422 000000e0: JUMP 000000e1: JUMPDEST 000000e2: PUSH1 0x40 000000e4: MLOAD 000000e5: PUSH1 0x20 000000e7: DUP2 000000e8: DUP4 000000e9: SUB 000000ea: SUB 000000eb: DUP2 000000ec: MSTORE 000000ed: SWAP1 000000ee: PUSH1 0x40 000000f0: MSTORE 000000f1: DUP1 000000f2: MLOAD 000000f3: SWAP1 000000f4: PUSH1 0x20 000000f6: ADD 000000f7: KECCAK256 000000f8: PUSH1 0x01 000000fa: SLOAD 000000fb: EQ 000000fc: DUP1 000000fd: ISZERO 000000fe: PUSH2 0x010e 00000101: JUMPI 00000102: POP 00000103: PUSH8 0x0de0b6b3a7640000 0000010c: CALLVALUE 0000010d: GT 0000010e: JUMPDEST 0000010f: ISZERO 00000110: PUSH2 0x0141 00000113: JUMPI 00000114: PUSH1 0x40 00000116: MLOAD 00000117: CALLER 00000118: SWAP1 00000119: SELFBALANCE 0000011a: DUP1 0000011b: ISZERO 0000011c: PUSH2 0x08fc 0000011f: MUL 00000120: SWAP2 00000121: PUSH1 0x00 00000123: DUP2 00000124: DUP2 00000125: DUP2 00000126: DUP6 00000127: DUP9 00000128: DUP9 00000129: CALL 0000012a: SWAP4 0000012b: POP 0000012c: POP 0000012d: POP 0000012e: POP 0000012f: ISZERO 00000130: DUP1 00000131: ISZERO 00000132: PUSH2 0x013f 00000135: JUMPI 00000136: RETURNDATASIZE 00000137: PUSH1 0x00 00000139: DUP1 0000013a: RETURNDATACOPY 0000013b: RETURNDATASIZE 0000013c: PUSH1 0x00 0000013e: REVERT 0000013f: JUMPDEST 00000140: POP 00000141: JUMPDEST 00000142: POP 00000143: JUMP 00000144: JUMPDEST 00000145: PUSH1 0x00 00000147: DUP1 00000148: SLOAD 00000149: PUSH2 0x0151 0000014c: SWAP1 0000014d: PUSH2 0x0571 00000150: JUMP 00000151: JUMPDEST 00000152: DUP1 00000153: PUSH1 0x1f 00000155: ADD 00000156: PUSH1 0x20 00000158: DUP1 00000159: SWAP2 0000015a: DIV 0000015b: MUL 0000015c: PUSH1 0x20 0000015e: ADD 0000015f: PUSH1 0x40 00000161: MLOAD 00000162: SWAP1 00000163: DUP2 00000164: ADD 00000165: PUSH1 0x40 00000167: MSTORE 00000168: DUP1 00000169: SWAP3 0000016a: SWAP2 0000016b: SWAP1 0000016c: DUP2 0000016d: DUP2 0000016e: MSTORE 0000016f: PUSH1 0x20 00000171: ADD 00000172: DUP3 00000173: DUP1 00000174: SLOAD 00000175: PUSH2 0x017d 00000178: SWAP1 00000179: PUSH2 0x0571 0000017c: JUMP 0000017d: JUMPDEST 0000017e: DUP1 0000017f: ISZERO 00000180: PUSH2 0x01ca 00000183: JUMPI 00000184: DUP1 00000185: PUSH1 0x1f 00000187: LT 00000188: PUSH2 0x019f 0000018b: JUMPI 0000018c: PUSH2 0x0100 0000018f: DUP1 00000190: DUP4 00000191: SLOAD 00000192: DIV 00000193: MUL 00000194: DUP4 00000195: MSTORE 00000196: SWAP2 00000197: PUSH1 0x20 00000199: ADD 0000019a: SWAP2 0000019b: PUSH2 0x01ca 0000019e: JUMP 0000019f: JUMPDEST 000001a0: DUP3 000001a1: ADD 000001a2: SWAP2 000001a3: SWAP1 000001a4: PUSH1 0x00 000001a6: MSTORE 000001a7: PUSH1 0x20 000001a9: PUSH1 0x00 000001ab: KECCAK256 000001ac: SWAP1 000001ad: JUMPDEST 000001ae: DUP2 000001af: SLOAD 000001b0: DUP2 000001b1: MSTORE 000001b2: SWAP1 000001b3: PUSH1 0x01 000001b5: ADD 000001b6: SWAP1 000001b7: PUSH1 0x20 000001b9: ADD 000001ba: DUP1 000001bb: DUP4 000001bc: GT 000001bd: PUSH2 0x01ad 000001c0: JUMPI 000001c1: DUP3 000001c2: SWAP1 000001c3: SUB 000001c4: PUSH1 0x1f 000001c6: AND 000001c7: DUP3 000001c8: ADD 000001c9: SWAP2 000001ca: JUMPDEST 000001cb: POP 000001cc: POP 000001cd: POP 000001ce: POP 000001cf: POP 000001d0: DUP2 000001d1: JUMP 000001d2: JUMPDEST 000001d3: PUSH1 0x40 000001d5: MLOAD 000001d6: PUSH1 0x01 000001d8: PUSH1 0x01 000001da: PUSH1 0x60 000001dc: SHL 000001dd: SUB 000001de: NOT 000001df: CALLER 000001e0: PUSH1 0x60 000001e2: SHL 000001e3: AND 000001e4: PUSH1 0x20 000001e6: DUP3 000001e7: ADD 000001e8: MSTORE 000001e9: PUSH1 0x02 000001eb: SWAP1 000001ec: PUSH1 0x00 000001ee: SWAP1 000001ef: PUSH1 0x34 000001f1: ADD 000001f2: PUSH1 0x40 000001f4: DUP1 000001f5: MLOAD 000001f6: PUSH1 0x1f 000001f8: NOT 000001f9: DUP2 000001fa: DUP5 000001fb: SUB 000001fc: ADD 000001fd: DUP2 000001fe: MSTORE 000001ff: SWAP2 00000200: DUP2 00000201: MSTORE 00000202: DUP2 00000203: MLOAD 00000204: PUSH1 0x20 00000206: SWAP3 00000207: DUP4 00000208: ADD 00000209: KECCAK256 0000020a: DUP4 0000020b: MSTORE 0000020c: SWAP1 0000020d: DUP3 0000020e: ADD 0000020f: SWAP3 00000210: SWAP1 00000211: SWAP3 00000212: MSTORE 00000213: ADD 00000214: PUSH1 0x00 00000216: KECCAK256 00000217: SLOAD 00000218: PUSH1 0xff 0000021a: AND 0000021b: PUSH2 0x0223 0000021e: JUMPI 0000021f: PUSH1 0x00 00000221: DUP1 00000222: REVERT 00000223: JUMPDEST 00000224: PUSH1 0x40 00000226: MLOAD 00000227: CALLER 00000228: SWAP1 00000229: SELFBALANCE 0000022a: DUP1 0000022b: ISZERO 0000022c: PUSH2 0x08fc 0000022f: MUL 00000230: SWAP2 00000231: PUSH1 0x00 00000233: DUP2 00000234: DUP2 00000235: DUP2 00000236: DUP6 00000237: DUP9 00000238: DUP9 00000239: CALL 0000023a: SWAP4 0000023b: POP 0000023c: POP 0000023d: POP 0000023e: POP 0000023f: ISZERO 00000240: DUP1 00000241: ISZERO 00000242: PUSH2 0x024f 00000245: JUMPI 00000246: RETURNDATASIZE 00000247: PUSH1 0x00 00000249: DUP1 0000024a: RETURNDATACOPY 0000024b: RETURNDATASIZE 0000024c: PUSH1 0x00 0000024e: REVERT 0000024f: JUMPDEST 00000250: POP 00000251: PUSH1 0x00 00000253: PUSH1 0x01 00000255: SSTORE 00000256: JUMP 00000257: JUMPDEST 00000258: PUSH1 0x40 0000025a: MLOAD 0000025b: PUSH1 0x01 0000025d: PUSH1 0x01 0000025f: PUSH1 0x60 00000261: SHL 00000262: SUB 00000263: NOT 00000264: CALLER 00000265: PUSH1 0x60 00000267: SHL 00000268: AND 00000269: PUSH1 0x20 0000026b: DUP3 0000026c: ADD 0000026d: MSTORE 0000026e: PUSH1 0x02 00000270: SWAP1 00000271: PUSH1 0x00 00000273: SWAP1 00000274: PUSH1 0x34 00000276: ADD 00000277: PUSH1 0x40 00000279: DUP1 0000027a: MLOAD 0000027b: PUSH1 0x1f 0000027d: NOT 0000027e: DUP2 0000027f: DUP5 00000280: SUB 00000281: ADD 00000282: DUP2 00000283: MSTORE 00000284: SWAP2 00000285: DUP2 00000286: MSTORE 00000287: DUP2 00000288: MLOAD 00000289: PUSH1 0x20 0000028b: SWAP3 0000028c: DUP4 0000028d: ADD 0000028e: KECCAK256 0000028f: DUP4 00000290: MSTORE 00000291: SWAP1 00000292: DUP3 00000293: ADD 00000294: SWAP3 00000295: SWAP1 00000296: SWAP3 00000297: MSTORE 00000298: ADD 00000299: PUSH1 0x00 0000029b: KECCAK256 0000029c: SLOAD 0000029d: PUSH1 0xff 0000029f: AND 000002a0: PUSH2 0x02a8 000002a3: JUMPI 000002a4: PUSH1 0x00 000002a6: DUP1 000002a7: REVERT 000002a8: JUMPDEST 000002a9: PUSH1 0x01 000002ab: SLOAD 000002ac: PUSH1 0x00 000002ae: SUB 000002af: PUSH2 0x02ef 000002b2: JUMPI 000002b3: DUP2 000002b4: DUP2 000002b5: PUSH1 0x40 000002b7: MLOAD 000002b8: PUSH1 0x20 000002ba: ADD 000002bb: PUSH2 0x02c5 000002be: SWAP3 000002bf: SWAP2 000002c0: SWAP1 000002c1: PUSH2 0x05ab 000002c4: JUMP 000002c5: JUMPDEST 000002c6: PUSH1 0x40 000002c8: DUP1 000002c9: MLOAD 000002ca: PUSH1 0x1f 000002cc: NOT 000002cd: DUP2 000002ce: DUP5 000002cf: SUB 000002d0: ADD 000002d1: DUP2 000002d2: MSTORE 000002d3: SWAP2 000002d4: SWAP1 000002d5: MSTORE 000002d6: DUP1 000002d7: MLOAD 000002d8: PUSH1 0x20 000002da: SWAP1 000002db: SWAP2 000002dc: ADD 000002dd: KECCAK256 000002de: PUSH1 0x01 000002e0: SSTORE 000002e1: PUSH1 0x00 000002e3: PUSH2 0x02ed 000002e6: DUP5 000002e7: DUP7 000002e8: DUP4 000002e9: PUSH2 0x0629 000002ec: JUMP 000002ed: JUMPDEST 000002ee: POP 000002ef: JUMPDEST 000002f0: POP 000002f1: POP 000002f2: POP 000002f3: POP 000002f4: JUMP 000002f5: JUMPDEST 000002f6: PUSH1 0x40 000002f8: MLOAD 000002f9: PUSH1 0x01 000002fb: PUSH1 0x01 000002fd: PUSH1 0x60 000002ff: SHL 00000300: SUB 00000301: NOT 00000302: CALLER 00000303: PUSH1 0x60 00000305: SHL 00000306: AND 00000307: PUSH1 0x20 00000309: DUP3 0000030a: ADD 0000030b: MSTORE 0000030c: PUSH1 0x02 0000030e: SWAP1 0000030f: PUSH1 0x00 00000311: SWAP1 00000312: PUSH1 0x34 00000314: ADD 00000315: PUSH1 0x40 00000317: DUP1 00000318: MLOAD 00000319: PUSH1 0x1f 0000031b: NOT 0000031c: DUP2 0000031d: DUP5 0000031e: SUB 0000031f: ADD 00000320: DUP2 00000321: MSTORE 00000322: SWAP2 00000323: DUP2 00000324: MSTORE 00000325: DUP2 00000326: MLOAD 00000327: PUSH1 0x20 00000329: SWAP3 0000032a: DUP4 0000032b: ADD 0000032c: KECCAK256 0000032d: DUP4 0000032e: MSTORE 0000032f: SWAP1 00000330: DUP3 00000331: ADD 00000332: SWAP3 00000333: SWAP1 00000334: SWAP3 00000335: MSTORE 00000336: ADD 00000337: PUSH1 0x00 00000339: KECCAK256 0000033a: SLOAD 0000033b: PUSH1 0xff 0000033d: AND 0000033e: PUSH2 0x0346 00000341: JUMPI 00000342: PUSH1 0x00 00000344: DUP1 00000345: REVERT 00000346: JUMPDEST 00000347: PUSH1 0x00 00000349: PUSH2 0x0353 0000034c: DUP4 0000034d: DUP6 0000034e: DUP4 0000034f: PUSH2 0x0629 00000352: JUMP 00000353: JUMPDEST 00000354: POP 00000355: PUSH1 0x01 00000357: SSTORE 00000358: POP 00000359: POP 0000035a: JUMP 0000035b: JUMPDEST 0000035c: PUSH4 0x4e487b71 00000361: PUSH1 0xe0 00000363: SHL 00000364: PUSH1 0x00 00000366: MSTORE 00000367: PUSH1 0x41 00000369: PUSH1 0x04 0000036b: MSTORE 0000036c: PUSH1 0x24 0000036e: PUSH1 0x00 00000370: REVERT 00000371: JUMPDEST 00000372: PUSH1 0x00 00000374: PUSH1 0x20 00000376: DUP3 00000377: DUP5 00000378: SUB 00000379: SLT 0000037a: ISZERO 0000037b: PUSH2 0x0383 0000037e: JUMPI 0000037f: PUSH1 0x00 00000381: DUP1 00000382: REVERT 00000383: JUMPDEST 00000384: DUP2 00000385: CALLDATALOAD 00000386: PUSH8 0xffffffffffffffff 0000038f: DUP1 00000390: DUP3 00000391: GT 00000392: ISZERO 00000393: PUSH2 0x039b 00000396: JUMPI 00000397: PUSH1 0x00 00000399: DUP1 0000039a: REVERT 0000039b: JUMPDEST 0000039c: DUP2 0000039d: DUP5 0000039e: ADD 0000039f: SWAP2 000003a0: POP 000003a1: DUP5 000003a2: PUSH1 0x1f 000003a4: DUP4 000003a5: ADD 000003a6: SLT 000003a7: PUSH2 0x03af 000003aa: JUMPI 000003ab: PUSH1 0x00 000003ad: DUP1 000003ae: REVERT 000003af: JUMPDEST 000003b0: DUP2 000003b1: CALLDATALOAD 000003b2: DUP2 000003b3: DUP2 000003b4: GT 000003b5: ISZERO 000003b6: PUSH2 0x03c1 000003b9: JUMPI 000003ba: PUSH2 0x03c1 000003bd: PUSH2 0x035b 000003c0: JUMP 000003c1: JUMPDEST 000003c2: PUSH1 0x40 000003c4: MLOAD 000003c5: PUSH1 0x1f 000003c7: DUP3 000003c8: ADD 000003c9: PUSH1 0x1f 000003cb: NOT 000003cc: SWAP1 000003cd: DUP2 000003ce: AND 000003cf: PUSH1 0x3f 000003d1: ADD 000003d2: AND 000003d3: DUP2 000003d4: ADD 000003d5: SWAP1 000003d6: DUP4 000003d7: DUP3 000003d8: GT 000003d9: DUP2 000003da: DUP4 000003db: LT 000003dc: OR 000003dd: ISZERO 000003de: PUSH2 0x03e9 000003e1: JUMPI 000003e2: PUSH2 0x03e9 000003e5: PUSH2 0x035b 000003e8: JUMP 000003e9: JUMPDEST 000003ea: DUP2 000003eb: PUSH1 0x40 000003ed: MSTORE 000003ee: DUP3 000003ef: DUP2 000003f0: MSTORE 000003f1: DUP8 000003f2: PUSH1 0x20 000003f4: DUP5 000003f5: DUP8 000003f6: ADD 000003f7: ADD 000003f8: GT 000003f9: ISZERO 000003fa: PUSH2 0x0402 000003fd: JUMPI 000003fe: PUSH1 0x00 00000400: DUP1 00000401: REVERT 00000402: JUMPDEST 00000403: DUP3 00000404: PUSH1 0x20 00000406: DUP7 00000407: ADD 00000408: PUSH1 0x20 0000040a: DUP4 0000040b: ADD 0000040c: CALLDATACOPY 0000040d: PUSH1 0x00 0000040f: SWAP3 00000410: DUP2 00000411: ADD 00000412: PUSH1 0x20 00000414: ADD 00000415: SWAP3 00000416: SWAP1 00000417: SWAP3 00000418: MSTORE 00000419: POP 0000041a: SWAP6 0000041b: SWAP5 0000041c: POP 0000041d: POP 0000041e: POP 0000041f: POP 00000420: POP 00000421: JUMP 00000422: JUMPDEST 00000423: PUSH1 0x00 00000425: PUSH1 0x20 00000427: DUP1 00000428: DUP4 00000429: MSTORE 0000042a: DUP4 0000042b: MLOAD 0000042c: DUP1 0000042d: DUP3 0000042e: DUP6 0000042f: ADD 00000430: MSTORE 00000431: PUSH1 0x00 00000433: JUMPDEST 00000434: DUP2 00000435: DUP2 00000436: LT 00000437: ISZERO 00000438: PUSH2 0x044f 0000043b: JUMPI 0000043c: DUP6 0000043d: DUP2 0000043e: ADD 0000043f: DUP4 00000440: ADD 00000441: MLOAD 00000442: DUP6 00000443: DUP3 00000444: ADD 00000445: PUSH1 0x40 00000447: ADD 00000448: MSTORE 00000449: DUP3 0000044a: ADD 0000044b: PUSH2 0x0433 0000044e: JUMP 0000044f: JUMPDEST 00000450: POP 00000451: PUSH1 0x00 00000453: PUSH1 0x40 00000455: DUP3 00000456: DUP7 00000457: ADD 00000458: ADD 00000459: MSTORE 0000045a: PUSH1 0x40 0000045c: PUSH1 0x1f 0000045e: NOT 0000045f: PUSH1 0x1f 00000461: DUP4 00000462: ADD 00000463: AND 00000464: DUP6 00000465: ADD 00000466: ADD 00000467: SWAP3 00000468: POP 00000469: POP 0000046a: POP 0000046b: SWAP3 0000046c: SWAP2 0000046d: POP 0000046e: POP 0000046f: JUMP 00000470: JUMPDEST 00000471: PUSH1 0x00 00000473: DUP1 00000474: DUP4 00000475: PUSH1 0x1f 00000477: DUP5 00000478: ADD 00000479: SLT 0000047a: PUSH2 0x0482 0000047d: JUMPI 0000047e: PUSH1 0x00 00000480: DUP1 00000481: REVERT 00000482: JUMPDEST 00000483: POP 00000484: DUP2 00000485: CALLDATALOAD 00000486: PUSH8 0xffffffffffffffff 0000048f: DUP2 00000490: GT 00000491: ISZERO 00000492: PUSH2 0x049a 00000495: JUMPI 00000496: PUSH1 0x00 00000498: DUP1 00000499: REVERT 0000049a: JUMPDEST 0000049b: PUSH1 0x20 0000049d: DUP4 0000049e: ADD 0000049f: SWAP2 000004a0: POP 000004a1: DUP4 000004a2: PUSH1 0x20 000004a4: DUP3 000004a5: DUP6 000004a6: ADD 000004a7: ADD 000004a8: GT 000004a9: ISZERO 000004aa: PUSH2 0x04b2 000004ad: JUMPI 000004ae: PUSH1 0x00 000004b0: DUP1 000004b1: REVERT 000004b2: JUMPDEST 000004b3: SWAP3 000004b4: POP 000004b5: SWAP3 000004b6: SWAP1 000004b7: POP 000004b8: JUMP 000004b9: JUMPDEST 000004ba: PUSH1 0x00 000004bc: DUP1 000004bd: PUSH1 0x00 000004bf: DUP1 000004c0: PUSH1 0x40 000004c2: DUP6 000004c3: DUP8 000004c4: SUB 000004c5: SLT 000004c6: ISZERO 000004c7: PUSH2 0x04cf 000004ca: JUMPI 000004cb: PUSH1 0x00 000004cd: DUP1 000004ce: REVERT 000004cf: JUMPDEST 000004d0: DUP5 000004d1: CALLDATALOAD 000004d2: PUSH8 0xffffffffffffffff 000004db: DUP1 000004dc: DUP3 000004dd: GT 000004de: ISZERO 000004df: PUSH2 0x04e7 000004e2: JUMPI 000004e3: PUSH1 0x00 000004e5: DUP1 000004e6: REVERT 000004e7: JUMPDEST 000004e8: PUSH2 0x04f3 000004eb: DUP9 000004ec: DUP4 000004ed: DUP10 000004ee: ADD 000004ef: PUSH2 0x0470 000004f2: JUMP 000004f3: JUMPDEST 000004f4: SWAP1 000004f5: SWAP7 000004f6: POP 000004f7: SWAP5 000004f8: POP 000004f9: PUSH1 0x20 000004fb: DUP8 000004fc: ADD 000004fd: CALLDATALOAD 000004fe: SWAP2 000004ff: POP 00000500: DUP1 00000501: DUP3 00000502: GT 00000503: ISZERO 00000504: PUSH2 0x050c 00000507: JUMPI 00000508: PUSH1 0x00 0000050a: DUP1 0000050b: REVERT 0000050c: JUMPDEST 0000050d: POP 0000050e: PUSH2 0x0519 00000511: DUP8 00000512: DUP3 00000513: DUP9 00000514: ADD 00000515: PUSH2 0x0470 00000518: JUMP 00000519: JUMPDEST 0000051a: SWAP6 0000051b: SWAP9 0000051c: SWAP5 0000051d: SWAP8 0000051e: POP 0000051f: SWAP6 00000520: POP 00000521: POP 00000522: POP 00000523: POP 00000524: JUMP 00000525: JUMPDEST 00000526: PUSH1 0x00 00000528: DUP1 00000529: PUSH1 0x00 0000052b: PUSH1 0x40 0000052d: DUP5 0000052e: DUP7 0000052f: SUB 00000530: SLT 00000531: ISZERO 00000532: PUSH2 0x053a 00000535: JUMPI 00000536: PUSH1 0x00 00000538: DUP1 00000539: REVERT 0000053a: JUMPDEST 0000053b: DUP4 0000053c: CALLDATALOAD 0000053d: PUSH8 0xffffffffffffffff 00000546: DUP2 00000547: GT 00000548: ISZERO 00000549: PUSH2 0x0551 0000054c: JUMPI 0000054d: PUSH1 0x00 0000054f: DUP1 00000550: REVERT 00000551: JUMPDEST 00000552: PUSH2 0x055d 00000555: DUP7 00000556: DUP3 00000557: DUP8 00000558: ADD 00000559: PUSH2 0x0470 0000055c: JUMP 0000055d: JUMPDEST 0000055e: SWAP1 0000055f: SWAP8 00000560: SWAP1 00000561: SWAP7 00000562: POP 00000563: PUSH1 0x20 00000565: SWAP6 00000566: SWAP1 00000567: SWAP6 00000568: ADD 00000569: CALLDATALOAD 0000056a: SWAP5 0000056b: SWAP4 0000056c: POP 0000056d: POP 0000056e: POP 0000056f: POP 00000570: JUMP 00000571: JUMPDEST 00000572: PUSH1 0x01 00000574: DUP2 00000575: DUP2 00000576: SHR 00000577: SWAP1 00000578: DUP3 00000579: AND 0000057a: DUP1 0000057b: PUSH2 0x0585 0000057e: JUMPI 0000057f: PUSH1 0x7f 00000581: DUP3 00000582: AND 00000583: SWAP2 00000584: POP 00000585: JUMPDEST 00000586: PUSH1 0x20 00000588: DUP3 00000589: LT 0000058a: DUP2 0000058b: SUB 0000058c: PUSH2 0x05a5 0000058f: JUMPI 00000590: PUSH4 0x4e487b71 00000595: PUSH1 0xe0 00000597: SHL 00000598: PUSH1 0x00 0000059a: MSTORE 0000059b: PUSH1 0x22 0000059d: PUSH1 0x04 0000059f: MSTORE 000005a0: PUSH1 0x24 000005a2: PUSH1 0x00 000005a4: REVERT 000005a5: JUMPDEST 000005a6: POP 000005a7: SWAP2 000005a8: SWAP1 000005a9: POP 000005aa: JUMP 000005ab: JUMPDEST 000005ac: PUSH1 0x20 000005ae: DUP2 000005af: MSTORE 000005b0: DUP2 000005b1: PUSH1 0x20 000005b3: DUP3 000005b4: ADD 000005b5: MSTORE 000005b6: DUP2 000005b7: DUP4 000005b8: PUSH1 0x40 000005ba: DUP4 000005bb: ADD 000005bc: CALLDATACOPY 000005bd: PUSH1 0x00 000005bf: DUP2 000005c0: DUP4 000005c1: ADD 000005c2: PUSH1 0x40 000005c4: SWAP1 000005c5: DUP2 000005c6: ADD 000005c7: SWAP2 000005c8: SWAP1 000005c9: SWAP2 000005ca: MSTORE 000005cb: PUSH1 0x1f 000005cd: SWAP1 000005ce: SWAP3 000005cf: ADD 000005d0: PUSH1 0x1f 000005d2: NOT 000005d3: AND 000005d4: ADD 000005d5: ADD 000005d6: SWAP2 000005d7: SWAP1 000005d8: POP 000005d9: JUMP 000005da: JUMPDEST 000005db: PUSH1 0x1f 000005dd: DUP3 000005de: GT 000005df: ISZERO 000005e0: PUSH2 0x0624 000005e3: JUMPI 000005e4: PUSH1 0x00 000005e6: DUP2 000005e7: DUP2 000005e8: MSTORE 000005e9: PUSH1 0x20 000005eb: DUP2 000005ec: KECCAK256 000005ed: PUSH1 0x1f 000005ef: DUP6 000005f0: ADD 000005f1: PUSH1 0x05 000005f3: SHR 000005f4: DUP2 000005f5: ADD 000005f6: PUSH1 0x20 000005f8: DUP7 000005f9: LT 000005fa: ISZERO 000005fb: PUSH2 0x0601 000005fe: JUMPI 000005ff: POP 00000600: DUP1 00000601: JUMPDEST 00000602: PUSH1 0x1f 00000604: DUP6 00000605: ADD 00000606: PUSH1 0x05 00000608: SHR 00000609: DUP3 0000060a: ADD 0000060b: SWAP2 0000060c: POP 0000060d: JUMPDEST 0000060e: DUP2 0000060f: DUP2 00000610: LT 00000611: ISZERO 00000612: PUSH2 0x0620 00000615: JUMPI 00000616: DUP3 00000617: DUP2 00000618: SSTORE 00000619: PUSH1 0x01 0000061b: ADD 0000061c: PUSH2 0x060d 0000061f: JUMP 00000620: JUMPDEST 00000621: POP 00000622: POP 00000623: POP 00000624: JUMPDEST 00000625: POP 00000626: POP 00000627: POP 00000628: JUMP 00000629: JUMPDEST 0000062a: PUSH8 0xffffffffffffffff 00000633: DUP4 00000634: GT 00000635: ISZERO 00000636: PUSH2 0x0641 00000639: JUMPI 0000063a: PUSH2 0x0641 0000063d: PUSH2 0x035b 00000640: JUMP 00000641: JUMPDEST 00000642: PUSH2 0x0655 00000645: DUP4 00000646: PUSH2 0x064f 00000649: DUP4 0000064a: SLOAD 0000064b: PUSH2 0x0571 0000064e: JUMP 0000064f: JUMPDEST 00000650: DUP4 00000651: PUSH2 0x05da 00000654: JUMP 00000655: JUMPDEST 00000656: PUSH1 0x00 00000658: PUSH1 0x1f 0000065a: DUP5 0000065b: GT 0000065c: PUSH1 0x01 0000065e: DUP2 0000065f: EQ 00000660: PUSH2 0x0689 00000663: JUMPI 00000664: PUSH1 0x00 00000666: DUP6 00000667: ISZERO 00000668: PUSH2 0x0671 0000066b: JUMPI 0000066c: POP 0000066d: DUP4 0000066e: DUP3 0000066f: ADD 00000670: CALLDATALOAD 00000671: JUMPDEST 00000672: PUSH1 0x00 00000674: NOT 00000675: PUSH1 0x03 00000677: DUP8 00000678: SWAP1 00000679: SHL 0000067a: SHR 0000067b: NOT 0000067c: AND 0000067d: PUSH1 0x01 0000067f: DUP7 00000680: SWAP1 00000681: SHL 00000682: OR 00000683: DUP4 00000684: SSTORE 00000685: PUSH2 0x02ed 00000688: JUMP 00000689: JUMPDEST 0000068a: PUSH1 0x00 0000068c: DUP4 0000068d: DUP2 0000068e: MSTORE 0000068f: PUSH1 0x20 00000691: SWAP1 00000692: KECCAK256 00000693: PUSH1 0x1f 00000695: NOT 00000696: DUP7 00000697: AND 00000698: SWAP1 00000699: DUP4 0000069a: JUMPDEST 0000069b: DUP3 0000069c: DUP2 0000069d: LT 0000069e: ISZERO 0000069f: PUSH2 0x06ba 000006a2: JUMPI 000006a3: DUP7 000006a4: DUP6 000006a5: ADD 000006a6: CALLDATALOAD 000006a7: DUP3 000006a8: SSTORE 000006a9: PUSH1 0x20 000006ab: SWAP5 000006ac: DUP6 000006ad: ADD 000006ae: SWAP5 000006af: PUSH1 0x01 000006b1: SWAP1 000006b2: SWAP3 000006b3: ADD 000006b4: SWAP2 000006b5: ADD 000006b6: PUSH2 0x069a 000006b9: JUMP 000006ba: JUMPDEST 000006bb: POP 000006bc: DUP7 000006bd: DUP3 000006be: LT 000006bf: ISZERO 000006c0: PUSH2 0x06d7 000006c3: JUMPI 000006c4: PUSH1 0x00 000006c6: NOT 000006c7: PUSH1 0xf8 000006c9: DUP9 000006ca: PUSH1 0x03 000006cc: SHL 000006cd: AND 000006ce: SHR 000006cf: NOT 000006d0: DUP5 000006d1: DUP8 000006d2: ADD 000006d3: CALLDATALOAD 000006d4: AND 000006d5: DUP2 000006d6: SSTORE 000006d7: JUMPDEST 000006d8: POP 000006d9: POP 000006da: PUSH1 0x01 000006dc: DUP6 000006dd: PUSH1 0x01 000006df: SHL 000006e0: ADD 000006e1: DUP4 000006e2: SSTORE 000006e3: POP 000006e4: POP 000006e5: POP 000006e6: POP 000006e7: POP 000006e8: JUMP 000006e9: INVALID 000006ea: LOG2 000006eb: PUSH5 0x6970667358 000006f1: UNKNOWN(0x22) 000006f2: SLT 000006f3: KECCAK256 000006f4: SWAP13 000006f5: DUP5 000006f6: UNKNOWN(0xA7) 000006f7: UNKNOWN(0xF9) 000006f8: ORIGIN 000006f9: UNKNOWN(0xF6) 000006fa: TSTORE 000006fb: LT 000006fc: PUSH23 0x22edaf5026bc25c6638c4250a3e0c66c899f2e07b7c363 00000714: PUSH5 0x736f6c6343 0000071a: STOP 0000071b: ADDMOD 0000071c: SGT 0000071d: STOP 0000071e: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | codex | Plaintext answer exposure lets any EOA drain the full balance | 85 | no | — |
viewevidence_json{
"evidence": "Start stores keccak256(abi.encode(_response)) of a plaintext _response supplied in calldata, and Try pays out the entire balance when a caller submits that response with >1 ether.",
"locations": [
"contracts/Contract.sol:19",
"contracts/Contract.sol:7"
],
"recommendation": "Never publish the plaintext answer on-chain. Use a commit-reveal scheme or only set the precomputed hash via New, and remove/disable Start or require the answer to be provided off-chain.",
"exploit_scenario": "1) Monitor mempool or chain for an admin calling Start and read the _response string directly from calldata. 2) Compute keccak256(abi.encode(_response)) locally. 3) Call Try from an EOA with the same _response and send >1 ether. 4) The contract transfers its entire balance to the attacker."
}
|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_json{
"reason": "missing sink mapping",
"status": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x3853682c",
"selector": "0x3853682c",
"calldata_variants": [
"0x3853682c",
"0x3853682c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3fad9ae0",
"selector": "0x3fad9ae0",
"calldata_variants": [
"0x3fad9ae0",
"0x3fad9ae00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbedf0f4a",
"selector": "0xbedf0f4a",
"calldata_variants": [
"0xbedf0f4a",
"0xbedf0f4a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc76de3e9",
"selector": "0xc76de3e9",
"calldata_variants": [
"0xc76de3e9",
"0xc76de3e90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xed8df164",
"selector": "0xed8df164",
"calldata_variants": [
"0xed8df164",
"0xed8df1640000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 199,
"type": "tx_origin_used"
},
{
"pc": 198,
"type": "tx_origin_used"
},
{
"pc": 1784,
"type": "tx_origin_used"
}
]
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x9f1f786bbfa99093992c58a9484f9422e40a1576c4bd2770b0ce484ca10d2a5c
call_targets:
0x821ab5215e7970480d1d9c145632e5c15d3b8bbb
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x9f1f786bbfa99093992c58a9484f9422e40a1576c4bd2770b0ce484ca10d2a5c",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x821ab5215e7970480d1d9c145632e5c15d3b8bbb"
],
"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": "0x3853682c",
"selector": "0x3853682c",
"calldata_variants": [
"0x3853682c",
"0x3853682c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3fad9ae0",
"selector": "0x3fad9ae0",
"calldata_variants": [
"0x3fad9ae0",
"0x3fad9ae00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbedf0f4a",
"selector": "0xbedf0f4a",
"calldata_variants": [
"0xbedf0f4a",
"0xbedf0f4a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc76de3e9",
"selector": "0xc76de3e9",
"calldata_variants": [
"0xc76de3e9",
"0xc76de3e90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xed8df164",
"selector": "0xed8df164",
"calldata_variants": [
"0xed8df164",
"0xed8df1640000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 297,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 569,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 2,
"guards_detected": [
{
"pc": 199,
"type": "tx_origin_used"
},
{
"pc": 198,
"type": "tx_origin_used"
},
{
"pc": 1784,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 2
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x9f1f786bbfa99093992c58a9484f9422e40a1576c4bd2770b0ce484ca10d2a5c
call_targets:
0x821ab5215e7970480d1d9c145632e5c15d3b8bbb
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x9f1f786bbfa99093992c58a9484f9422e40a1576c4bd2770b0ce484ca10d2a5c",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x821ab5215e7970480d1d9c145632e5c15d3b8bbb"
],
"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": "0x3853682c",
"selector": "0x3853682c",
"calldata_variants": [
"0x3853682c",
"0x3853682c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3fad9ae0",
"selector": "0x3fad9ae0",
"calldata_variants": [
"0x3fad9ae0",
"0x3fad9ae00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbedf0f4a",
"selector": "0xbedf0f4a",
"calldata_variants": [
"0xbedf0f4a",
"0xbedf0f4a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc76de3e9",
"selector": "0xc76de3e9",
"calldata_variants": [
"0xc76de3e9",
"0xc76de3e90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xed8df164",
"selector": "0xed8df164",
"calldata_variants": [
"0xed8df164",
"0xed8df1640000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 297,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 569,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 2,
"guards_detected": [
{
"pc": 199,
"type": "tx_origin_used"
},
{
"pc": 198,
"type": "tx_origin_used"
},
{
"pc": 1784,
"type": "tx_origin_used"
}
]
}
|