Worked example · 2025-04
KiloEx oracle-feed manipulation — multi-chain (BNB Chain, Base, Manta, Taiko) — 2025-04-14
Summary
KiloEx is a perpetual-futures DEX that operates synchronised deployments across multiple EVM chains, sharing core protocol logic — including the price-feed integration path used to compute mark prices for open positions — across BNB Chain, Base, Manta Pacific, and Taiko. The protocol consumes signed price updates from the Pyth oracle network via the standard Pyth on-chain integration pattern: a relayer submits a signed price-update message that the consuming contract verifies before applying the new price to its mark-price state.
On April 14, 2025, an attacker exploited a flaw in KiloEx's integration of this update path. Per the public forensic write-ups (PeckShield, SlowMist, and KiloEx's own post-incident disclosure), the integration on the KiloEx side did not adequately authorise who was permitted to trigger price updates against KiloEx's oracle-consuming contracts, allowing the attacker to submit a price-update sequence that drove the protocol's mark-price reading to attacker-favourable values within a single atomic transaction. The attacker funded the exploit with a flash loan, opened outsized positions against the manipulated price, closed them against the protocol's true reserves, and repaid the flash loan within the same atomic block.
The exploit ran in close temporal succession across each of the four deployments. The attacker did not need to re-discover the integration flaw on each chain because the relevant code path was shared across deployments. Cumulative on-chain extraction reached approximately $7.5M across the four chains.
KiloEx detected the anomaly, paused the affected deployments, and within hours published a public on-chain return-address offer framed as a 10% bounty. The attacker accepted the offer and returned the residual 90% across each affected chain within ~72 hours. KiloEx subsequently coordinated a protocol re-launch under a corrected oracle-integration path; user-margin balances were re-credited at the recovered values.
For OAK's purposes the structurally important features are (a) the integration-side (not vendor-side) nature of the oracle failure — Pyth's signed-price infrastructure was not itself compromised — and (b) the multi-chain fan-out dynamic, where a single integration flaw in shared code produced four near-simultaneous extractions across four chains.
Timeline (UTC)
| When | Event | OAK ref |
|---|---|---|
| Pre-event | KiloEx deploys perp-DEX contracts on BNB Chain, Base, Manta Pacific, and Taiko, sharing the oracle-integration code path that consumes Pyth signed-price updates | T9.001 surface (latent) |
| Pre-event | Authorisation gap in KiloEx's price-update path: protocol-side check on who may trigger a price update against the oracle-consuming contract is inadequate | (latent integration flaw) |
| 2025-04-14 | First manipulation transaction submitted against one of the affected KiloEx deployments; flash-loan-funded, single-block atomic extraction pattern | T9.001 + T9.002 extraction |
| 2025-04-14 | Attacker repeats the pattern across the remaining KiloEx deployments (BNB, Base, Manta, Taiko) in close temporal succession; cumulative outflow reaches ~$7.5M | T9.001 + T9.002 fan-out |
| 2025-04-14 | KiloEx operations team detects anomalous mark-price activity and outsized PnL events; pauses affected deployments | (operator response) |
| 2025-04-14 | KiloEx publishes public on-chain return-address offer framed as a 10% bounty in exchange for return of the residual 90% | (recovery negotiation) |
| 2025-04-14 → 2025-04-17 | Attacker accepts offer; funds returned across each affected chain; KiloEx confirms receipt | L1-equivalent recovery via bounty negotiation |
| 2025-04 onward | KiloEx publishes post-incident write-up; corrected oracle-integration path deployed; user-margin balances re-credited; trading restored | (transparency, re-launch) |
What defenders observed
- The failure was integration-side, not vendor-side. Pyth's signed-price infrastructure was not the failure surface. The Pyth network's signed-price messages remained authentic; the price values they carried were consistent with the network's published feeds. The failure was in how KiloEx authorised the consumption of those signed messages on its own contracts — specifically, in who could trigger an update and against what state. Defenders integrating signed-oracle feeds (Pyth, Chainlink CCIP-style, RedStone, others) should treat the authorisation of update-triggering as a first-class part of the integration, not a peripheral concern. The signed-price layer is one half of the trust boundary; the protocol-side authorisation layer is the other half, and a flaw in either half is sufficient.
- The flash-loan precondition was load-bearing. The attacker's economic ability to manipulate the resulting mark-price state and execute against it depended on supplying outsized inventory within a single atomic transaction. A flash loan was the natural funding source. Defenders running per-protocol threat models for oracle-consuming contracts should expect the T9.001 + T9.002 pairing — oracle-manipulation exploits in 2025 are flash-loan-funded by default; the OAK-T9.002 page is correctly mapped as a precondition rather than as the primary class.
- Multi-chain deployment was the amplifier. The attacker's expected-value calculation for working out the integration flaw was repaid four times over because the flaw was portable across all four deployments. The temporal density of the four chains' extractions — close temporal succession rather than sequential days — is the on-chain signal that the same operator and the same code-path understanding ran each chain's leg. Defenders monitoring shared-code multi-chain deployments should pre-build alerting that fires across all deployments when an anomaly is detected on any one — the operational response time to detect-pause-isolate must contend with N parallel deployments, not one.
- The bounty-acceptance outcome was conditional on speed and credibility. KiloEx's public bounty offer was issued within hours of detection. The 10% offer was credible — it was high enough to make acceptance economically attractive against the attacker's laundering-cost expectation, low enough to not signal panic. The on-chain return address was published in a verifiable form. The attacker accepted; the funds returned. Defenders running incident-response playbooks should treat the bounty-offer surface as a real first-tier option but should also recognise that the offer's effectiveness is highly sensitive to speed and to the credibility of the published return mechanism.
- Pyth's network reputation was protected by the public forensic clarity. SlowMist, PeckShield, and KiloEx's own disclosure all attributed the flaw to KiloEx's integration, not to Pyth. This is operationally important because confused or vendor-blaming forensic reporting in oracle-related incidents has, in earlier cases, produced reputational damage to oracle vendors that did not bear the technical responsibility. The KiloEx case is a useful 2025 reference for the integration-attribution discipline: when the failure is on the consuming-protocol side, the public write-ups should say so explicitly.
What this example tells contributors writing future Technique pages
- T9.001 should explicitly distinguish vendor-side failure from integration-side failure. The OAK-T9.001 page covers oracle price-feed manipulation broadly; the KiloEx case is the canonical 2025 worked example for the integration-side sub-pattern, where the oracle network's signed-price layer is operating correctly but the consuming protocol's authorisation layer is the failure surface. Contributors writing T9.001 worked examples should preserve the distinction explicitly — the defender controls are different (integration-side is fixed by the protocol team; vendor-side is fixed by the oracle network), and confusing the two categories in the corpus would degrade the page's defender-utility.
- T9.002 is the modal precondition for T9.001 in 2025; the pairing should be assumed. The 2024–2025 corpus of oracle-manipulation exploits is overwhelmingly flash-loan-funded. Contributors writing T9.001 examples should expect the T9.002 mapping to apply unless explicitly excluded; the unfunded oracle-manipulation case is now the exception, not the rule.
- Multi-chain fan-out deserves its own defender-handbook section. The KiloEx case is the strongest 2025 evidence that shared-code multi-chain deployments amplify single-flaw exploits linearly with deployment count. Contributors writing OAK Mitigation pages should call this out: detection / pause / isolation infrastructure for multi-chain protocols must scale with deployment count, not just with TVL. A protocol with 4 chains and 1× TVL faces a different response-time problem from a protocol with 1 chain and 4× TVL, even though the headline numbers look similar.
- ~100% recovery via bounty negotiation is achievable and is becoming a recognisable 2025 pattern. The KiloEx case pairs with the ZKsync case at
examples/2025-04-zksync-airdrop.mdas the two 2025 examples of full or near-full recovery via bounty offer. The Loopscale case atexamples/2025-04-loopscale.mdis the partial-recovery sibling. Together they establish the conditional-recovery surface for 2025; contributors writing recovery-rate documentation should treat bounty-mediated recovery as a real but case-conditional outcome. pseudonymousis the correct attribution status, even with bounty acceptance. As with ZKsync, the attacker's engagement with the public return address produced no off-chain identification. Contributors should not over-claim attribution simply because the actor was responsive to negotiation.
Public references
[kiloexpostmortem2025]— KiloEx Protocol's official post-incident disclosure describing the integration-side authorisation gap, the affected deployments, and the bounty-mediated recovery.[peckshieldkiloex2025]— PeckShield on-chain analytics and forensic walkthrough for the extraction transactions across BNB / Base / Manta / Taiko, used as the cumulative-loss reference.[slowmistkiloex2025]— SlowMist incident analysis covering the integration-side attribution and the multi-chain fan-out pattern.[blocksecsuikiloex2025]— BlockSec forensic write-up emphasising the flash-loan-funded execution pattern and the cross-chain temporal-succession signal.[chainalysis2025rug]for category-level context on 2025 DeFi-incident loss totals (used as the broad-context citation).
Discussion
KiloEx is OAK's canonical 2025 case for the integration-side oracle manipulation with multi-chain fan-out pattern. The 2024–2025 corpus contains a number of T9.001 worked examples — the long tail of perp-DEX and lending-protocol oracle-manipulation cases — but the multi-chain dimension is structurally novel within the corpus. Earlier T9.001 cases were single-deployment events; KiloEx is the 2025 case that establishes the four-chain simultaneous-extraction pattern as a first-class threat shape.
The integration-side framing is the technical teaching point that pairs with the multi-chain framing. The Pyth oracle network's signed-price infrastructure was not compromised — the network continued to publish accurate, authentically-signed price updates throughout the incident. The failure was on KiloEx's side, in the protocol's authorisation logic for triggering a price consumption against its own contracts. This is a recurring pattern in the 2024–2025 oracle-exploit corpus: vendor-side oracle infrastructure has matured substantially (Pyth, Chainlink, RedStone, and others all run hardened signed-price layers), and the residual surface is on the consuming-protocol side — in the integration code, the authorisation logic, and the assumptions the consuming protocol makes about who can update what state and when. Contributors writing future T9.001 examples should expect this distribution: a substantial majority of 2024–2025 cases are integration-side, not vendor-side.
The bounty-mediated recovery is the second-order observation worth preserving. The KiloEx 10%-for-90% structure was operationally clean: a credible offer published within hours, against a verifiable on-chain return address, with explicit public framing as a bounty rather than as a hostile recovery action. The attacker's expected-value calculation converged toward acceptance — the laundering surface for $7.5M of mixed assets across four chains is wide enough to be feasible but narrow enough to leave non-trivial residual risk, and a 10% bounty against that risk is a defensible offer. The KiloEx outcome pairs with ZKsync (~100% recovery, ~24-hour negotiation) and contrasts with Loopscale (partial recovery, more contested negotiation) as the three 2025 worked examples that bracket the bounty-mediated-recovery surface for the year.
For OAK's broader credibility, including KiloEx in v0.1 closes two gaps: it adds a multi-chain-fan-out worked example to a corpus that has under-documented this pattern at the perp-DEX layer, and it provides a clean case for the integration-side-versus-vendor-side distinction within T9.001 that the page's general framing could otherwise leave ambiguous.