I remember the first time I saw a hardware wallet transaction simulation. It was 2018, and a developer showed me how the device translates raw bytes into a human-readable message. "This is the bridge between code and trust," he said. Seven years later, that bridge has a crack—and the debate over how to fix it has exposed a deeper fault line in our industry's relationship with security.
Last week, AI security firm TestMachine published a report detailing a transaction replacement attack on Ledger's Ethereum application. The vulnerability allowed a malicious website to swap a user's intended transaction with an infinite token approval—while the user was reviewing the first transaction on their device's screen. The attack targets the very mechanism that makes hardware wallets trustworthy: the clear signing display.
Ledger's CTO, Charles Guillemet, responded swiftly, calling the disclosure "fear-mongering" and claiming the bug had already been fixed in version 1.22.2. But the fix was silent—a one-line commit message, no security advisory, no coordinated disclosure. TestMachine had found the bug using its AI agent, Azimuth, and after verifying it with Ledger, they refused the bug bounty and went public. The result: a standoff between two parties that both claim to care about security, but fundamentally disagree on what that means.
Context: The Architecture of Trust
Ledger has sold over 7 million devices worldwide. Its core promise is that even if your computer is compromised, your private keys remain safe because transactions are signed inside a secure element after you approve them on the device's screen. This is called "clear signing"—the device displays the transaction details in plain language, not raw hex, so you can verify what you're signing.
But the vulnerability exploited a subtlety in the APDU (Application Protocol Data Unit) communication channel between the browser and the device. While the user is reviewing the first transaction on the screen, the channel remains open. A malicious website can send a second command—a transaction replacement—without the user's knowledge. The user sees the original transaction, but the device signs the second one. This is not a firmware flaw; it's a protocol interaction flaw, similar to a race condition in a smart contract.
All major Ledger devices share the same APDU/UI code: Nano X, Nano S Plus, Stax, and Apex. The attack vector requires the user to be on a malicious website, but given the prevalence of phishing in DeFi, this is a realistic threat. The attack transforms a benign-looking small transfer into an infinite token approval, effectively handing over control of all ERC-20 tokens.
Core: The AI Audit Paradox
TestMachine's Azimuth agent found this bug using automated scanning. According to their self-reported benchmarks, Azimuth captures 86.3% of known vulnerabilities on the EVMBench dataset with a false positive rate of about 2.7%. This is impressive, but it's important to note that EVMBench contains known vulnerabilities—the real test is finding unknown ones. The fact that Azimuth independently discovered a bug that Ledger's internal Donjon team also found suggests that AI-assisted auditing is moving from novelty to necessity.
But here's the paradox: the same AI capabilities that make security auditing more efficient also accelerate the speed at which bugs can be weaponized. If an attacker uses a similar AI tool, they could find the same vulnerability before a fix is deployed. In this case, the timeline worked in favor of users—Ledger had already patched the bug before TestMachine's disclosure. But the close call was a warning shot.
Based on my experience auditing whitepapers during the 2017 ICO boom, I learned that technical integrity is the foundation of trust. The Ledger case feels like a replay of that era: the fix was technically sound, but the process was ethically questionable. A one-line commit message tells users nothing about the severity, the attack vector, or whether they need to update. It's the equivalent of a doctor saying "we fixed a thing" without telling you it was a heart condition.
Contrarian: The Real Problem Is Not the Bug
The conventional narrative is that Ledger downplayed the severity and TestMachine acted responsibly. But I want to challenge that. Both sides are missing the point.
TestMachine's refusal to accept a bug bounty and insistence on public disclosure suggests a desire for attention—which is not inherently wrong, but it creates a perverse incentive. If every security firm races to publish findings before a fix is fully deployed, we risk a landscape where fear is the currency of credibility. Ledger, on the other hand, treated the fix as a routine update, which undermines the trust that hardware wallets are supposed to provide. The CTO's dismissal of TestMachine's disclosure as "fear-mongering" is a defensive posture that alienates the very community they serve.
At the heart of this conflict is a mismatch in speed. AI tools can find bugs in hours, but the human processes for coordinating disclosure, notifying users, and restoring trust take days or weeks. The industry doesn't have an agreed-upon standard for AI-discovered vulnerabilities. The old model of "report, wait 90 days, publish" is obsolete when AI can scan thousands of code paths in a weekend.
Moreover, the vulnerability itself is a symptom of a deeper architectural issue: the APDU channel is designed for simplicity, not security. Ledger's clear signing is a UI overlay, not a cryptographic guarantee. The next generation of hardware wallets needs to rethink the communication protocol to prevent transaction replacements at the protocol level, not just patch the current one.
Takeaway: Restoring Faith in Decentralized Promises
This event is not about who is right or wrong. It's about the growing gap between what technology can do and what trust can sustain. AI security auditors are here to stay, and they will find more bugs, faster. But speed without transparency is just noise. The hardware wallet industry must adapt its disclosure practices to match the pace of AI-driven discovery. That means shorter embargoes, clearer communication, and a willingness to admit that no system is perfect.
As I write this, I think of the developers who built the first clear signing implementations. They believed that showing users what they sign would end blind approvals. But technology is never enough on its own. Trust is a behavior, not a feature. The real bridge between code and trust is not the device screen—it's the honesty with which we handle our own failures.
Auditing ethics before auditing assets. That's the lesson.
Transparency is the new currency. And in this case, the currency was spent on a single line of code, when it should have been a full disclosure with a timeline and a public post-mortem.
Restoring faith in decentralized promises requires more than fixing bugs. It requires fixing the process of fixing them. Let's build that bridge, together.
Building bridges where code ends and trust begins. Auditing ethics before auditing assets. Restoring faith in decentralized promises.