Liquid Network: 4,000 BTC drained through an Elements bug
What happened
The mechanism. Liquid is a Bitcoin sidechain. Users deposit bitcoin (peg-in) and receive L-BTC; conversely, a peg-out burns L-BTC and releases bitcoin on the main chain from the federation wallet. The core invariant is simple: there must never be more L-BTC than bitcoin in reserve.
September 6. A bug in Elements made it possible to create L-BTC with no real bitcoin behind it. Those tokens were then converted through a peg-out using SideSwap's peg-out authorization key. According to published reports, neither that key nor SideSwap's systems were compromised: the problem lay upstream, in token creation. Blockstream, which provides Liquid's technology, did not detail the flaw. The network was paused.
September 7. The two sides communicated through messages embedded in transactions. The group demanded that the flaw be fixed and the nodes updated before returning anything. Blockstream answered with a signed message confirming the fix on its bridge nodes. A transaction carrying a PGP-encrypted message preceded by 38 minutes the return of 3,400 BTC to the federation's address.
Afterwards. About 598.5 BTC were not returned. Blockstream prepared a coordinated restart and asked users not to send funds to peg-in addresses until then. Other assets issued on Liquid (USDT, DePix) were not affected. Ledger's CTO described the episode as extortion rather than responsible disclosure.
The flaw, without the crypto vocabulary
A component responsible for guaranteeing a security property ("every token is backed by a bitcoin") had a defect that let that property be broken. The rest of the system trusted the component and did not verify the property independently. The loss was counted in hours, long before any human review could have caught it.
The same pattern exists in ordinary SaaS products:
- a credits, points or voucher system that can top up a balance with no matching payment;
- a billing module that issues a credit note without an original invoice;
- a token library that issues valid tokens without checking identity;
- a wallet or payment account whose displayed balance is never reconciled with actual funds.
The Coldcard incident and the xz-utils backdoor belong to the same family: the guarantee rested on a building block nobody rechecked.
How to test it in your product
- Write down the invariants: list the properties that must never be broken (sum of balances equals funds collected, tokens issued equal deposits, no credit without an originating transaction).
- Check them independently: write a reconciliation query that computes each invariant from raw data, without going through business code. Run it read-only against production.
- Find the creation paths: list every endpoint, job and admin script that creates or increases a balance. For each one, check that it requires a counterpart.
- Test edge cases: with a test account, replay a credit request, send negative amounts, very large values and concurrent requests. Check the invariant after each attempt.
- Measure detection time: simulate a discrepancy in a test environment and measure how long it takes for an alert to fire.
- Test the emergency stop: check that you can freeze a sensitive flow (withdrawals, issuance, exports) within minutes, and who is allowed to do it.
How to fix it
- Continuous automatic reconciliation of invariants, with an alert and an automatic freeze beyond a threshold.
- Caps on withdrawals or creation per period, which limit the maximum loss before detection.
- Multi-party approval for large movements.
- Security review of the components you rely on for a guarantee, and tracking of their fixes.
- An incident procedure that treats anyone keeping part of the funds as an attacker.
AI agents and the Liquid Elements bug: what changes
AI agents are starting to get payment, refund or transfer tools. An agent that can credit an account or initiate a withdrawal is a new value-creation path, steered by the content it reads. A refund request carrying a hidden instruction can push it past business rules if those rules live only in its prompt. Caps, invariants and human approval must be enforced server-side, outside the model, as the methods of the Lazarus group also illustrate. The Agent Red Team Express tests in five days whether your agent can be pushed to create or move value without a counterpart.
Does your product ship an AI agent? CleanIssue tests what a stranger can make it do with the Agent Red Team Express (5 days, €1,900), or a custom red team for several agents and MCP servers. First step: a free 30-minute discovery call.
Related articles
Three adjacent analyses to keep exploring the same attack surface.
SFR 2024-2025: two data breaches through internal tools
An order tool at RED by SFR in 2024, a fiber installation tool in 2025: how an internal back office exposes millions of customers, and how to test yours.
Lazarus Group: the flaws North Korea's APT exploits
Fake coding tests, concentrated validator keys, blind signing: the flaws behind Lazarus's heists, and how to test for them in your own organization.
SolarWinds 2020: the supply chain attack and its flaws
SolarWinds Orion: compromised build, trojanized signed update, privileged tool with open egress. How the attack worked and how to test your exposure.
Sources
Related services
If this topic maps to a real risk in your stack, these are the most relevant CleanIssue audits.