Repository
ethereum/go-ethereum
Scanned on Jul 17, 2026
Risk score/ 100
Critical risk
Summary
Análise Heurística (IA indisponível) — 60 ocorrências detectadas: ECDSA, LOW-LEVEL CALL: Return value of .call() not captured — silent failure, ETH lost, EXPLOIT: Re-entrancy risk — external call before state update, no guard, AES-128, Elliptic Curve Cryptography….
18
39
2
1
Top findings
- CriticalEXPLOIT: Re-entrancy risk — external call before state update, no guard
beacon/light/sync/update_sync.go:149
Verify the contract follows the Checks-Effects-Interactions pattern: (1) CHECK conditions first (require balance > 0), (2) UPDATE state (balance = 0), (3) INTERACT externally (call{value:}). Use OpenZeppelin ReentrancyGuard modifier on all functions making external calls. The nonReentrant modifier should appear on the function.
Raw evidence
id := requester.Send(server, ReqCheckpointData(s.checkpointHash)) - CriticalEXPLOIT: Re-entrancy risk — external call before state update, no guard
beacon/light/sync/update_sync.go:153
Verify the contract follows the Checks-Effects-Interactions pattern: (1) CHECK conditions first (require balance > 0), (2) UPDATE state (balance = 0), (3) INTERACT externally (call{value:}). Use OpenZeppelin ReentrancyGuard modifier on all functions making external calls. The nonReentrant modifier should appear on the function.
Raw evidence
requester.Send(server, ReqHeader(s.checkpointHash)) - CriticalEXPLOIT: Re-entrancy risk — external call before state update, no guard
beacon/light/sync/update_sync.go:158
Verify the contract follows the Checks-Effects-Interactions pattern: (1) CHECK conditions first (require balance > 0), (2) UPDATE state (balance = 0), (3) INTERACT externally (call{value:}). Use OpenZeppelin ReentrancyGuard modifier on all functions making external calls. The nonReentrant modifier should appear on the function.
Raw evidence
requester.Send(server, ReqHeader(s.parentHash)) - CriticalEXPLOIT: Re-entrancy risk — external call before state update, no guard
accounts/manager.go:138
Verify the contract follows the Checks-Effects-Interactions pattern: (1) CHECK conditions first (require balance > 0), (2) UPDATE state (balance = 0), (3) INTERACT externally (call{value:}). Use OpenZeppelin ReentrancyGuard modifier on all functions making external calls. The nonReentrant modifier should appear on the function.
Raw evidence
am.feed.Send(event) - CriticalEXPLOIT: Re-entrancy risk — external call before state update, no guard
accounts/keystore/keystore.go:171
Verify the contract follows the Checks-Effects-Interactions pattern: (1) CHECK conditions first (require balance > 0), (2) UPDATE state (balance = 0), (3) INTERACT externally (call{value:}). Use OpenZeppelin ReentrancyGuard modifier on all functions making external calls. The nonReentrant modifier should appear on the function.
Raw evidence
ks.updateFeed.Send(event)
+ 55 more findings in the full report
Scan your own repository
Free. Results in ~90 seconds. CBOM + DORA/NIS2 PDF included.