Vana Foundation

Security Incident Analysis: Full Report

Current status

Remediation complete and independently verified.

Incident date
31 July 2026
Credential exposure date
2 June 2026
Asset movement
1,120,000 VANA
Protocol vulnerability
None identified
Root cause
Legacy administrative key exposed via public repository
Contributing condition
Single-EOA upgrade authority, no timelock
User impact
None

Summary

On 31 July 2026 an unauthorised party holding a legacy administrative key upgraded Vana's L1 validator deposit contract and transferred its balance of 1,120,000 VANA in a single transaction1. Every access control on the contract functioned exactly as written. The transaction succeeded because the caller satisfied onlyOwner.

The key had been exposed on 2 June 2026 when an autonomous coding agent committed it to a public repository. Remediation began the same day. The contracts migrated at that point were identified by an ownership-pattern query, and the deposit contract, which stores its controlling address under a non-standard state variable, fell outside that query’s resolution and remained controlled by the exposed key until 31 July.

The malicious transaction was detected on 31 July and contained the same day. Every privileged role on Vana mainnet now sits behind a 3-of-7 multisig, verifiable on-chain against the addresses published below. Two independent security assessments, covering the chain and the operational environment, have confirmed the completeness of that work.

Independent verification

The Foundation commissioned two independent security assessments, covering the two domains in which this incident could have had further reach: the chain itself, and the operational environment in which the credential was exposed.

On-chain contract and authority security assessment

An independent security specialist with prior head-of-security experience at a major web3 platform and a large international technology company was engaged to assess the Vana chain for any contracts with privileged roles accessible by the exposed private key.

The security assessment enumerated every contract deployed on Vana mainnet and resolved each contract’s actual authority holder from on-chain state, rather than matching an expected ownership pattern. This establishes, by exhaustive enumeration, not internal attestation, the complete set of contracts and privileged roles on the network and who controls each. The scope also covered the completeness of the remediation and the adequacy of the controls now in place.

Scope was not limited to contracts reachable by the exposed key. The Foundation had a standing programme, in progress before this incident, to migrate all privileged authority away from externally-owned account control. The security assessment enumerated every contract still under EOA control regardless of any connection to this incident, and all have since been migrated.

Twenty four (24) contracts on Vana mainnet were found to reference 0x2AC93684679a5bdA03C6160def908CdB8D46792f in their storage slots. These contracts were discovered via four scans of Vana blockchain data. These scans were progressively broadened to support fast triage and then exhaustive enumeration.

  1. 5 unique contracts were found enumerating all transactions between 0x2AC93684679a5bdA03C6160def908CdB8D46792f and smart contracts as well as EOAs and the contracts they transacted with from blocks 0 - 9,535,184. The storage slots were then scanned between blocks 9,544,790 – 9,545,518.
  2. 15 unique contracts were found searching for 12 event topic hashes from blocks 0 - 9,535,184 then filtering for the address 0x2AC93684679a5bdA03C6160def908CdB8D46792f in topic 1, 2 or 3. The storage slots were then scanned between blocks 9,544,952 – 9,545,518.
  3. 3 unique contracts were found from a corpus of 2,214 contracts that Vana provided. These storage slots were scanned between blocks 9,549,607 – 9,549,933.
  4. 1 unique contract was found from an exhaustive search of all smart contracts (131,883 in total) deployed to the Vana blockchain using CREATE or CREATE2 between block 0 and block 9,552,772. These storage slots were then scanned between blocks 9,561,370–9,562,656.

When searching target contracts for storage slots containing 0x2AC93684679a5bdA03C6160def908CdB8D46792f the scanner first requests all populated slots using debug_storageRangeAt then each slot is requested and searched for the wallet address.

All 24 contracts were reported to the team as they were found. The team then proceeded to remediate them to contain the incident.

Operational and endpoint security assessment

Jones IT, the third-party firm responsible for the Foundation’s managed device estate, conducted a full-fleet operational security assessment. The estate operates under centralised mobile device management with endpoint detection and centralised logging, permitting review of device and console activity across the period between the credential exposure on 2 June and remediation, rather than a point-in-time check. The device identified as elevated risk was removed from service and placed under direct physical and forensic examination.

The assessment covered the Foundation’s managed macOS inventory and combined two independent methods. First, full-disk endpoint scanning through the estate’s endpoint detection and response platform, initiated fleet-wide on 4 August 2026, with agent presence, connectivity, encryption status and update status verified on every device, and scan completion events and threat activity history reviewed individually. Second, a read-only hunt script deployed through the mobile device management platform, targeting host indicators associated with known intrusion tradecraft used against organisations in this sector, including characteristic filesystem paths, persistence mechanisms installed as launch agents, malicious package lifecycle and downloader patterns, and associated process-path artefacts. Every endpoint in the inventory completed both methods with the exception of the elevated-risk device, which was offline for direct examination.

Completed checks identified no host indicators of this tradecraft. A small number of devices returned automated flags on package lifecycle patterns; analyst review confirmed each as a legitimate internal engineering script within the Foundation’s own codebase, and none were escalated. All remaining endpoints returned no indicators. Disk encryption was enabled and endpoint detection agents were current across every device in the inventory.

Jones IT’s assessment is that no indicators of this intrusion tradecraft are present on the fleet, and no evidence of broader unauthorised access to Foundation systems beyond the single compromised credential. Monitoring continues through the estate’s automated device check-in and endpoint detection cadence, and the elevated-risk endpoint remains out of production use pending final disposition.

Remediation

ActionStatus
Exposed key retired, all held roles revokedComplete
All privileged authority migrated from EOA to 3-of-7 multisigComplete, verifiable on-chain
Timelock on upgrade authorityIn development
Exhaustive enumeration of all deployed contracts and resolved authority holdersComplete, independently assessed
Independent on-chain contract and authority security assessmentComplete
Independent operational and endpoint security assessmentComplete
Repository-level secret scanning and push protectionEnforced
Development and test environments restricted to keys holding no on-chain rolesEnforced
Continuous privileged-access tracking under scheduled reviewIn place

Two of these changes address the failure mechanism rather than its symptom, and they determine whether this class of incident can recur.

  • Enumeration replaces pattern matching. Privileged access is now established by enumerating every contract deployed to Vana mainnet and resolving its actual authority holder from on-chain state. A contract storing its controlling address under a non-standard variable is captured, because the method no longer depends on a contract conforming to an expected shape. Applied across the network, this produced the complete inventory against which the remaining migrations were carried out.

  • Privileged access is tracked continuously. Authority across the network is maintained as a live record under scheduled review rather than reconstructed during an incident, providing an independent reference against which any future change is reconciled.

Identification is now exhaustive rather than heuristic, and externally verifiable rather than self-reported. No contract on Vana mainnet retains single-key upgrade authority, and the mechanism used on 31 July no longer exists on the network.

Incident details

System background

The L1 validator deposit contract held 1,120,000 VANA behind an ERC-1967 UUPS proxy. Under UUPS, upgrade authorisation does not sit with the proxy; it resides in the implementation's _authorizeUpgrade hook, which in this contract was gated onlyOwner. The owner was a single externally-owned account rather than a multisig, with no timelock between authorisation and execution. A single valid signature was therefore sufficient to replace contract logic and execute against the new logic atomically.

The contract held validator security deposits recorded at the execution layer. Deposits entering the contract are permanently locked; validator enforcement operates through slashing conditions applied at exit rather than through withdrawal from the contract. These conditions remain intact.

Credential exposure

On 2 June 2026, an autonomous coding agent operating in a developer environment copied a private key from a local environment file into a test fixture and committed that file to a public repository. Public repository exposure means a credential must be treated as compromised from the moment of commit; automated scanners operating against public repository event streams routinely retrieve committed secrets within seconds.

Exposure was detected the same day and remediation commenced immediately. Roles held by the key were revoked and the contracts identified at that point were migrated to multisig control, reproducible on-chain from June 2026 transaction history.

Scope of the June remediation

Affected contracts were identified by querying for the exposed address in the standard owner storage slot exposed by Ownable, the pattern used across the large majority of the contract set. The L1 validator deposit contract holds its controlling address under a differently-named state variable and fell outside that query's resolution, so it was not included in the June migration.

Two conditions determined that scope. Identification resolved contracts matching a known ownership pattern rather than enumerating every deployed contract and resolving its actual authority holder. And privileged access was compiled from source during remediation rather than tracked continuously, so there was no independent reference to reconcile the query’s output against. Both are addressed above.

Execution

The actor deployed a minimal replacement implementation exposing only withdraw() and proxiableUUID(). proxiableUUID() returns the ERC-1967 implementation slot identifier, the check UUPS performs to confirm a target is a valid upgradeable implementation and prevent bricking the proxy; the replacement satisfies it. The actor then called upgradeToAndCall, which writes the new implementation address to the ERC-1967 implementation slot and executes supplied calldata against it in the same transaction, installing the drain logic and invoking it atomically with no intervening block.

The replacement implementation exposes no upgradeTo or _authorizeUpgrade path. The proxy is permanently immutable at that implementation and holds no balance.

Detection and containment

The transaction was detected on 31 July, the day it occurred. Containment was completed the same day: the key was retired, its roles revoked, and privileged access across the network locked down. Independent security assessments, hardening, and the remaining authority migrations followed in the period since.

Control assessment

ControlAt time of incidentNow
onlyOwner on _authorizeUpgradePresent. Enforced as writtenSuperseded by multisig authority
UUPS proxiableUUID validationPresent. Validated and satisfiedIn place
ERC-1967 slot integrityPresent. No collision or slot manipulationIn place
Multisig on upgrade authorityNot present on this contractIn place across all privileged roles
Execution timelockNot presentIn development
Repository secret scanning and push protectionNot enforcedEnforced at repository level
Continuous privileged-access trackingCompiled on demandMaintained under scheduled review
Exhaustive authority enumerationPattern-based resolutionExhaustive, independently assessed

Impact

The loss is confined to the balance held in the L1 validator deposit contract: 1,120,000 VANA, taken in the transaction referenced below. The transaction moved existing tokens held in a single contract, which bounds what it could reach.

  • No user funds were affected. No user, data contributor, or member of the public lost funds, and no user action is or was required at any point.

  • Total supply is unchanged. The transaction moved existing tokens and did not touch issuance.

  • Foundation treasury assets were not accessed. Treasury is held with a qualified custodian under separate controls and was not reachable from this contract.

Network operation was unaffected throughout. Consensus, block production, and finality continued without interruption across the incident window, and the remainder of the protocol’s contract infrastructure operated normally. The exploit path was administrative authority over a single staking system contract, not a defect in the protocol.

Validator operations

The validators concerned continue to operate, with no interruption to their participation in consensus. Slashing conditions are unaffected by this incident and remain fully enforceable.

Validators with questions relating to this incident should contact the Foundation directly.

Recovery

Destination wallets have been identified and the movement of funds is being traced. Reports have been filed with law enforcement in several jurisdictions, and the Foundation is coordinating with the relevant authorities and with exchange and infrastructure partners.

Because that investigation is active and involves law enforcement, the Foundation is not able to comment on the movement, liquidation, or current disposition of the funds, or on the parties assisting with tracing.

Reference

Origin transaction: 0x95e9c26e01a35ab939b3442a89048b356f887d132b7afa13550e41a61cb86eb5 (Vana mainnet, block 9,475,269)

AddressRole
0x17BbE91c315Bf14f38F6D35052a827cadfFe184eL1 deposit contract (proxy), drained
0x137Eda19795DE98e92F551CE0c3B6131148A7923Outgoing implementation, verified
0xaBc8637b553635654539b19D6Cb53d64d4274325Replacement implementation, unverified, drain logic
0x7FF7Fa94b8b66Ef313f7970d4EEbd2CB3103a2C0VanaNativeOFTAdapter, used to bridge funds

Contracts under multisig control

Each migration is verifiable on-chain.

ContractAddressControlling multisig
VanaPoolStakingProxy0x641C18E2F286c86f96CE95C8ec1EB9fC0415Ca0e0x5ECA5208F29e32879a711467916965B2D753bAf4
VanaPoolEntityProxy0x44f20490A82e1f1F1cC25Dd3BA8647034eDdce300x5ECA5208F29e32879a711467916965B2D753bAf4
VanaPoolTreasuryProxy0x143BE72CF2541604A7691933CAccd6D9cC17c0030x5ECA5208F29e32879a711467916965B2D753bAf4
DataRegistryV2Proxy0x8f1eFCdff3d0d5BB535e32620721c7EBed1518670x5ECA5208F29e32879a711467916965B2D753bAf4
DataPortabilityServersProxy0x1483B1F634DBA75AeaE60da7f01A679aabd5ee2c0x5ECA5208F29e32879a711467916965B2D753bAf4
DataPortabilityServersV2Proxy0xCae2CE0e9caa6643ed28186cF57bd40Bd9E17Eab0x5ECA5208F29e32879a711467916965B2D753bAf4
DataPortabilityPermissionsProxy0xD54523048AdD05b4d734aFaE7C68324Ebb7373eF0x5ECA5208F29e32879a711467916965B2D753bAf4
DataPortabilityPermissionsV2Proxy0x4d3FA76064D88e0454cFc4CaD7e5FeC3e31240110x5ECA5208F29e32879a711467916965B2D753bAf4
DataPortabilityGranteesProxy0x8325C0A0948483EdA023A1A2Fd895e62C51312340x5ECA5208F29e32879a711467916965B2D753bAf4
DataPortabilityEscrowProxy0x07d7769081adc3a3DBe91f5E4B98E9A5a6B292e30x5ECA5208F29e32879a711467916965B2D753bAf4
FeeRegistryProxy0xb4FA18443E0FA6cdC0280D20b8cCDB2377D13Bf20x5ECA5208F29e32879a711467916965B2D753bAf4
DataRegistryProxy0x8C8788f98385F6ba1adD4234e551ABba0f82Cb7C0x5ECA5208F29e32879a711467916965B2D753bAf4
DLPRootProxy0xff14346dF2B8Fd0c95BF34f1c92e49417b508AD50x5ECA5208F29e32879a711467916965B2D753bAf4
DLPRootCoreProxy0x0aBa5e28228c323A67712101d61a54d4ff5720FD0x5ECA5208F29e32879a711467916965B2D753bAf4
DLPRootEpochProxy0xc3d176cF6BccFCB9225b53B87a95147218e1537F0x5ECA5208F29e32879a711467916965B2D753bAf4
DLPRootMetricsProxy0xbb532917B6407c060Afd9Cb7d53527eCb91d66620x5ECA5208F29e32879a711467916965B2D753bAf4
DLPRootRewardsTreasuryProxy0xDBFb6B8b9E2eCAEbdE64d665cD553dB81e5244790x5ECA5208F29e32879a711467916965B2D753bAf4
DLPRootStakesTreasuryProxy0x52c3260ED5C235fcA43524CF508e29c8973187750x5ECA5208F29e32879a711467916965B2D753bAf4
DLPRewardDeployerProxy0xEFD0F9Ba9De70586b7c4189971cF754adC923B040x5ECA5208F29e32879a711467916965B2D753bAf4
DLPRewardDeployerTreasuryProxy0xb547ca8Fe4990fe330FeAeb1C2EBb42F925Af5b80x5ECA5208F29e32879a711467916965B2D753bAf4
DLPRegistryProxy0x4D59880a924526d1dD33260552Ff4328b1E18a430x5ECA5208F29e32879a711467916965B2D753bAf4
DLPRegistryTreasuryProxy0xb12ce1d27bEeFe39b6F0110b1AB77C21Aa0c9F9a0x5ECA5208F29e32879a711467916965B2D753bAf4
DLPRewardSwapProxy0x7c6862C46830F0fc3bF3FF509EA1bD0EE7267fB00x5ECA5208F29e32879a711467916965B2D753bAf4
SwapHelperProxy0x55D5e6F73326315bF2E091e97F04f0770e5C54e20x5ECA5208F29e32879a711467916965B2D753bAf4
DLPPerformanceProxy0x847715C7DB37cF286611182Be0bD333cbfa29cc10x5ECA5208F29e32879a711467916965B2D753bAf4
VanaEpochProxy0x2063cFF0609D59bCCc196E20Eb58A8696a6b15A00x5ECA5208F29e32879a711467916965B2D753bAf4
QueryEngineProxy0xd25Eb66EA2452cf3238A2eC6C1FD1B7F5B3204900x5ECA5208F29e32879a711467916965B2D753bAf4
DataAccessTreasuryProxyFactory0xEDd61219dE9FeD63112b53c637B576D43B2dfCf50x5ECA5208F29e32879a711467916965B2D753bAf4
QueryEngineTreasury0x8B32Ef32f22e72cc25D53f6E858f57cAe7E198f90x5ECA5208F29e32879a711467916965B2D753bAf4
DataRefinerRegistryProxy0x93c3EF89369fDcf08Be159D9DeF0F18AB6Be008c0x5ECA5208F29e32879a711467916965B2D753bAf4
ComputeEngineProxy0xb2BFe33FA420c45F1Cf1287542ad81ae935447bd0x5ECA5208F29e32879a711467916965B2D753bAf4
ComputeEngineTreasury0xceB33C501B624D984bD1Ed3298f6D1d8F7CE03d10x5ECA5208F29e32879a711467916965B2D753bAf4
ComputeInstructionRegistryProxy0x5786B12b4c6Ba2bFAF0e77Ed30Bf6d32805563A50x5ECA5208F29e32879a711467916965B2D753bAf4
ComputeEngineTeePoolFactoryProxy0x8963a24897328C1EF8C5b3d8b39433c7496EA41F0x5ECA5208F29e32879a711467916965B2D753bAf4
ComputeEngineTeePoolProxyFactory0x94631a625735DAd19D767586e2dB5DD48fbc7D090x5ECA5208F29e32879a711467916965B2D753bAf4
ComputeEngineTeePool (ephemeral standard)0xe124bae846D5ec157f75Bd9e68ca87C4d2AB835A0x5ECA5208F29e32879a711467916965B2D753bAf4
ComputeEngineTeePool (ephemeral GPU)0xB2182442D3e477987F07f9727F301909d0322C7f0x5ECA5208F29e32879a711467916965B2D753bAf4
ComputeEngineTeePool (persistent standard)0xE8bB8d0629651cf33E0845d743976dc1F0971D760x5ECA5208F29e32879a711467916965B2D753bAf4
ComputeEngineTeePool (persistent GPU)0x1C346Cd74F8551F8Fa13f3F4B6b8Dae22338e6a90x5ECA5208F29e32879a711467916965B2D753bAf4
ComputeEngineTeePool (dedicated standard)0xF024b7Ac5e8417416F53b41eCfa58c8E9396687D0x5ECA5208F29e32879a711467916965B2D753bAf4
ComputeEngineTeePool (dedicated GPU)0xb1686FA9620bBF851714d1cb47b8A4bF4664644E0x5ECA5208F29e32879a711467916965B2D753bAf4
TeePoolPhalaProxy0xE8EC6BD73b23Ad40E6B9a6f4bD343FAc411bD99A0x5ECA5208F29e32879a711467916965B2D753bAf4
TeePoolProxy0x3c92fD91639b41f13338CE62f19131e7d19eaa0D0x5ECA5208F29e32879a711467916965B2D753bAf4
MultisendProxy0x8807e8BCDFbaA8c2761760f3FBA37F6f7F2C5b2d0x5ECA5208F29e32879a711467916965B2D753bAf4
Multicall30xD8d2dFca27E8797fd779F8547166A2d3B29d360ENone

All figures are reproducible against https://rpc.vana.org and https://vanascan.io/api/v2.

Security disclosures: security@vanafoundation.org

Acknowledgements

We are grateful to the exchange and infrastructure partners who responded quickly to help trace and flag the movement of funds, and whose assistance has been material to the ongoing investigation.

Footnotes

  1. See the origin transaction and deployment transaction on VanaScan.