Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions citations.bib
Original file line number Diff line number Diff line change
Expand Up @@ -13632,3 +13632,16 @@ @misc{cryptoadventureopenmonero2026
url = {https://cryptoadventure.com/openmonero-warns-users-to-stop-payments-after-new-exploit-alert/},
note = {OAK v0.1 — verified. URL audit confirmed HTTP 200.}
}

% =====================================================================
% Complementary signal (Smart-Contract Exploit, T9)
% =====================================================================

@misc{holistis2026auditaccept,
author = {{Ouadoudi, Abdellah}},
title = {Audit-Competition Acceptance Rates as a Complementary Signal to {OAK} T9: Methodology and Reproduction Steps},
year = {2026},
howpublished = {GitHub repository, \texttt{bug-bounty-intelligence-mcp}},
url = {https://github.com/holistis/bug-bounty-intelligence-mcp/blob/8c3e3084017cd7fa28be8a662012d28c41d33b8d/METHODOLOGY.md},
note = {Non-peer-reviewed secondary analysis. Sherlock audit-competition submission data, restricted to the subset (10 of 105 crawled contests, 1{,}032 findings) where accepted+invalid issue counts reconcile exactly against Sherlock's own published judging-repo results; the larger unverified corpus is explicitly excluded rather than estimated. Pre-deployment submission-acceptance data, not a claim about realized-incident frequency or detection coverage — see cited document for full scope and limitations.}
}
2 changes: 2 additions & 0 deletions techniques/T9.001-oracle-price-manipulation.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,3 +131,5 @@ The Mango Markets case is unusual in that the attacker publicly identified and l
- T9.001.003 — Pull-reporter-oracle manipulation (BonqDAO) — Tellor / UMA-style stake-and-report dispute-window bypass.

Each sub-class has a distinct mitigation surface (TWAP+multi-venue for .001; vault-share invariant for .002; dispute-window-respecting consumption for .003); v0.1 keeps them under the umbrella because the dollar-loss attribution and worked-example cohort are still building. Attribution-strength notes: Mango (high: public actor, court record); Cream / Vee / BonqDAO (medium: pseudonymous attackers, well-documented mechanics); Rari / Fuse (medium: mechanics public, primary-vs-contributing-factor classification disputed across forensic vendors).

**Complementary signal (pre-deployment, not a T9.001 worked example).** In an exact-reconciled sample of Sherlock audit-competition submissions (10 contests, 1,032 findings; see `[holistis2026auditaccept]`), findings keyword-matched to oracle/price-manipulation claims were judged valid 36% of the time (n=131) — the lowest rate among the classes covered in that sample, consistent with this being a class that is easy to suspect but comparatively hard to conclusively prove. This describes pre-deployment audit-competition submission outcomes, not realized-incident frequency or detection coverage; the sample is small and keyword-tagged rather than semantically classified.
2 changes: 2 additions & 0 deletions techniques/T9.004-access-control-misconfiguration.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,4 +171,6 @@ T9.004 is intentionally a broad category because the failure modes vary widely (

Attribution-strength notes: KiloEx and Euler (high: full forensic write-ups, reproducible test cases); Wormhole (high: Halborn / Chainalysis post-mortem, Jump remediation public); Poly Network (medium-high: attacker engaged publicly post-event, mechanics widely documented but attacker identity remains pseudonymous); Multichain (low: internal-vs-external attribution disputed).

**Complementary signal (pre-deployment, not a T9.004 worked example).** In the same exact-reconciled Sherlock sample (10 contests, 1,032 findings; see `[holistis2026auditaccept]`), access-control claims were judged valid 47% of the time (n=74) — higher than most other classes covered in that sample, plausibly because a missing or incorrect authorization check is more mechanically verifiable than a claim requiring an economic-exploitability argument. Pre-deployment submission data, not a claim about realized-incident frequency; sample is small and keyword-tagged, not semantically classified.

Wormhole is included as the v0.1 canonical example because the missing-authorisation-check is unambiguous from public technical write-ups, the dollar loss is large, and the post-mortem published by Halborn and Chainalysis is sufficient for contributors to understand the failure mode without us reproducing exploit specifics here. The KiloEx case is included specifically because it post-dates the broad adoption of static-analysis CI in DeFi and demonstrates the surface persists when the static-analysis pass is run on the wrong artifact (the contract was deployed but the analysis gate did not block it).
2 changes: 2 additions & 0 deletions techniques/T9.005-reentrancy.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,3 +96,5 @@ OAK groups several sub-patterns under T9.005:
T9.005 is marked Maturity = stable rather than historical because the underlying failure mode — surrendering execution flow before finalising state — recurs in modern variants that the canonical mitigation does not fully address. OpenZeppelin's `ReentrancyGuard` (widely adopted post-2019) substantially closes the 2016-style single-function pattern, and pre-deployment static analysis routinely catches it; consequently, post-2021 reentrancy incidents are dominated by (i) cross-function reentrancy where the per-function lock did not span the shared-state surface, (ii) cross-protocol reentrancy where the attacker re-enters a *peer* protocol that reads stale state, frequently chained with T9.002 to acquire flash-loaned capital, (iii) hook-based reentrancy where the external call is implicit in a token-standard receive hook the protocol did not treat as an external call, and (iv) read-only reentrancy where no state mutation occurs in the re-entry but a third protocol's view-function read is the loss surface.

The Cream Finance October 2021 case is the v0.1 canonical example of the modern variant because it combines the cross-protocol pattern with flash-loan-enabled capital, making the T9.002 cross-reference unambiguous; The DAO is retained as the historical reference for the class origin and to ground the Ethereum-Classic fork context that newer contributors may not have lived through. Sub-Techniques may be split out in v0.x updates if the cross-protocol and read-only sub-patterns reach independent characterisation maturity (notably, read-only reentrancy is increasingly cited as a distinct sub-class in 2023–2025 audit-firm literature and may warrant its own technique ID).

**Complementary signal (pre-deployment, not a T9.005 worked example).** In the same exact-reconciled Sherlock sample (10 contests, 1,032 findings; see `[holistis2026auditaccept]`), reentrancy claims were judged valid 78% of the time (n=51) — markedly higher than the other classes covered in that sample, suggesting that when a reentrancy path is flagged with enough specificity to submit, it disproportionately turns out to be real rather than a suspected-but-unreachable pattern. Pre-deployment submission data, not a claim about realized-incident frequency; sample is small and keyword-tagged, not semantically classified.
2 changes: 2 additions & 0 deletions techniques/T9.011-precision-loss-rounding-attack.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,3 +87,5 @@ A structural observation: T9.011 is most severe when the vault is empty or near-
False-positive considerations: not every donation-to-vault is T9.011. Legitimate users may send tokens directly to a vault contract address (rather than through the deposit entrypoint) out of ignorance of the vault's interface — this is a user error, not an attack. The distinguishing signal is the sequence: donation directly to the vault address, followed by a deposit from a different address whose shares round to zero or are proportionally depressed, followed by the donor withdrawing at a profit. The donation alone is insufficient; the donation + victim-deposit + donor-withdrawal sequence is the structural T9.011 signal. Additionally, vaults that have already accumulated meaningful totalAssets (well above the donation amount) are not practically exploitable — a donation of 1e6 into a vault with 1e18 totalAssets produces a share-price distortion of 0.0001%, which is within gas-cost noise. T9.011 is specifically the empty-or-near-empty-vault attack.

Attribution-strength considerations: T9.011 attribution is typically at the `pseudonymous-attacker` level — the attacker's address that executed the donation, the victim's deposit that rounded to zero, and the attacker's subsequent withdrawal are all on-chain attributable. The attack sequence is reproducible from event logs alone; the attacker's profit is computable from the withdrawal event. This makes T9.011 one of the more forensically tractable T9 Techniques at the on-chain attribution layer.

**Complementary signal (pre-deployment, not a T9.011 worked example).** In the same exact-reconciled Sherlock sample (10 contests, 1,032 findings; see `[holistis2026auditaccept]`), rounding/precision-loss claims were judged valid 40% of the time (n=63). Pre-deployment submission data, not a claim about realized-incident frequency; sample is small and keyword-tagged, not semantically classified.