Kerne Logo

Audit and Security Posture

Last updated: July 31, 2026

Audit status in one line, because this is the question most readers arrive with: Hexens completed a paid external review and published the final report on July 31, 2026. It is readable in full, and the auditor hosts its own copy at hexens.io, so the claim can be checked against a source Kerne does not control. Kerne is also on their public client index, which states the same finding counts on their domain rather than ours. Every finding, with our response to each one, is at the full report page. Who outside Kerne has checked Kerne at all, including the five reviews Kerne did not pay for, is at independent verification. A completed review of five contracts at one commit is not a statement that the code is safe, and this page will never make one.

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 15 minutes), see /risk.

External audit: Report published
As of July 31, 2026

Hexens published its final report on July 31, 2026, and it is readable in full.

Scope is kUSD, skUSD, KUSDPSM, KerneVault, and esKERNE (the five contracts named in the report's own scope section, each pinned to one commit), all at commit 0912c870. Fieldwork ran from July 13, 2026 and Hexens delivered the final report on July 31, 2026, ahead of the mid-August 2026 window Kerne had published as its own estimate. It is published in full at the public contract registry, so nothing on this strip has to be taken on trust. The report counts ten findings: none critical, two high, two medium, four low and two informational. Eight are fixed and two are acknowledged without a code change. All ten are in KerneVault.sol; the other four reviewed contracts drew none. Our response to each finding, including the two we did not change, is at every finding and our response. A completed review of five contracts at one commit is not a statement that the code is safe, and this strip will never make one. The engagement is finished, so this diary stops running on a cadence. It gets a new entry when something about the audit posture actually changes, starting with the deployment of the remediated vault build. This strip states what happened, not a verdict on it.

An audit reviews a commit, not a chain. Of the five reviewed contracts, the live peg stability module and skUSD run the audited commit exactly. The live KerneVault does not: it was deployed on June 16, 2026 from earlier source, so the report's vault findings are open on it. That vault holds no user funds and no shares, and no deposit opens into it until the remediated build is live and verified. The full map, with commands to check every claim yourself, is at /security/deployed-vs-source.

Confirmed by Hexens: the auditor stated this engagement publicly, from its own account, on July 10, 2026. This confirms the engagement, not its outcome.

How findings are handled, including the triage timeline, severity handling, and the commitment to publish the full report whatever it contains, was pre-committed before fieldwork began on the findings-response protocol page, and still governs anything raised now that the engagement is closed.

Fieldwork diary

  1. 2026-07-31

    Final report published

    Hexens delivered the final report today and it is published in full, unedited, in the public contract registry. Ten findings against commit 0912c870: none critical, two high, two medium, four low, two informational. Eight were fixed and two were acknowledged without a code change, and the reasoning on both of those is published rather than summarised. All ten are in KerneVault; kUSD, skUSD, the peg stability module and esKERNE drew none between them, though both high findings concern the escrow forfeiture mechanism and are filed against the vault because that is where the code sits. The report records that all issues were either remediated or acknowledged and subsequently verified by its auditors. Two things this does not change. The live KerneVault still runs bytecode that predates the reviewed commit, so those vault findings are open on it, deposits stay closed, and nothing reopens until the remediated build is deployed and verified. And we will not describe this code as passed, clean, or secure, now or after any future audit. Our response to every finding is at /insights/hexens-audit-every-finding-and-our-response.

  2. 2026-07-30

    We closed the door we told you was open

    On July 25 we published that the live vault's on-chain deposit gate had never been deployed, so anyone could have deposited into bytecode carrying ten open findings. We also published the exact fix: one 2-of-3 Safe call to setWhitelistEnabled(true). That call executed on July 30, 2026, transaction 0x0be06e9a4a4ce3545fdea6af8e83ed1663e8d0ce35cb28a211836ab83a57579e. maxDeposit() now returns 0 for every address, withdrawals are untouched, and nobody ever deposited while it was open: totalSupply was 0 throughout and still is. Checking the vault before we closed it surfaced a second defect we had not published. The vault reports 0.013714087110463148 WETH of total assets while holding no WETH at all, because that figure is entirely the off-chain l1Assets bucket the strategist key writes. Against a zero share supply that distorts the share math by about 1.4e16, and it meant any WETH deposit at or below 13,720,947,584,255 wei, roughly 2.6 cents, would have minted zero shares and kept the deposit. We reproduced it on a fork of Base against the live bytecode. It cost nobody anything because nobody had deposited, and it is now unreachable. This does not remediate the vault. It closes the window until the remediated build is deployed and verified and the share math reads correctly.

  3. 2026-07-25

    Two corrections we found in our own record

    First, scope. We had been saying four contracts. The report's own scope section names five, adding esKERNE, so every surface now says five and the entry below has been corrected. Second, and more important: an audit reviews a commit, not a chain. We checked all five reviewed contracts against their deployed bytecode. The live peg stability module and skUSD match the reviewed commit exactly. The live KerneVault does not, because it was deployed on June 16, 2026 from earlier source, so the initial report's vault findings are open on it. That vault holds no user funds and has never issued a share, and no deposit opens into it until the remediated build is live. We also found that the on-chain deposit gate we wrote for that vault was never deployed. The full map and the commands to check it are on the deployed versus source page.

  4. 2026-07-20

    Initial report received

    Hexens delivered its initial report on this date and remediation began. As of this entry the final report had not yet arrived, and the code had not yet been through a completed external audit. Both of those changed on July 31, 2026: the final report was delivered and published in full, and that entry sits above this one. Process notes continued here while remediation ran, and anything raised was handled per the published findings-response protocol.

  5. 2026-07-13

    Day 1

    Fieldwork underway

    Hexens confirmed in writing that fieldwork started today. Scope is five contracts: kUSD, skUSD, KUSDPSM, KerneVault and esKERNE. (Corrected on July 25, 2026: this entry originally said four and omitted esKERNE. The report's own scope section names five.) Process notes land here two to three times a week while the engagement runs; any finding is handled per the published findings-response protocol.

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): 8 are closed in source, 2 are mitigated (the surface is offline, inactive, or already patched in source with only operational cleanup pending), 1 is partial, and 8 remain open.

Of the 8 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 1 is an infrastructure-hardening item that remains 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

8

Mitigated

2

Partial

1

Open

8

Source verifications

14 of 18

On BaseScan and Sourcify

Latest audit

2 audits

May 8 adversarial + May 11 comprehensive, full triage published

External audit

Hexens: final report published

Fieldwork ran from July 13, 2026 and the final report published on July 31, 2026, readable in full in the public contract registry. Ten findings, none critical, eight fixed and two acknowledged, all in KerneVault. Scope is five contracts at commit 0912c870: kUSD, skUSD, KUSDPSM, KerneVault, esKERNE. The live peg stability module and skUSD run that exact commit; the live vault does not, so its findings are open on chain and deposits are closed.

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.

Report held in the internal security repository, not published: it carries live exploitation detail and infrastructure specifics against contracts that are not yet remediated. Available to counterparties on request under NDA. Remediation is tracked per named 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).

Report held in the internal security repository with complete §3 triage, not published, for the same reason as the 2026-05-11 pass; available to counterparties on request under NDA. §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).
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, fieldwork from July 13, 2026, final report published July 31, 2026) 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: totalSupply is 0, its WETH balance is 0, and no third party has ever held a share. Being precise about the second half of that sentence, because we got it wrong here until July 25, 2026: the deposit interface was closed in the app, but the on-chain deposit gate we wrote for this was never deployed, so the live contract accepted deposits from any address. That is closed as of July 30, 2026: the Safe called setWhitelistEnabled(true) in transaction 0x0be06e9a4a4ce3545fdea6af8e83ed1663e8d0ce35cb28a211836ab83a57579e, so maxDeposit() now returns 0 for every address while withdrawals stay open. The deposit gate itself still ships at the next vault redeployment. The full deployed-versus-audited map is at /security/deployed-vs-source. 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. The full report is preserved at docs/security/COMPREHENSIVE_AUDIT_2026-05-11.md in our internal security repository and is not published on the open web, because it names live infrastructure and gives working exploitation detail for findings that are not yet remediated. It goes to counterparties on request under NDA.

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 and is not published on the open web, for the reason given above. Live status for every NAMED finding, open items included, is published at /security/findings-tracker; that tracker carries the named subset of this corpus rather than all 201 rows.

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 18 deployed Kerne contracts have their source verified on both BaseScan and Sourcify. The remaining 4 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
VerifiedVerifiedSafe-governed WETH vault, ceremony 2026-06. Deposits closed 2026-07-30 (whitelistEnabled true, empty whitelist, maxDeposit 0). kUSD MINTER_ROLE revoked 2026-08-03T04:01:31Z, block 49470172, tx 0x36f7b520fe2071121da65e5690ca21b0df0df35b5ae1bd19e3d83a4e8d3bf6de (Safe nonce 19, signed 2026-08-01 and executed 2026-08-03); it was granted at block 47433114 and never used, because this contract has no mint code path. Source-verified 2026-06-17: Sourcify exact match (runtime + creation) and BaseScan native, solc 0.8.24 / via_ir / 1000 runs / cancun.

KUSDPSM (live)

0xaBDE1138aa1Ce88d1dF06422C0c3b05D70569803
PendingVerifiedLive USDC-to-kUSD mint path; the only holder of kUSD MINTER_ROLE (sole holder since 2026-08-03; proving the set is exactly one needs a replay of RoleGranted and RoleRevoked from kUSD creation block 44448090, because kUSD is plain AccessControl and getRoleMemberCount reverts). Redeployed 2026-07-10 (routine redeploy ahead of the July audit; config mirrors the prior instance). Sourcify exact match (runtime + creation) 2026-07-10, solc 0.8.24 / via_ir / 1000 runs / cancun. Depeg breaker armed (Chainlink USDC/USD, fail-closed). Oracle staleness window widened 26h to 48h on 2026-08-03 (tx 0x3e4c4d0c0fd33ddbb2d45b4d10a58d15faebe284d6301c57c7a3fbb529562989): the feed is a 24h heartbeat, so the previous window left under two hours of margin before one skipped update would have reverted every mint and redeem. That accepts a staler price in exchange for liveness, and is recorded as a deliberate trade at a small book rather than as an improvement. Safe-only admin.

KUSDPSM v3 (retired 2026-07-10)

0x07eBb486e11BD217e6085eb5ab663e4517595993
VerifiedVerifiedSuperseded by the 2026-07-10 KUSDPSM above; MINTER revoked, retained redeem-only while its USDC reserve backs outstanding kUSD through the migration window. Source-verified 2026-06-17 (Sourcify exact + BaseScan native).

kUSD v2

0x5C2EfdF0D8D286959b42308966bc2B97f5680AA3
VerifiedVerified

skUSD

0x96F5102C15b839757f811A98CEc3725Ac21DfA14
VerifiedVerifiedRedeployed 2026-07-03 (supersedes 0xdEd74F7E06efc76455C07418b8b74Cc2bc009DB4). Sourcify partial match + BaseScan Similar Match, 2026-07-04.

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. Its USDC reserve is read live below, and published as psmUSDCLegacy at kerne.fi/api/stats.

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 holds DEFAULT_ADMIN and MANAGER. AUTHORIZED_ROLE is currently granted to the live KerneVault v2, which whitelists that vault as the fund's injection recipient; the fund holds 0 WETH so nothing is drawable, and stripping the grant is tracked as an open finding on /security/findings-tracker.

KerneFlashArbBot

0x57e73919Efc8a70B40a0bFc562C4DC9e58c4D76F
PendingPendingSource drift; queued for redeploy via RedeployArbSuite.

KerneTreasury v3 (live fee sink)

0x5343C41d4FF2B61DAacA9cbC050550C40605B075
PendingPendingDeployed 2026-06-16. This is the address the live mint PSM sends fees to: the Safe repointed PSM.setTreasury here on 2026-07-13 (nonce 17), which anyone can confirm with cast call <PSM_MINT> "treasury()(address)". Safe Multisig is sole owner. Source verification is genuinely outstanding, and it is listed as Pending rather than inherited from v2's status: the LIVE treasury is currently the less verified of the two, which is the wrong way round and is tracked as an open finding.

KerneTreasury v2 (superseded)

0x7c07517ABcc4BD674CC74B76D2Ab0d95A41560d5
VerifiedVerifiedRedeployed 2026-05-16. Sourcify exact match; BaseScan verified 2026-06-11. Superseded as the mint PSM's fee destination on 2026-07-13, but NOT dormant: vault v2 and the retired mint PSM still return it from treasury(), so it can still receive. It runs pre-patch bytecode whose executeBuyback has no keeper gate, so it must never be sent value or used as a buyback target. Legacy 0x0067F4…2106 retired (held 0 of every token). Safe Multisig is owner.

The redeem-legacy module above still custodies the USDC that backs residual external kUSD. That balance is read live rather than printed here as fixed text, because it moves and a number typed into a page does not: read it on BaseScan. Until August 4, 2026 this page stated it as "~117 USDC reserve", which had drifted 36% above the real balance while our own /api/stats and /transparency were already serving the correct figure. Do not take it from us: the same balance is readable directly on BaseScan.

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 completed its first external smart-contract audit. Fieldwork ran from July 13, 2026, Hexens delivered its initial report on July 20, 2026, and the final report published on July 31, 2026. It is committed in full, unedited, in the public contract registry: read the report. Ten findings: none critical, two high, two medium, four low and two informational. Eight were fixed and two were acknowledged without a code change, with the reasoning published rather than summarised, and all ten sit in KerneVault. Our response to each one is at every finding and our response, and the finding table itself, each id with its severity, disposition and our answer beside it, is at /security/hexens-2026. The report pins its scope to five contracts at commit 0912c870: kUSD, skUSD, KUSDPSM, KerneVault and esKERNE. Reviewed source and deployed bytecode are separate facts, and the gap between them is stated in full at /security/deployed-vs-source. The auditor-facing scope document is public: Tier 1 covers the deployed risk-bearing contracts, 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) remains the largest finding set Kerne has published, and the operating commitment is to keep the open finding count public until it converges to zero.

This engagement is confirmed publicly by Hexens itself. Hexens stated it from its own account on July 10, 2026, noting Kerne's place in their Builder Support Program. That is a third-party source for the engagement, Hexens rather than Kerne, not a claim Kerne makes about itself. It confirms the engagement, not the outcome. The outcome is now published and readable above, and a completed audit is still not a certificate that the code is safe.

How a finding of any severity is triaged, remediated, and disclosed, including the triage timeline, severity handling, and the commitment to publish the full report whatever it contains, was pre-committed on the findings-response protocol page, published before fieldwork began. That protocol still governs anything raised from here on.

With the engagement closed, the bug bounty program is the standing external verification channel, alongside the completed Hexens review published on July 31, 2026.

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.

If you are evaluating Kerne to do this kind of work for you rather than to hold your capital: the Whitehat Desk runs the same adversarial pass over your contracts before you commit to a full audit, and the treasury health check does it over a corporate treasury instead. The cheapest of the three is the Disclosure Integrity Audit, $499 delivered within 72 hours of scope confirmation, which reads published claims against public chain data rather than testing contracts. All three are fixed scope and priced in public on the pricing page.

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.