Kerne Logo

Audit and Security Posture

Last updated: June 29, 2026

Every audit, security sprint, and on-chain verification action that has happened on Kerne to date, with hard finding counts and links to the supporting source documents. Where work is incomplete or gaps remain, those are listed here too. For the per-finding live status (open / partial / closed / mitigated) of every named item in the 2026-05-11 and 2026-05-08 audits, see the Findings Tracker. For the live continuous-verification surface (wired thresholds vs. on-chain values, refreshed every 60 seconds), see /risk.

Remediation posture

Live status of the named critical findings

Kerne self-found and published these criticals before engaging any external auditor. Across the 19 named, prioritized criticals tracked with live status (a subset of the full May 8 and May 11 audit counts, which are shown with their triage in the sections below): 6 are closed in source, 3 are mitigated (the surface is offline, inactive, or already patched in source with only operational cleanup pending), 1 is partial, and 9 remain open.

Of the 9 open: 7 are contract-level, each with its compensating control and remaining work documented per finding on the tracker (for example deposits gated, the contract not in the live deploy path, admin actions Safe-bound, or pausing gated behind a manual Safe co-sign), and 2 are infrastructure-hardening items (VPS Postgres exposure and SSH posture) that remain genuine live surface, named here rather than papered over and queued for a hardening pass. Every finding's live status and exact compensating control is on the Findings Tracker.

Closed

6

Mitigated

3

Partial

1

Open

9

Source verifications

14 of 16

On BaseScan and Sourcify

Latest audit

2 audits

May 8 adversarial + May 11 comprehensive, full triage published

External audit

Hexens selected

Engagement not yet started as of June 24, 2026; scope kUSD, skUSD, KUSDPSM, KerneVault; report pending

Bug bounty

Active

See bug bounty program

Timeline

The full chronological record. Most recent first.

DateActionStatus
2026-06-28

Independent security researcher review (3-person independent research team)

A three-person independent security research team reviewed the deployed core contracts (WETH vault, PSM) on their own initiative, not under a paid engagement, and submitted 8 written findings. Each was assessed against the live source-verified bytecode on Base mainnet (not just repository source), the live Foundry invariant suite (5 invariants, 512 runs by 65,536 calls, 0 reverts), and on-chain reads. Anonymized summary and full per-finding response published at audits/INDEPENDENT_REVIEW_2026-06.md in the public contract registry.

8 findings, none live-exploitable: 4 duplicate already-fixed internal findings, 3 false positives vs deployed code, 1 valid currently-inert pre-launch item (fixed in source, staged for the next vault redeploy). Researcher-initiated review, not a firm audit.
2026-05-11

Comprehensive multi-surface audit (8-agent parallel)

Full re-audit of all 80 contracts plus frontend, bot, VPS, and Postgres surfaces. Agents ran concurrently across Solidity, Python, TypeScript, and infrastructure layers. Identified 22 new Critical findings including Opal cron authentication gap, vault pause bypass, insurance fund firewall, and Postgres TLS configuration. Full report at docs/security/COMPREHENSIVE_AUDIT_2026-05-11.md.

Full report published; remediation tracked per finding, live status at /security/findings-tracker. Counts: 22 new Critical plus additional High, Medium, and Low findings.
2026-05-08

Internal adversarial audit (10-auditor parallel red team)

Every .sol in src/ (80 contracts) under a 20-30 vector adversarial checklist per cluster: reentrancy, oracle manipulation, share inflation, flash-loan price manipulation, MEV, replay, ERC-4626 invariants, access control, cross-chain bridge attacks, role boundary violations. Identified the root cause of the live degraded WETH vault and catalogued cross-cutting attack patterns (recoverTokens / emergencyWithdraw single-key drains, init front-run on factory clones, spot-DEX or stale Chainlink as oracle, ERC-4626 inflation defense gaps, cross-chain message replay, permissionless deposit/donation as DoS, pause as griefing primitive, single-key admin / threshold = 1).

Full report published with complete §3 triage; §1.18 KerneStaking lock-bypass patched in source same-day with 7 regression tests, remainder queued by triage phase, live per-finding status at /security/findings-tracker. Counts: 201 findings (36 Critical / 51 High / 51 Medium / 37 Low / 26 Info). Report at docs/security/ADVERSARIAL_AUDIT_2026-05-08.md.
2026-04-26

KerneToken deployed-source disclosure

Public disclosure that the deployed KERNE contract is the Jan 7 source (100M initial mint, multisig-gated MINTER_ROLE), not the 1B fixed-supply Feb 28 rewrite. Marketing copy reconciled, public commitment on minter discipline published.

Published
2026-04-25

KerneToken source verification

On-chain bytecode reproduced from Jan 7 source, verified on BaseScan, Sourcify, Blockscout.

Complete
2026-04-21

Verification gaps evidence document

Per-contract deploy timestamps, first-diff character positions, resolution paths for the 6 unverified contracts.

Published
2026-04-18

Frontend security audit

kerne.fi and app.kerne.fi: CSP, secret leakage, open-redirect, address registry consistency, geo-block, sanitizer review.

17 PASS / 5 WARN / 0 FAIL
2026-04-17 to 2026-04-18

Orphan role revocation

All 6 operational roles (PAUSER x2, MANAGER, EXECUTOR, SENTINEL, STRATEGIST) revoked from the legacy EIP-7702-trapped deployer EOA.

Complete on-chain (Safe nonces 6 to 11)
2026-04-17

Security sprint (homoglyph & supply-chain class)

13 commits, full Solidity + Python + deployment surface review. Eliminated address-literal drift, unchecked send paths, over-permissive approvals, and contract-level hardening (skUSD inflation guard, LayerZero refund, IntentExecutor post-condition).

Complete
2026-04-09

Internal security assessment (Slither + Foundry)

All 12 deployed contracts plus 57+ Kerne-authored sources. Slither v0.11.3 + Foundry tests + role-access review.

Complete (see findings below)
2026-04-06

On-chain admin audit

DEFAULT_ADMIN_ROLE migration verification across 9 AccessControl contracts plus KerneTreasury.owner() and kUSD v2.

Complete (Safe holds admin on all)

Independent Security Review, June 2026

In June 2026 a three-person independent security research team reviewed Kerne's core contracts on their own initiative, not under a paid engagement, and sent eight written findings to our disclosure inbox. We assessed every finding against the live, source-verified bytecode on Base mainnet, not just repository source, and sent the team a full per-finding response. The anonymized summary and our response are published in the public contract registry at audits/INDEPENDENT_REVIEW_2026-06.md.

This was a researcher-initiated review, not a completed third-party firm audit, and we describe it as exactly that. The external firm engagement (Hexens, selected, not yet started) is tracked separately under External Audit Posture below.

Result: no finding is exploitable on the live deployment. Four describe real bug classes Kerne had already identified and fixed in its May to June internal audit cycle, confirmed present in the deployed verified source; the submitted proofs were written against a pre-fix snapshot and do not reproduce on chain. Three do not match the deployed code at all, meaning the quoted vulnerable code is not what is live. One is a genuine, currently-inert pre-launch accounting item that independently confirms a finding from our own May 8 internal audit: in the vault outflow path, on-chain tracked assets are decremented before the matching off-chain or bridged bucket is credited, so a deposit inside that reconciliation window could over-mint. It is inert because the vault is empty and the deposit interface is not open, it is now fixed in source with an added on-chain deposit gate, and it ships at the next vault redeployment. Each ruling was checked against the live Foundry invariant suite (five invariants, 512 runs by 65,536 calls, zero reverts) and on-chain reads.

An independent team reaching four of the same conclusions we had already reached, on its own, is the signal worth having: evidence the internal audit cycle found the real issues. We would rather show that with the findings and our response attached than assert it. If the researchers consent to be named, this section and the published summary will be updated to credit them.

Comprehensive Multi-Surface Audit, May 11, 2026

Eight agents ran concurrently across the full protocol surface: all 80 Solidity contracts, the Python trading bot, the Next.js frontend (kerne.fi and app.kerne.fi), the VPS infrastructure, and the Postgres ledger backing the Opal fragment system. This audit followed the May 8 adversarial pass and targeted the operational and infrastructure layers that the Solidity-focused pass did not cover. Full report at docs/security/COMPREHENSIVE_AUDIT_2026-05-11.md.

Result: 22 new Critical findings surfaced and triaged. Top issues included Opal cron endpoint lacking authentication (any caller could trigger hourly fragment accrual), KerneVault removeLiquidity missing the whenNotPaused modifier (race condition allowing LP drain against a Safe pause), insurance fund lacking a firewall preventing protocol-side misuse, and the Postgres instance missing verify-full TLS on the connection string. Additional High, Medium, and Low findings across the Python bot and frontend surfaces.

Remediation status. The YieldAMM pause bypass (removeLiquidity whenNotPaused) was patched pre-deploy (contract never deployed). The PSM unit-mismatch, fee-routing drift, and exposure floor-reset were each fixed in source (riding the PSM v3 redeploy). The Opal cron authentication gap was addressed 2026-06-04. Remaining items queued per triage order. Live per-finding status at /security/findings-tracker.

Adversarial Audit, May 8, 2026

An internal red team ran a 10-auditor parallel adversarial review of every Solidity file insrc/, applying a 20 to 30 vector adversarial checklist per cluster (reentrancy, oracle manipulation, share inflation, flash-loan price manipulation, MEV, replay, ERC-4626 invariants, access control, cross-chain bridge attacks, role boundary violations). The full report is preserved at docs/security/ADVERSARIAL_AUDIT_2026-05-08.md in our internal security repository. Live status for every finding is published at /security/findings-tracker.

Result: 201 findings surfaced, classified, and triaged across 80 contracts (36 Critical, 51 High, 51 Medium, 37 Low, 26 Info). The audit identified the root cause of the live degraded WETH vault (KerneVault bucket-transition asymmetry:sweepToExchangeand three sibling functions decrement_trackedOnChainAssetsbut do not atomically incrementoffChainAssets, collapsingtotalAssets()between strategist updates and triggering the ERC-4626 1-wei-inflation case on the next deposit). It also catalogued cross-chain bridge triple-mint primitives, OFT V1/V2 single-key mint backdoors, withdrawal-queue stale-asset payment, KerneYieldStripper PT/YT pool insolvency, KerneVerificationNode threshold defaults to 1, KernePrime accounting-only ledger, KernePriceOracle slot0 fallback, six contracts with single-key recoverTokens or emergencyWithdraw drains, init front-run on factory clones, attacker-supplied calldata patterns on aggregator harvest paths, DarkPool RFQ permitting self-swap, ZINRouter pocketing surplus over minAmountOut, InsuranceFund socializeLoss with no cap or cooldown, Airdrop emergencyWithdraw draining locked balances, esKERNE vesting math broken on second emission, and the RWA adapter convertToShares round-trip ignoring receipt.

Remediation cadence. The audit's§1.18KerneStaking lock-bypass was patched in source the same day. Seven regression tests intest/unit/KerneStaking.t.soldemonstrate the exploit is now blocked (forge test reports 25 of 25 staking tests passing includingtest_stake_cannotShortenExistingLock_attackBlocked). The remaining findings are queued per the audit's§3triage order: Phase 1 live-exploitability items first (vault bucket atomicity, KernePrime ledger wiring, IntentExecutor V1 SOLVER_ROLE, OFT mint backdoor, oracle slot0 fallback), then Phase 2 launch-blocking (bridge replay, verification node threshold, yield system insolvency, attestation forgery, adapter clone init, RWA depeg surface), then Phase 3 capital-protective hardening, then Phase 4 code hygiene.

We commit to keeping the open finding count public until it converges to zero, and to engaging a professional external auditing firm before any TVL scaling beyond the Genesis Window phase. Rather than rely on a periodic manual update, the findings tracker at /security/findings-tracker is the live per-finding status surface and moves with each remediation commit; the remediation-posture summary at the top of this page is derived from the same data.

Internal Security Assessment, April 9, 2026

Slither v0.11.3 (Trail of Bits) was run against the entire codebase, producing 692 total findings across all severity levels. Foundry test suite reports 949 of 951 tests passing. Of the 7 high-severity findings, 5 affect contracts that are not deployed on mainnet (KerneDarkPool, KerneMigrationRouter, KerneZINPool) and are flagged for pre-deployment review only. The two high-severity findings on deployed contracts (KerneVault, KerneFlashArbBot) are protected by role-based access control and were assessed as low actual risk after review.

No critical vulnerabilities were identified in deployed production contracts. This represents automated tooling output and internal analysis. It does not constitute a professional third-party security audit, and we are committed to engaging a professional auditing firm before scaling TVL beyond the genesis phase.

Security Sprint, April 17, 2026

Triggered by an internal incident in which 787 USDC was sent to a homoglyph vanity address (the visually similar but distinct address that had been hardcoded as the Hyperliquid bridge in the bot). The sprint produced 13 commits and eradicated five classes of bug across the bot, the Solidity surface, and the deployment scripts.

  • Address-literal drift. The HL bridge fix, plus wstETH and cbETH homoglyphs in solver Python, plus a dead-EOA Aerodrome router constant, plus a wrong Uniswap router constant.
  • Unchecked send paths. Receipt-status guards added on six call sites that had been logging success on tx hash return without verifying on-chain success.
  • Server-supplied safeTxHash trust. Client-side recompute before Trezor signing; the RFQ server zero-byte signature fallback returns HTTP 503 instead of a fake signature.
  • Over-permissive approvals. capital_router infinite approvals replaced with exact-amount approvals to an allowlisted Li.Fi Diamond; Hyperliquid withdrawals gated by an env-driven destination allowlist.
  • Contract-level hardening. skUSD ERC-4626 inflation-attack mitigation via _decimalsOffset = 6, LayerZeroRelay refund routed to msg.sender for AA/EIP-7702 safety, IntentExecutor V1 and V2 typed revert if post-swap balance is insufficient.

The 787 USDC is unrecovered and treated as paid tuition. Every other instance of the same bug class was eliminated in the same sprint, plus a pre-commit secret scanner (gitleaks with two Kerne-specific rules) was added to prevent regression.

Frontend Security Audit, April 18, 2026

White-box static analysis plus live HTTP probe of both kerne.fi and app.kerne.fi. Verdict: 17 PASS, 5 WARN, 0 FAIL.

All 17 PASS items: no .env or .git/config exposed in production, HSTS plus subdomains delivered, X-Frame-Options DENY, X-Content-Type-Options nosniff, tight Permissions-Policy, strict Referrer-Policy, full CSP, no eval or innerHTML in the terminal app, only one dangerouslySetInnerHTML site-wide (sanitized, fed by static data), no open-redirect pattern, no client-side secret env exposure, contract addresses match the canonical registry exactly, OFAC sanctions coverage complete, geo-block enforced server-side, JSON.parse of untrusted data try-catch guarded, localStorage holds no sensitive data.

The 5 WARN items are documented accepted trade-offs: Next.js App Router CSP requires unsafe-inline and unsafe-eval for hydration, the marketing sanitizer is regex-based but only fed static repo data, /api/apy and /api/apy/history use Access-Control-Allow-Origin star for cross-site read, /api/stats falls back to public Base RPC if the env var is unset, and Ukraine is blocked at the country level as a Crimea proxy because Vercel does not expose region-level headers.

Orphan Role Revocation, April 17 to 18, 2026

The original deployer EOA at 0x57D400cED462a01Ed51a5De038F204Df49690A99was delegated to a drainer contract under EIP-7702 and could no longer sign transactions, but it still held six operational roles across four contracts. All six were revoked through the 2-of-3 Safe at Safe nonces 6 through 11.

  • KerneVault PAUSER_ROLE (nonce 6)
  • KerneToken PAUSER_ROLE (nonce 7)
  • KerneInsuranceFund MANAGER_ROLE (nonce 8)
  • KerneFlashArbBot EXECUTOR_ROLE (nonce 9)
  • KerneFlashArbBot SENTINEL_ROLE (nonce 10)
  • KerneVault STRATEGIST_ROLE (nonce 11; flagged post-sprint and revoked April 18)

Verified on chain at block 44,883,093. The drainer EOA now holds zero AccessControl roles across every Kerne contract.

Source Verification Status

14 of 16 deployed Kerne contracts have their source verified on both BaseScan and Sourcify. The remaining two are tracked with documented reasons and resolution paths. Statuses re-checked 2026-06-11 against both explorers.

KERNE token, deployed-source disclosure

Verifying the KerneToken contract surfaced a meaningful gap between the deployed source and the previously published documentation. The deployed contract is the January 7 version with a 100,000,000 initial mint and a multisig-gated MINTER_ROLE, not the February 28 rewrite that claimed a 1,000,000,000 cryptographically-fixed supply. We published the gap, the reconciled facts, and a public commitment on minter discipline rather than letting it be discovered without context. Read the full KERNE token disclosure.

ContractBaseScanSourcifyNote

KerneVault v2 (live)

0x8ccc56B5624e2FDB592F6609d81F4c3798e3292B
VerifiedVerifiedLive deposit/mint vault (ceremony 2026-06; Safe-governed). Source-verified 2026-06-17: Sourcify exact match (runtime + creation) and BaseScan native, solc 0.8.24 / via_ir / 1000 runs / cancun.

KUSDPSM v3 (live)

0x07eBb486e11BD217e6085eb5ab663e4517595993
VerifiedVerifiedLive USDC-to-kUSD mint path; holds kUSD MINTER. Source-verified 2026-06-17 (Sourcify exact + BaseScan native). Depeg breaker armed (Chainlink USDC/USD, fail-closed).

kUSD v2

0x5C2EfdF0D8D286959b42308966bc2B97f5680AA3
VerifiedVerified

skUSD

0xdEd74F7E06efc76455C07418b8b74Cc2bc009DB4
VerifiedVerifiedSourcify match 2026-05-14; BaseScan verified 2026-06-11.

KerneVault (v1, superseded)

0x8005bc7A86AD904C20fd62788ABED7546c1cF2AC
VerifiedVerifiedSuperseded by KerneVault v2 above. Retained for redeem of residual v1 positions; no longer the live mint path.

KUSDPSM (v1, redeem-legacy)

0xFf3025ec18e301855aB0f36Ec6ECa115a29A5Fbc
VerifiedVerifiedSuperseded by KUSDPSM v3 above. MINTER revoked; retained redeem-only to back residual external kUSD (~117 USDC reserve).

KERNE (v2)

0x230f3a63E8413D42bEe9103b98a204030206186c
VerifiedVerifiedCanonical governance token. Sourcify match; BaseScan verified 2026-06-11.

KerneToken (v1, retired)

0xfEA3D217F5f2304C8551dc9F5B5169F2c2d87340
VerifiedVerifiedSuperseded by KERNE v2 above. Jan 7 source, partial-match metadata; 100M initial supply on chain. See KERNE token disclosure linked above.

KerneYieldOracle

0x8DE2d5ac5aBc7331a6E1d450a5c021db18599CdB
VerifiedVerified

KerneYieldDistributor

0x096e38a04B632D28E017f86836225E0956CaD878
VerifiedVerified

esKERNE

0x29c1d396A35aB75a8Bb8dC3949f98edFa5f25b34
VerifiedVerified

KerneReferral

0x1A04AF62baFc84b08b19d2aF7285eD5f8dAe4D9f
VerifiedVerified

KerneStaking

0x032Af1631671126A689614c0c957De774b45D582
PendingPendingPre-2026-01-07 git-history reset; reproduction blocked (re-attempted 2026-06-11: current source compiles to a different code body). Redeploy from verified source planned.

KerneInsuranceFund

0xE8799FCF327C6D2f78103a3c9308C93592A30403
VerifiedVerifiedRedeployed 2026-05-16. Sourcify exact match; BaseScan verified 2026-06-11. Legacy 0x3C93E2…08B9 retired (held 0 WETH). Safe Multisig is sole admin; intentionally NO AUTHORIZED_ROLE on any vault.

KerneFlashArbBot

0x57e73919Efc8a70B40a0bFc562C4DC9e58c4D76F
PendingPendingSource drift; queued for redeploy via RedeployArbSuite.

KerneTreasury

0x7c07517ABcc4BD674CC74B76D2Ab0d95A41560d5
VerifiedVerifiedRedeployed 2026-05-16. Sourcify exact match; BaseScan verified 2026-06-11. Legacy 0x0067F4…2106 retired (held 0 of every token). Safe Multisig is owner; WETH+USDC approved for buyback.

Verification proves the deployed bytecode matches a published source file. It does not by itself tell you whether that deployed source is the newest source in the repository. The three places where live bytecode lags current source are disclosed, with mitigations and operating rules, at /security/deployed-vs-source.

External Audit Posture

Kerne has selected Hexens for its first external smart-contract audit. As of June 24, 2026 the engagement has not yet started and no report has been published; this page updates when the engagement begins and when the report lands. The auditor-facing scope document is public: Tier 1 covers the four deployed risk-bearing contracts (kUSD, skUSD, KUSDPSM, KerneVault, roughly 960 normalized SLOC), Tier 2 the full deployed verified surface. See audits/SCOPE.md in the public contract registry. The internal adversarial audit above (201 findings disclosed, full triage published) is the current authoritative finding set, and the operating commitment is to keep the open finding count public until it converges to zero. The Hexens report will be published in the public contract registry once it lands.

In the interim, the bug bounty program is the primary external verification channel.

Past Incidents

2026-04-17

787 USDC sent to a homoglyph vanity address

During an early Hyperliquid bridge funding action, the bot sent 787.334576 USDC on Arbitrum to a vanity address whose first ten hex characters matched the canonical Hyperliquid bridge but whose remaining characters did not. The funds are sitting in an attacker-controlled EOA and are treated as unrecoverable. No user funds were involved; no kUSD was minted; no Safe action was required to remediate.

The same day, the entire Solidity, Python, and deployment surface was audited for the same bug class. Five classes of issue were eliminated across thirteen commits, plus a pre-commit secret scanner and address-class regression tests were added. The full sprint writeup is summarized above.

Report a vulnerability via the Bug Bounty Program. See the live risk surface on the Transparency page and the canonical exit-trigger rules in the emergency runbook.

Track audit progress

Get audit findings as they close

Subscribers receive a single email each time an audit finding moves from open to closed, with the commit hash that did it. Plus milestone updates: external audit engagement, TVL gates, incident post-mortems. No volume.

By subscribing you agree to receive milestone updates from Kerne Protocol. We do not share email addresses. Read the privacy policy.