★ Post-audit code changes without re-audit
A post-deploy hygiene & change mgmt factor in the v1.7.0 rubric. Measured per protocol on
a e cadence.
★
Critical factor. A Red on this factor alone is sufficient to gate a protocol
to grade D or F regardless of other category rollups.
Methodology how we score #
**What this measures**
This factor counts the number of deployed changes to previously-audited bytecode for which no subsequent audit or targeted spot review is on record. The assessment compares the deployed bytecode hash at the time of the most recent audit against the current deployed bytecode, then cross-references any changes against the protocol's published audit history. Changes introduced after the audit cutoff that are not covered by a subsequent review increment this factor's count; a non-zero count triggers a red assessment.
**Why it matters**
Post-audit code changes are the most reliable predictor of upgrade-introduced vulnerabilities in the evidence base. The synthesis identifies this as the second-most impactful risk factor by dollar volume: Euler Finance ($197M) shipped a donateToReserves function that was specifically reviewed by Sherlock but contained the exploited flaw; GMX V1, Hedgey Finance, PancakeBunny, Pickle Finance, and Penpie all share the same structural failure — new code shipped without holistic re-audit, and the new code is where the vulnerability lived. The core insight is that time-since-last-upgrade is a more useful risk signal than time-since-last-audit: an audit is a point-in-time certification of a specific bytecode, and its assurance expires the moment any audited contract is modified.
**Green / Yellow / Red**
Green is assigned when the current deployed bytecode hash matches the audited commit, or when any post-audit changes are fully covered by a subsequent professional audit or targeted spot review by a recognized firm. Yellow covers cases where one or two minor changes (parameter-only adjustments, non-logic updates) are unaudited but their scope can be bounded by curator review. Red is assigned when any logic change to an audited contract — particularly in reward distribution, collateral accounting, liquidation, or access control — has been deployed without subsequent audit coverage.
**Common gray cases**
This factor is grayed when the bytecode comparison cannot be completed due to source verification gaps, or when the protocol uses an immutable (non-upgradeable) architecture where post-audit changes are structurally impossible.
**Notable historical examples**
- **PancakeBunny** ($45M, 2021): VaultFlipToFlip upgrade was not audited by Haechi; the new vault contained the exploited flash-loan manipulation path.
- **Hedgey Finance** ($44.7M, 2024): Post-audit contract version introduced the vulnerability; Ethereum and Arbitrum drained simultaneously.
- **Penpie** ($27M, 2024): Post-audit permissionless market registration introduced the reentrancy path; three audit firms had reviewed earlier code.
- **Pickle Finance** ($19.7M, 2020): ControllerV4 strategy added after audit completed; contained the exploited cross-strategy drain.
- **Safemoon** ($8.9M, 2023): Public burn() function introduced in an upgrade six hours before exploit; no re-audit of the change.
**★ Critical factor**
This factor alone is sufficient to trigger a D or F grade under rubric v1.7.0 — a single red assessment here overrides all other category scores. Post-audit code changes without re-audit are the structural mechanism by which protocols convert a high-assurance codebase into an unreviewed one — the Euler Finance lineage demonstrates that even well-resourced protocols with multiple auditors cannot treat audited status as permanent once code changes.
Measurement what to look for #
Count deployed changes to audited bytecode where no subsequent audit or spot-review covers the changed code.
Data & output #
Data source
Audit PDF report commit SHA + deployed bytecode commits after audit + diff LOC + any post-audit audit PDF
Output format
Green / Yellow / Red
· critical gate active
Evidence artifact
Diff between audit commit and deployed commit + LOC changed + subsequent audit PDF URLs (if any)
Confidence signal
green = all post-audit changes covered by follow-on audit or zero material changes; yellow = minor post-audit changes (<50 LOC) not covered but documented; red = material post-audit code changes deployed without any audit coverage; gray = audit commit SHA not determinable
Scored protocols 80 carry this factor #
Linked hacks 9 historical incidents #
relatedGMX V1 — Cross-Contract Reentrancy via Order-Keeper Callback2025-07-09 · Cross-Contract Reentrancy via Order-Keeper Callback · ★ Post-audit code changes deployed without re-audit [via cross-hack: Factor 21: Post-Audit Code Change Without Re-Audit]
→
causalBedrock (uniBTC vault) — Unregistered NATIVE_BTC in SigmaSupplier → disabled supply cap → ETH-to-BTC 1:1 minting (infinite mint)2024-09-25 · $2M · Unregistered NATIVE_BTC in SigmaSupplier → disabled supply cap → ETH-to-BTC 1:1 minting (infinite mint) · ★ Post-audit code changes deployed without re-audit [via cross-hack: Factor 21: Post-Audit Code Change Without Re-Audit]
→
causalPenpie — Reentrancy via fake Pendle market → staking balance inflation → excess reward drain2024-09-03 · $27M · Reentrancy via fake Pendle market → staking balance inflation → excess reward drain · ★ Post-audit code changes deployed without re-audit [via cross-hack: Factor 21: Post-Audit Code Change Without Re-Audit]
→
causalHedgey Finance — Unverified User Input — Flash Loan Enabled Approval Manipulation2024-04-19 · $45M · Unverified User Input — Flash Loan Enabled Approval Manipulation · ★ Post-audit code changes deployed without re-audit [via cross-hack: Factor 21: Post-Audit Code Change Without Re-Audit]
→
causalPlatypus Finance (3rd exploit) — Flash loan + LP-AVAX pool cash/liability manipulation → slippage-inflated swap output2023-10-12 · $2M · Flash loan + LP-AVAX pool cash/liability manipulation → slippage-inflated swap output · ★ Post-audit code changes deployed without re-audit [via cross-hack: Factor 21: Post-Audit Code Change Without Re-Audit]
→
causalLevel Finance — Logic bug — referral reward claimMultiple() epoch not checked for reuse2023-05-01 · $1M · Logic bug — referral reward claimMultiple() epoch not checked for reuse · ★ Post-audit code changes deployed without re-audit [via cross-hack: Factor 21: Post-Audit Code Change Without Re-Audit]
→
causalSafemoon — Upgrade introduced public burn() function → LP token burn → pool price manipulation → BNB drain2023-03-28 · $9M · Upgrade introduced public burn() function → LP token burn → pool price manipulation → BNB drain · ★ Post-audit code changes deployed without re-audit [via cross-hack: Factor 21: Post-Audit Code Change Without Re-Audit]
→
causalPancakeBunny — Flash loan + spot price manipulation → inflated LP token valuation → excess BUNNY minting2021-05-19 · $45M · Flash loan + spot price manipulation → inflated LP token valuation → excess BUNNY minting · ★ Post-audit code changes deployed without re-audit [via cross-hack: Factor 21: Post-Audit Code Change Without Re-Audit]
→
causalPickle Finance — Fake jar injection — missing whitelist in Controller's jar-swap function2020-11-22 · $20M · Fake jar injection — missing whitelist in Controller's jar-swap function · ★ Post-audit code changes deployed without re-audit [via cross-hack: Factor 21: Post-Audit Code Change Without Re-Audit]
→
rubric_version v1.7.0 factor RD-F-139 category 9 carried 80 critical yes