019d5666-7228-7302-a900-09a40daa9b14
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 |
|---|---|---|---|---|
| 42883 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 42884 | proxy.resolve | complete | 1 / 3 | 1 week ago |
| 42885 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 42886 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 42887 | capability.graph | complete | 1 / 3 | 1 week ago |
| 42888 | detector.run | complete | 1 / 3 | 1 week ago |
| 42889 | validation.fork | complete | 1 / 3 | 1 week ago |
| 42981 | report.consolidate | complete | 1 / 6 | 1 week ago |
| 42982 | tool.slither | failed | 2 / 2 | 1 week ago |
{
"status": "not_proxy"
}
Traceback (most recent call last):
File "/var/www/tripwire/worker/worker.py", line 198, in main
payload = dispatch_job(job_type, job_id, job_meta, run_data, config, laravel_client)
File "/var/www/tripwire/worker/worker.py", line 114, in dispatch_job
return slither_run.run(job_id, job_meta, run_data, config, log, laravel_client)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tripwire/worker/jobs/slither_run.py", line 1084, in run
stdout_text, stderr_text, result_json = _run_slither(
~~~~~~~~~~~~^
workspace,
^^^^^^^^^^
...<4 lines>...
target_path=target_path,
^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/var/www/tripwire/worker/jobs/slither_run.py", line 958, in _run_slither
raise RuntimeError(f"slither failed (exit {result.returncode}): {stderr_text or stdout_text}")
RuntimeError: slither failed (exit 1): 'forge clean' running (wd: /tmp/slither-lm4bdhq1)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-lm4bdhq1)
'forge' returned non-zero exit code 1
[2m2026-04-04T04:28:00.885652Z[0m [31mERROR[0m [2mfoundry_compilers_artifacts_solc::sources[0m[2m:[0m [3merror[0m[2m=[0m"/tmp/slither-lm4bdhq1/lib/openzeppelin-contracts/contracts/cryptography/MerkleProof.sol": No such file or directory (os error 2)
stdout: Unable to resolve imports:
stdout: "@openzeppelin/contracts/cryptography/MerkleProof.sol" in "/tmp/slither-lm4bdhq1/contracts/MerkleDistributor.sol"
stdout: with remappings:
stdout: openzeppelin-contracts/=/tmp/slither-lm4bdhq1/lib/openzeppelin-contracts/
stdout: @openzeppelin/contracts/=/tmp/slither-lm4bdhq1/lib/openzeppelin-contracts/contracts/
stdout: Compiling 3 files with Solc 0.6.11
stdout: Solc 0.6.11 finished in 2.64ms
Error: Compiler run failed:
stderr: Error (6275): Source "lib/openzeppelin-contracts/contracts/cryptography/MerkleProof.sol" not found: File not found.
stderr: contracts/MerkleDistributor.sol:5:1: ParserError: Source "lib/openzeppelin-contracts/contracts/cryptography/MerkleProof.sol" not found: File not found.
stderr: import "@openzeppelin/contracts/cryptography/MerkleProof.sol";
stderr: ^------------------------------------------------------------^
Traceback (most recent call last):
File "/var/www/tripwire/.venv/bin/slither", line 10, in <module>
sys.exit(main())
~~~~^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 776, in main
main_impl(all_detector_classes=detectors, all_printer_classes=printers)
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 882, in main_impl
) = process_all(filename, args, detector_classes, printer_classes)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 96, in process_all
compilations = compile_all(target, **vars(args))
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 722, in compile_all
compilations.append(CryticCompile(target, **kwargs))
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 211, in __init__
self._compile(**kwargs)
~~~~~~~~~~~~~^^^^^^^^^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 633, in _compile
self._platform.compile(self, **kwargs)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/foundry.py", line 102, in compile
hardhat_like_parsing(
~~~~~~~~~~~~~~~~~~~~^
crytic_compile, str(self._target), build_directory, str(self._project_root)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/hardhat.py", line 52, in hardhat_like_parsing
raise InvalidCompilation(txt)
crytic_compile.platform.exceptions.InvalidCompilation: Compilation failed. Can you run build command?
/tmp/slither-lm4bdhq1/out/build-info is not a directory.
{"no_findings":true,"summary":"Fully reviewed AUDIT_BUNDLE.txt. The only first-party logic is a standard MerkleDistributor pattern; I did not identify meaningful exploitable issues in scope around reentrancy, access control, upgradeability, signature validation, oracle manipulation, accounting, external call handling, unchecked returns, or delegatecall.","findings":[]}
OpenAI Codex v0.118.0 (research preview)
--------
workdir: /tmp/codex-eprylc2d
model: gpt-5.4
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: none
session id: 019d56a2-9aee-75b2-95f2-f032c208a09b
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
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 and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
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.
exec
/bin/bash -lc pwd in /tmp/codex-eprylc2d
succeeded in 0ms:
/tmp/codex-eprylc2d
exec
/bin/bash -lc 'rg --files' in /tmp/codex-eprylc2d
succeeded in 0ms:
codex-output-schema.json
AUDIT_BUNDLE.txt
@openzeppelin/contracts/cryptography/MerkleProof.sol
contracts/MerkleDistributor.sol
contracts/interfaces/IMerkleDistributor.sol
@openzeppelin/contracts/token/ERC20/IERC20.sol
exec
/bin/bash -lc 'wc -l AUDIT_BUNDLE.txt' in /tmp/codex-eprylc2d
succeeded in 0ms:
75 AUDIT_BUNDLE.txt
exec
/bin/bash -lc "sed -n '1,260p' AUDIT_BUNDLE.txt" in /tmp/codex-eprylc2d
succeeded in 0ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: contracts/MerkleDistributor.sol
================================================================================
// SPDX-License-Identifier: UNLICENSED
pragma solidity =0.6.11;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/cryptography/MerkleProof.sol";
import "./interfaces/IMerkleDistributor.sol";
contract MerkleDistributor is IMerkleDistributor {
address public immutable override token;
bytes32 public immutable override merkleRoot;
// This is a packed array of booleans.
mapping(uint256 => uint256) private claimedBitMap;
constructor(address token_, bytes32 merkleRoot_) public {
token = token_;
merkleRoot = merkleRoot_;
}
function isClaimed(uint256 index) public view override returns (bool) {
uint256 claimedWordIndex = index / 256;
uint256 claimedBitIndex = index % 256;
uint256 claimedWord = claimedBitMap[claimedWordIndex];
uint256 mask = (1 << claimedBitIndex);
return claimedWord & mask == mask;
}
function _setClaimed(uint256 index) private {
uint256 claimedWordIndex = index / 256;
uint256 claimedBitIndex = index % 256;
claimedBitMap[claimedWordIndex] = claimedBitMap[claimedWordIndex] | (1 << claimedBitIndex);
}
function claim(uint256 index, address account, uint256 amount, bytes32[] calldata merkleProof) external override {
require(!isClaimed(index), 'MerkleDistributor: Drop already claimed.');
// Verify the merkle proof.
bytes32 node = keccak256(abi.encodePacked(index, account, amount));
require(MerkleProof.verify(merkleProof, merkleRoot, node), 'MerkleDistributor: Invalid proof.');
// Mark it claimed and send the token.
_setClaimed(index);
require(IERC20(token).transfer(account, amount), 'MerkleDistributor: Transfer failed.');
emit Claimed(index, account, amount);
}
}
================================================================================
FILE: contracts/interfaces/IMerkleDistributor.sol
================================================================================
// SPDX-License-Identifier: UNLICENSED
pragma solidity >=0.5.0;
// Allows anyone to claim a token if they exist in a merkle root.
interface IMerkleDistributor {
// Returns the address of the token distributed by this contract.
function token() external view returns (address);
// Returns the merkle root of the merkle tree containing account balances available to claim.
function merkleRoot() external view returns (bytes32);
// Returns true if the index has been marked claimed.
function isClaimed(uint256 index) external view returns (bool);
// Claim the given amount of the token to the given address. Reverts if the inputs are invalid.
function claim(uint256 index, address account, uint256 amount, bytes32[] calldata merkleProof) external;
// This event is triggered whenever a call to #claim succeeds.
event Claimed(uint256 index, address account, uint256 amount);
}
codex
{"no_findings":true,"summary":"Fully reviewed AUDIT_BUNDLE.txt. The only first-party logic is a standard MerkleDistributor pattern; I did not identify meaningful exploitable issues in scope around reentrancy, access control, upgradeability, signature validation, oracle manipulation, accounting, external call handling, unchecked returns, or delegatecall.","findings":[]}
tokens used
3,726
{
"codex": {
"ran_at": "2026-04-04T03:56:52.187957+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 4,
"import_count": 3,
"first_party_contracts_count": 2
},
"summary": "Fully reviewed AUDIT_BUNDLE.txt. The only first-party logic is a standard MerkleDistributor pattern; I did not identify meaningful exploitable issues in scope around reentrancy, access control, upgradeability, signature validation, oracle manipulation, accounting, external call handling, unchecked returns, or delegatecall.",
"raw_final": {
"summary": "Fully reviewed AUDIT_BUNDLE.txt. The only first-party logic is a standard MerkleDistributor pattern; I did not identify meaningful exploitable issues in scope around reentrancy, access control, upgradeability, signature validation, oracle manipulation, accounting, external call handling, unchecked returns, or delegatecall.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLVALUE 00000006: DUP1 00000007: ISZERO 00000008: PUSH2 0x0010 0000000b: JUMPI 0000000c: PUSH1 0x00 0000000e: DUP1 0000000f: REVERT 00000010: JUMPDEST 00000011: POP 00000012: PUSH1 0x04 00000014: CALLDATASIZE 00000015: LT 00000016: PUSH2 0x004c 00000019: JUMPI 0000001a: PUSH1 0x00 0000001c: CALLDATALOAD 0000001d: PUSH1 0xe0 0000001f: SHR 00000020: DUP1 00000021: PUSH4 0x2e7ba6ef 00000026: EQ 00000027: PUSH2 0x0051 0000002a: JUMPI 0000002b: DUP1 0000002c: PUSH4 0x2eb4a7ab 00000031: EQ 00000032: PUSH2 0x00df 00000035: JUMPI 00000036: DUP1 00000037: PUSH4 0x9e34070f 0000003c: EQ 0000003d: PUSH2 0x00f9 00000040: JUMPI 00000041: DUP1 00000042: PUSH4 0xfc0c546a 00000047: EQ 00000048: PUSH2 0x012a 0000004b: JUMPI 0000004c: JUMPDEST 0000004d: PUSH1 0x00 0000004f: DUP1 00000050: REVERT 00000051: JUMPDEST 00000052: PUSH2 0x00dd 00000055: PUSH1 0x04 00000057: DUP1 00000058: CALLDATASIZE 00000059: SUB 0000005a: PUSH1 0x80 0000005c: DUP2 0000005d: LT 0000005e: ISZERO 0000005f: PUSH2 0x0067 00000062: JUMPI 00000063: PUSH1 0x00 00000065: DUP1 00000066: REVERT 00000067: JUMPDEST 00000068: DUP2 00000069: CALLDATALOAD 0000006a: SWAP2 0000006b: PUSH1 0x01 0000006d: PUSH1 0x01 0000006f: PUSH1 0xa0 00000071: SHL 00000072: SUB 00000073: PUSH1 0x20 00000075: DUP3 00000076: ADD 00000077: CALLDATALOAD 00000078: AND 00000079: SWAP2 0000007a: PUSH1 0x40 0000007c: DUP3 0000007d: ADD 0000007e: CALLDATALOAD 0000007f: SWAP2 00000080: SWAP1 00000081: DUP2 00000082: ADD 00000083: SWAP1 00000084: PUSH1 0x80 00000086: DUP2 00000087: ADD 00000088: PUSH1 0x60 0000008a: DUP3 0000008b: ADD 0000008c: CALLDATALOAD 0000008d: PUSH5 0x0100000000 00000093: DUP2 00000094: GT 00000095: ISZERO 00000096: PUSH2 0x009e 00000099: JUMPI 0000009a: PUSH1 0x00 0000009c: DUP1 0000009d: REVERT 0000009e: JUMPDEST 0000009f: DUP3 000000a0: ADD 000000a1: DUP4 000000a2: PUSH1 0x20 000000a4: DUP3 000000a5: ADD 000000a6: GT 000000a7: ISZERO 000000a8: PUSH2 0x00b0 000000ab: JUMPI 000000ac: PUSH1 0x00 000000ae: DUP1 000000af: REVERT 000000b0: JUMPDEST 000000b1: DUP1 000000b2: CALLDATALOAD 000000b3: SWAP1 000000b4: PUSH1 0x20 000000b6: ADD 000000b7: SWAP2 000000b8: DUP5 000000b9: PUSH1 0x20 000000bb: DUP4 000000bc: MUL 000000bd: DUP5 000000be: ADD 000000bf: GT 000000c0: PUSH5 0x0100000000 000000c6: DUP4 000000c7: GT 000000c8: OR 000000c9: ISZERO 000000ca: PUSH2 0x00d2 000000cd: JUMPI 000000ce: PUSH1 0x00 000000d0: DUP1 000000d1: REVERT 000000d2: JUMPDEST 000000d3: POP 000000d4: SWAP1 000000d5: SWAP3 000000d6: POP 000000d7: SWAP1 000000d8: POP 000000d9: PUSH2 0x014e 000000dc: JUMP 000000dd: JUMPDEST 000000de: STOP 000000df: JUMPDEST 000000e0: PUSH2 0x00e7 000000e3: PUSH2 0x03b1 000000e6: JUMP 000000e7: JUMPDEST 000000e8: PUSH1 0x40 000000ea: DUP1 000000eb: MLOAD 000000ec: SWAP2 000000ed: DUP3 000000ee: MSTORE 000000ef: MLOAD 000000f0: SWAP1 000000f1: DUP2 000000f2: SWAP1 000000f3: SUB 000000f4: PUSH1 0x20 000000f6: ADD 000000f7: SWAP1 000000f8: RETURN 000000f9: JUMPDEST 000000fa: PUSH2 0x0116 000000fd: PUSH1 0x04 000000ff: DUP1 00000100: CALLDATASIZE 00000101: SUB 00000102: PUSH1 0x20 00000104: DUP2 00000105: LT 00000106: ISZERO 00000107: PUSH2 0x010f 0000010a: JUMPI 0000010b: PUSH1 0x00 0000010d: DUP1 0000010e: REVERT 0000010f: JUMPDEST 00000110: POP 00000111: CALLDATALOAD 00000112: PUSH2 0x03d5 00000115: JUMP 00000116: JUMPDEST 00000117: PUSH1 0x40 00000119: DUP1 0000011a: MLOAD 0000011b: SWAP2 0000011c: ISZERO 0000011d: ISZERO 0000011e: DUP3 0000011f: MSTORE 00000120: MLOAD 00000121: SWAP1 00000122: DUP2 00000123: SWAP1 00000124: SUB 00000125: PUSH1 0x20 00000127: ADD 00000128: SWAP1 00000129: RETURN 0000012a: JUMPDEST 0000012b: PUSH2 0x0132 0000012e: PUSH2 0x03fb 00000131: JUMP 00000132: JUMPDEST 00000133: PUSH1 0x40 00000135: DUP1 00000136: MLOAD 00000137: PUSH1 0x01 00000139: PUSH1 0x01 0000013b: PUSH1 0xa0 0000013d: SHL 0000013e: SUB 0000013f: SWAP1 00000140: SWAP3 00000141: AND 00000142: DUP3 00000143: MSTORE 00000144: MLOAD 00000145: SWAP1 00000146: DUP2 00000147: SWAP1 00000148: SUB 00000149: PUSH1 0x20 0000014b: ADD 0000014c: SWAP1 0000014d: RETURN 0000014e: JUMPDEST 0000014f: PUSH2 0x0157 00000152: DUP6 00000153: PUSH2 0x03d5 00000156: JUMP 00000157: JUMPDEST 00000158: ISZERO 00000159: PUSH2 0x0193 0000015c: JUMPI 0000015d: PUSH1 0x40 0000015f: MLOAD 00000160: PUSH3 0x461bcd 00000164: PUSH1 0xe5 00000166: SHL 00000167: DUP2 00000168: MSTORE 00000169: PUSH1 0x04 0000016b: ADD 0000016c: DUP1 0000016d: DUP1 0000016e: PUSH1 0x20 00000170: ADD 00000171: DUP3 00000172: DUP2 00000173: SUB 00000174: DUP3 00000175: MSTORE 00000176: PUSH1 0x28 00000178: DUP2 00000179: MSTORE 0000017a: PUSH1 0x20 0000017c: ADD 0000017d: DUP1 0000017e: PUSH2 0x04f0 00000181: PUSH1 0x28 00000183: SWAP2 00000184: CODECOPY 00000185: PUSH1 0x40 00000187: ADD 00000188: SWAP2 00000189: POP 0000018a: POP 0000018b: PUSH1 0x40 0000018d: MLOAD 0000018e: DUP1 0000018f: SWAP2 00000190: SUB 00000191: SWAP1 00000192: REVERT 00000193: JUMPDEST 00000194: PUSH1 0x40 00000196: DUP1 00000197: MLOAD 00000198: PUSH1 0x20 0000019a: DUP1 0000019b: DUP3 0000019c: ADD 0000019d: DUP9 0000019e: SWAP1 0000019f: MSTORE 000001a0: PUSH12 0xffffffffffffffffffffffff 000001ad: NOT 000001ae: PUSH1 0x60 000001b0: DUP9 000001b1: SWAP1 000001b2: SHL 000001b3: AND 000001b4: DUP3 000001b5: DUP5 000001b6: ADD 000001b7: MSTORE 000001b8: PUSH1 0x54 000001ba: DUP1 000001bb: DUP4 000001bc: ADD 000001bd: DUP8 000001be: SWAP1 000001bf: MSTORE 000001c0: DUP4 000001c1: MLOAD 000001c2: DUP1 000001c3: DUP5 000001c4: SUB 000001c5: SWAP1 000001c6: SWAP2 000001c7: ADD 000001c8: DUP2 000001c9: MSTORE 000001ca: PUSH1 0x74 000001cc: DUP4 000001cd: ADD 000001ce: DUP1 000001cf: DUP6 000001d0: MSTORE 000001d1: DUP2 000001d2: MLOAD 000001d3: SWAP2 000001d4: DUP4 000001d5: ADD 000001d6: SWAP2 000001d7: SWAP1 000001d8: SWAP2 000001d9: KECCAK256 000001da: PUSH1 0x94 000001dc: SWAP3 000001dd: DUP7 000001de: MUL 000001df: DUP1 000001e0: DUP6 000001e1: ADD 000001e2: DUP5 000001e3: ADD 000001e4: SWAP1 000001e5: SWAP6 000001e6: MSTORE 000001e7: DUP6 000001e8: DUP3 000001e9: MSTORE 000001ea: SWAP4 000001eb: PUSH2 0x0236 000001ee: SWAP4 000001ef: SWAP2 000001f0: SWAP3 000001f1: DUP8 000001f2: SWAP3 000001f3: DUP8 000001f4: SWAP3 000001f5: DUP4 000001f6: SWAP3 000001f7: SWAP1 000001f8: SWAP2 000001f9: ADD 000001fa: SWAP1 000001fb: DUP5 000001fc: SWAP1 000001fd: DUP1 000001fe: DUP3 000001ff: DUP5 00000200: CALLDATACOPY 00000201: PUSH1 0x00 00000203: SWAP3 00000204: ADD 00000205: SWAP2 00000206: SWAP1 00000207: SWAP2 00000208: MSTORE 00000209: POP 0000020a: PUSH32 0x2a9bcfeb89c97bf83809856762b6f7028792c6f86d44a004170949abce588232 0000022b: SWAP3 0000022c: POP 0000022d: DUP6 0000022e: SWAP2 0000022f: POP 00000230: PUSH2 0x041f 00000233: SWAP1 00000234: POP 00000235: JUMP 00000236: JUMPDEST 00000237: PUSH2 0x0271 0000023a: JUMPI 0000023b: PUSH1 0x40 0000023d: MLOAD 0000023e: PUSH3 0x461bcd 00000242: PUSH1 0xe5 00000244: SHL 00000245: DUP2 00000246: MSTORE 00000247: PUSH1 0x04 00000249: ADD 0000024a: DUP1 0000024b: DUP1 0000024c: PUSH1 0x20 0000024e: ADD 0000024f: DUP3 00000250: DUP2 00000251: SUB 00000252: DUP3 00000253: MSTORE 00000254: PUSH1 0x21 00000256: DUP2 00000257: MSTORE 00000258: PUSH1 0x20 0000025a: ADD 0000025b: DUP1 0000025c: PUSH2 0x0518 0000025f: PUSH1 0x21 00000261: SWAP2 00000262: CODECOPY 00000263: PUSH1 0x40 00000265: ADD 00000266: SWAP2 00000267: POP 00000268: POP 00000269: PUSH1 0x40 0000026b: MLOAD 0000026c: DUP1 0000026d: SWAP2 0000026e: SUB 0000026f: SWAP1 00000270: REVERT 00000271: JUMPDEST 00000272: PUSH2 0x027a 00000275: DUP7 00000276: PUSH2 0x04c8 00000279: JUMP 0000027a: JUMPDEST 0000027b: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 0000029c: PUSH1 0x01 0000029e: PUSH1 0x01 000002a0: PUSH1 0xa0 000002a2: SHL 000002a3: SUB 000002a4: AND 000002a5: PUSH4 0xa9059cbb 000002aa: DUP7 000002ab: DUP7 000002ac: PUSH1 0x40 000002ae: MLOAD 000002af: DUP4 000002b0: PUSH4 0xffffffff 000002b5: AND 000002b6: PUSH1 0xe0 000002b8: SHL 000002b9: DUP2 000002ba: MSTORE 000002bb: PUSH1 0x04 000002bd: ADD 000002be: DUP1 000002bf: DUP4 000002c0: PUSH1 0x01 000002c2: PUSH1 0x01 000002c4: PUSH1 0xa0 000002c6: SHL 000002c7: SUB 000002c8: AND 000002c9: PUSH1 0x01 000002cb: PUSH1 0x01 000002cd: PUSH1 0xa0 000002cf: SHL 000002d0: SUB 000002d1: AND 000002d2: DUP2 000002d3: MSTORE 000002d4: PUSH1 0x20 000002d6: ADD 000002d7: DUP3 000002d8: DUP2 000002d9: MSTORE 000002da: PUSH1 0x20 000002dc: ADD 000002dd: SWAP3 000002de: POP 000002df: POP 000002e0: POP 000002e1: PUSH1 0x20 000002e3: PUSH1 0x40 000002e5: MLOAD 000002e6: DUP1 000002e7: DUP4 000002e8: SUB 000002e9: DUP2 000002ea: PUSH1 0x00 000002ec: DUP8 000002ed: DUP1 000002ee: EXTCODESIZE 000002ef: ISZERO 000002f0: DUP1 000002f1: ISZERO 000002f2: PUSH2 0x02fa 000002f5: JUMPI 000002f6: PUSH1 0x00 000002f8: DUP1 000002f9: REVERT 000002fa: JUMPDEST 000002fb: POP 000002fc: GAS 000002fd: CALL 000002fe: ISZERO 000002ff: DUP1 00000300: ISZERO 00000301: PUSH2 0x030e 00000304: JUMPI 00000305: RETURNDATASIZE 00000306: PUSH1 0x00 00000308: DUP1 00000309: RETURNDATACOPY 0000030a: RETURNDATASIZE 0000030b: PUSH1 0x00 0000030d: REVERT 0000030e: JUMPDEST 0000030f: POP 00000310: POP 00000311: POP 00000312: POP 00000313: PUSH1 0x40 00000315: MLOAD 00000316: RETURNDATASIZE 00000317: PUSH1 0x20 00000319: DUP2 0000031a: LT 0000031b: ISZERO 0000031c: PUSH2 0x0324 0000031f: JUMPI 00000320: PUSH1 0x00 00000322: DUP1 00000323: REVERT 00000324: JUMPDEST 00000325: POP 00000326: MLOAD 00000327: PUSH2 0x0361 0000032a: JUMPI 0000032b: PUSH1 0x40 0000032d: MLOAD 0000032e: PUSH3 0x461bcd 00000332: PUSH1 0xe5 00000334: SHL 00000335: DUP2 00000336: MSTORE 00000337: PUSH1 0x04 00000339: ADD 0000033a: DUP1 0000033b: DUP1 0000033c: PUSH1 0x20 0000033e: ADD 0000033f: DUP3 00000340: DUP2 00000341: SUB 00000342: DUP3 00000343: MSTORE 00000344: PUSH1 0x23 00000346: DUP2 00000347: MSTORE 00000348: PUSH1 0x20 0000034a: ADD 0000034b: DUP1 0000034c: PUSH2 0x0539 0000034f: PUSH1 0x23 00000351: SWAP2 00000352: CODECOPY 00000353: PUSH1 0x40 00000355: ADD 00000356: SWAP2 00000357: POP 00000358: POP 00000359: PUSH1 0x40 0000035b: MLOAD 0000035c: DUP1 0000035d: SWAP2 0000035e: SUB 0000035f: SWAP1 00000360: REVERT 00000361: JUMPDEST 00000362: PUSH1 0x40 00000364: DUP1 00000365: MLOAD 00000366: DUP8 00000367: DUP2 00000368: MSTORE 00000369: PUSH1 0x01 0000036b: PUSH1 0x01 0000036d: PUSH1 0xa0 0000036f: SHL 00000370: SUB 00000371: DUP8 00000372: AND 00000373: PUSH1 0x20 00000375: DUP3 00000376: ADD 00000377: MSTORE 00000378: DUP1 00000379: DUP3 0000037a: ADD 0000037b: DUP7 0000037c: SWAP1 0000037d: MSTORE 0000037e: SWAP1 0000037f: MLOAD 00000380: PUSH32 0x4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed026 000003a1: SWAP2 000003a2: DUP2 000003a3: SWAP1 000003a4: SUB 000003a5: PUSH1 0x60 000003a7: ADD 000003a8: SWAP1 000003a9: LOG1 000003aa: POP 000003ab: POP 000003ac: POP 000003ad: POP 000003ae: POP 000003af: POP 000003b0: JUMP 000003b1: JUMPDEST 000003b2: PUSH32 0x2a9bcfeb89c97bf83809856762b6f7028792c6f86d44a004170949abce588232 000003d3: DUP2 000003d4: JUMP 000003d5: JUMPDEST 000003d6: PUSH2 0x0100 000003d9: DUP2 000003da: DIV 000003db: PUSH1 0x00 000003dd: SWAP1 000003de: DUP2 000003df: MSTORE 000003e0: PUSH1 0x20 000003e2: DUP2 000003e3: SWAP1 000003e4: MSTORE 000003e5: PUSH1 0x40 000003e7: SWAP1 000003e8: KECCAK256 000003e9: SLOAD 000003ea: PUSH1 0x01 000003ec: PUSH1 0xff 000003ee: SWAP1 000003ef: SWAP3 000003f0: AND 000003f1: SWAP2 000003f2: SWAP1 000003f3: SWAP2 000003f4: SHL 000003f5: SWAP1 000003f6: DUP2 000003f7: AND 000003f8: EQ 000003f9: SWAP1 000003fa: JUMP 000003fb: JUMPDEST 000003fc: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 0000041d: DUP2 0000041e: JUMP 0000041f: JUMPDEST 00000420: PUSH1 0x00 00000422: DUP2 00000423: DUP2 00000424: JUMPDEST 00000425: DUP6 00000426: MLOAD 00000427: DUP2 00000428: LT 00000429: ISZERO 0000042a: PUSH2 0x04bd 0000042d: JUMPI 0000042e: PUSH1 0x00 00000430: DUP7 00000431: DUP3 00000432: DUP2 00000433: MLOAD 00000434: DUP2 00000435: LT 00000436: PUSH2 0x043b 00000439: JUMPI 0000043a: INVALID 0000043b: JUMPDEST 0000043c: PUSH1 0x20 0000043e: MUL 0000043f: PUSH1 0x20 00000441: ADD 00000442: ADD 00000443: MLOAD 00000444: SWAP1 00000445: POP 00000446: DUP1 00000447: DUP4 00000448: GT 00000449: PUSH2 0x0482 0000044c: JUMPI 0000044d: DUP3 0000044e: DUP2 0000044f: PUSH1 0x40 00000451: MLOAD 00000452: PUSH1 0x20 00000454: ADD 00000455: DUP1 00000456: DUP4 00000457: DUP2 00000458: MSTORE 00000459: PUSH1 0x20 0000045b: ADD 0000045c: DUP3 0000045d: DUP2 0000045e: MSTORE 0000045f: PUSH1 0x20 00000461: ADD 00000462: SWAP3 00000463: POP 00000464: POP 00000465: POP 00000466: PUSH1 0x40 00000468: MLOAD 00000469: PUSH1 0x20 0000046b: DUP2 0000046c: DUP4 0000046d: SUB 0000046e: SUB 0000046f: DUP2 00000470: MSTORE 00000471: SWAP1 00000472: PUSH1 0x40 00000474: MSTORE 00000475: DUP1 00000476: MLOAD 00000477: SWAP1 00000478: PUSH1 0x20 0000047a: ADD 0000047b: KECCAK256 0000047c: SWAP3 0000047d: POP 0000047e: PUSH2 0x04b4 00000481: JUMP 00000482: JUMPDEST 00000483: DUP1 00000484: DUP4 00000485: PUSH1 0x40 00000487: MLOAD 00000488: PUSH1 0x20 0000048a: ADD 0000048b: DUP1 0000048c: DUP4 0000048d: DUP2 0000048e: MSTORE 0000048f: PUSH1 0x20 00000491: ADD 00000492: DUP3 00000493: DUP2 00000494: MSTORE 00000495: PUSH1 0x20 00000497: ADD 00000498: SWAP3 00000499: POP 0000049a: POP 0000049b: POP 0000049c: PUSH1 0x40 0000049e: MLOAD 0000049f: PUSH1 0x20 000004a1: DUP2 000004a2: DUP4 000004a3: SUB 000004a4: SUB 000004a5: DUP2 000004a6: MSTORE 000004a7: SWAP1 000004a8: PUSH1 0x40 000004aa: MSTORE 000004ab: DUP1 000004ac: MLOAD 000004ad: SWAP1 000004ae: PUSH1 0x20 000004b0: ADD 000004b1: KECCAK256 000004b2: SWAP3 000004b3: POP 000004b4: JUMPDEST 000004b5: POP 000004b6: PUSH1 0x01 000004b8: ADD 000004b9: PUSH2 0x0424 000004bc: JUMP 000004bd: JUMPDEST 000004be: POP 000004bf: SWAP1 000004c0: SWAP3 000004c1: EQ 000004c2: SWAP4 000004c3: SWAP3 000004c4: POP 000004c5: POP 000004c6: POP 000004c7: JUMP 000004c8: JUMPDEST 000004c9: PUSH2 0x0100 000004cc: DUP2 000004cd: DIV 000004ce: PUSH1 0x00 000004d0: SWAP1 000004d1: DUP2 000004d2: MSTORE 000004d3: PUSH1 0x20 000004d5: DUP2 000004d6: SWAP1 000004d7: MSTORE 000004d8: PUSH1 0x40 000004da: SWAP1 000004db: KECCAK256 000004dc: DUP1 000004dd: SLOAD 000004de: PUSH1 0x01 000004e0: PUSH1 0xff 000004e2: SWAP1 000004e3: SWAP4 000004e4: AND 000004e5: SWAP3 000004e6: SWAP1 000004e7: SWAP3 000004e8: SHL 000004e9: SWAP1 000004ea: SWAP2 000004eb: OR 000004ec: SWAP1 000004ed: SSTORE 000004ee: JUMP 000004ef: INVALID 000004f0: UNKNOWN(0x4D) 000004f1: PUSH6 0x726b6c654469 000004f8: PUSH20 0x7472696275746f723a2044726f7020616c726561 0000050d: PUSH5 0x7920636c61 00000513: PUSH10 0x6d65642e4d65726b6c65 0000051e: DIFFICULTY 0000051f: PUSH10 0x737472696275746f723a 0000052a: KECCAK256 0000052b: BLOBHASH 0000052c: PUSH15 0x76616c69642070726f6f662e4d6572 0000053c: PUSH12 0x6c654469737472696275746f 00000549: PUSH19 0x3a205472616e73666572206661696c65642ea2 0000055d: PUSH5 0x6970667358 00000563: UNKNOWN(0x22) 00000564: SLT 00000565: KECCAK256 00000566: PUSH1 0x06 00000568: SWAP4 00000569: MOD 0000056a: JUMPDEST 0000056b: LOG4 0000056c: PUSH10 0x01450139c046c9982b4c 00000577: DUP14 00000578: UNKNOWN(0xAC) 00000579: PUSH16 0x5389b2587f164bb4df4e528c64736f6c 0000058a: PUSH4 0x4300060b 0000058f: STOP 00000590: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x4750b519052ca673bbf50fd62b9e7680176bf3954f8ac77b547e21b015c7d80c
call_targets:
0xdd06d8ad275d1d2e09e4c7162c231acb7df9b44d
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x4750b519052ca673bbf50fd62b9e7680176bf3954f8ac77b547e21b015c7d80c",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xdd06d8ad275d1d2e09e4c7162c231acb7df9b44d"
],
"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": "0x2e7ba6ef",
"selector": "0x2e7ba6ef",
"calldata_variants": [
"0x2e7ba6ef",
"0x2e7ba6ef0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2eb4a7ab",
"selector": "0x2eb4a7ab",
"calldata_variants": [
"0x2eb4a7ab",
"0x2eb4a7ab0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9e34070f",
"selector": "0x9e34070f",
"calldata_variants": [
"0x9e34070f",
"0x9e34070f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc0c546a",
"selector": "0xfc0c546a",
"calldata_variants": [
"0xfc0c546a",
"0xfc0c546a0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 765,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 1,
"guards_detected": [],
"untrusted_call_count": 1
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x4750b519052ca673bbf50fd62b9e7680176bf3954f8ac77b547e21b015c7d80c
call_targets:
0xdd06d8ad275d1d2e09e4c7162c231acb7df9b44d
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x4750b519052ca673bbf50fd62b9e7680176bf3954f8ac77b547e21b015c7d80c",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xdd06d8ad275d1d2e09e4c7162c231acb7df9b44d"
],
"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": "0x2e7ba6ef",
"selector": "0x2e7ba6ef",
"calldata_variants": [
"0x2e7ba6ef",
"0x2e7ba6ef0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2eb4a7ab",
"selector": "0x2eb4a7ab",
"calldata_variants": [
"0x2eb4a7ab",
"0x2eb4a7ab0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9e34070f",
"selector": "0x9e34070f",
"calldata_variants": [
"0x9e34070f",
"0x9e34070f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc0c546a",
"selector": "0xfc0c546a",
"calldata_variants": [
"0xfc0c546a",
"0xfc0c546a0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 765,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": []
}
|