Factoring "short-sleeve" RSA keys with polynomials

What happens when the bits of an RSA private key are heavily biased toward 0 instead of being randomly generated? The public key’s bits could be biased enough for us to detect these incorrectly generated keys in the wild. Together with Hanno Böck of the badkeys project, we found … | Continue reading


@blog.trailofbits.com | 5 days ago

The sorry state of skill distribution

Public skill marketplaces are being flooded with malicious skills that steal credentials, exfiltrate data, and hijack agents. In response, a segment of the security industry released skill scanners, a new family of tools designed to detect malicious skills before they’re installe … | Continue reading


@blog.trailofbits.com | 14 days ago

We hardened zizmor's GitHub Actions static analyzer

In March 2026, attackers exploited a pull_request_target misconfiguration in the aquasecurity/trivy-action GitHub Action to exfiltrate organization and repository secrets, then used those credentials to backdoor LiteLLM on PyPI (see Trivy’s post-mortem for the full timeline). ziz … | Continue reading


@blog.trailofbits.com | 26 days ago

Go fuzzing was missing half the toolkit. We forked the toolchain to fix it.

Go’s native fuzzing is useful, but it stands far behind state-of-the-art tooling that the Rust, C, and C++ ecosystems offer with LibAFL and AFL++. Path constraints are hard to solve. Structured inputs usually need handmade parsing. It doesn’t even detect several common bug classe … | Continue reading


@blog.trailofbits.com | 1 month ago

C/C++ checklist challenges, solved

We recently added a C/C++ security checklist to the Testing Handbook and challenged readers to spot the bugs in two code samples: a deceptively simple Linux ping program and a Windows driver registry handler. If you found the inet_ntoa global buffer gotcha or the missing RTL_QUER … | Continue reading


@blog.trailofbits.com | 1 month ago

Extending Ruzzy with LibAFL

LibAFL is all the rage in the fuzzing community these days, especially with LLVM’s libFuzzer being placed in maintenance mode. Written in Rust, LibAFL claims improved performance, modularity, state-of-the-art fuzzing techniques, and libFuzzer compatibility. For these reasons, I s … | Continue reading


@blog.trailofbits.com | 1 month ago

Trailmark turns code into graphs

We’re open-sourcing Trailmark, a library that parses source code into a queryable call graph of functions, classes, call relationships, and semantic metadata, then exposes that graph through a Python API that Claude skills can call directly. Install it now: uv pip install trailma … | Continue reading


@blog.trailofbits.com | 1 month ago

We beat Google’s zero-knowledge proof of quantum cryptanalysis

Two weeks ago, Google’s Quantum AI group published a zero-knowledge proof of a quantum circuit so optimized, they concluded that first-generation quantum computers will break elliptic curve cryptography keys in as little as 9 minutes. Today, Trail of Bits is publishing our own ze … | Continue reading


@blog.trailofbits.com | 2 months ago

Master C and C++ with our new Testing Handbook chapter

We added a new chapter to our Testing Handbook: a comprehensive security checklist for C and C++ code. We’ve identified a broad range of common bug classes, known footguns, and API gotchas across C and C++ codebases and organized them into sections covering Linux, Windows, and se … | Continue reading


@blog.trailofbits.com | 2 months ago

What we learned about TEE security from auditing WhatsApp's Private Inference

WhatsApp’s new “Private Inference” feature represents one of the most ambitious attempts to combine end-to-end encryption with AI-powered capabilities, such as message summarization. To make this possible, Meta built a system that processes encrypted user messages inside trusted … | Continue reading


@blog.trailofbits.com | 2 months ago

Simplifying MBA obfuscation with CoBRA

Mixed Boolean-Arithmetic (MBA) obfuscation disguises simple operations like x + y behind tangles of arithmetic and bitwise operators. Malware authors and software protectors rely on it because no standard simplification technique covers both domains simultaneously; algebraic simp … | Continue reading


@blog.trailofbits.com | 2 months ago

Mutation testing for the agentic era

Code coverage is one of the most dangerous quality metrics in software testing. Many developers fail to realize that code coverage lies by omission: it measures execution, not verification. Test suites with high coverage can obfuscate the fact that critical functionality is untes … | Continue reading


@blog.trailofbits.com | 2 months ago

How we made Trail of Bits AI-native (so far)

This post is adapted from a talk I gave at [un]prompted, the AI security practitioner conference. Thanks to Gadi Evron for inviting me to speak. You can watch the recorded presentation below or download the slides. Most companies hand out ChatGPT licenses and wait for the product … | Continue reading


@blog.trailofbits.com | 2 months ago

Try our new dimensional analysis Claude plugin

We’re releasing a new Claude plugin for developing and auditing code that implements dimensional analysis, a technique we explored in our most recent blog post. Most LLM-based security skills ask the model to find bugs. Our new dimensional-analysis plugin for Claude Code takes a … | Continue reading


@blog.trailofbits.com | 2 months ago

Spotting issues in DeFi with dimensional analysis

Using dimensional analysis, you can categorically rule out a whole category of logic and arithmetic bugs that plague DeFi formulas. No code changes required, just better reasoning! One of the first lessons in physics is learning to think in terms of dimensions. Physicists can oft … | Continue reading


@blog.trailofbits.com | 2 months ago

Six mistakes in ERC-4337 smart accounts

Account abstraction transforms fixed “private key can do anything” models into programmable systems that enable batching, recovery and spending limits, and flexible gas payment. But that programmability introduces risks: a single bug can be as catastrophic as leaking a private ke … | Continue reading


@blog.trailofbits.com | 3 months ago

mquire: Linux memory forensics without external dependencies

If you’ve ever done Linux memory forensics, you know the frustration: without debug symbols that match the exact kernel version, you’re stuck. These symbols aren’t typically installed on production systems and must be sourced from external repositories, which quickly become outda … | Continue reading


@blog.trailofbits.com | 3 months ago

Using threat modeling and prompt injection to audit Comet

Before launching their Comet browser, Perplexity hired us to test the security of their AI-powered browsing features. Using adversarial testing guided by our TRAIL threat model, we demonstrated how four prompt injection techniques could extract users’ private information from Gma … | Continue reading


@blog.trailofbits.com | 3 months ago

Carelessness versus craftsmanship in cryptography

Two popular AES libraries, aes-js and pyaes, “helpfully” provide a default IV in their AES-CTR API, leading to a large number of key/IV reuse bugs. These bugs potentially affect thousands of downstream projects. When we shared one of these bugs with an affected vendor, strongSwan … | Continue reading


@blog.trailofbits.com | 3 months ago

Celebrating our 2025 open-source contributions

Last year, our engineers submitted over 375 pull requests that were merged into non–Trail of Bits repositories, touching more than 90 projects from cryptography libraries to the Rust compiler. This work reflects one of our driving values: “share what others can use.” The measure … | Continue reading


@blog.trailofbits.com | 4 months ago

Building cryptographic agility into Sigstore

Software signatures carry an invisible expiration date. The container image or firmware you sign today might be deployed for 20 years, but the cryptographic signature protecting it may become untrustworthy within 10 years. SHA-1 certificates become worthless, weak RSA keys are ba … | Continue reading


@blog.trailofbits.com | 4 months ago

Lack of isolation in agentic browsers resurfaces old vulnerabilities

With browser-embedded AI agents, we’re essentially starting the security journey over again. We exploited a lack of isolation mechanisms in multiple agentic browsers to perform attacks ranging from the dissemination of false information to cross-site data leaks. These attacks, wh … | Continue reading


@blog.trailofbits.com | 5 months ago

Detect Go’s silent arithmetic bugs with go-panikint

Go’s arithmetic operations on standard integer types are silent by default, meaning overflows “wrap around” without panicking. This behavior has hidden an entire class of security vulnerabilities from fuzzing campaigns. Today we’re changing that by releasing go-panikint, a modifi … | Continue reading


@blog.trailofbits.com | 5 months ago

Can chatbots craft correct code?

I recently attended the AI Engineer Code Summit in New York, an invite-only gathering of AI leaders and engineers. One theme emerged repeatedly in conversations with attendees building with AI: the belief that we’re approaching a future where developers will never need to look at … | Continue reading


@blog.trailofbits.com | 6 months ago

Use GWP-ASan to detect exploits in production environments

Memory safety bugs like use-after-free and buffer overflows remain among the most exploited vulnerability classes in production software. While AddressSanitizer (ASan) excels at catching these bugs during development, its performance overhead (2 to 4 times) and security concerns … | Continue reading


@blog.trailofbits.com | 6 months ago

Catching malicious package releases using a transparency log

We’re getting Sigstore’s rekor-monitor ready for production use, making it easier for developers to detect tampering and unauthorized uses of their identities in the Rekor transparency log. This work, funded by the OpenSSF, includes support for the new Rekor v2 log, certificate v … | Continue reading


@blog.trailofbits.com | 6 months ago

Introducing mrva, a terminal-first approach to CodeQL multi-repo variant analysis

In 2023 GitHub introduced CodeQL multi-repository variant analysis (MRVA). This functionality lets you run queries across thousands of projects using pre-built databases and drastically reduces the time needed to find security bugs at scale. There’s just one problem: it’s largely … | Continue reading


@blog.trailofbits.com | 6 months ago

Introducing constant-time support for LLVM to protect cryptographic code

Trail of Bits has developed constant-time coding support for LLVM, providing developers with compiler-level guarantees that their cryptographic implementations remain secure against branching-related timing attacks. These changes are being reviewed and will be added in an upcomin … | Continue reading


@blog.trailofbits.com | 6 months ago

Constant-time support coming to LLVM: Protecting cryptographic code at the compiler level

Trail of Bits has developed constant-time coding support for LLVM 21, providing developers with compiler-level guarantees that their cryptographic implementations remain secure against branching-related timing attacks. This work introduces the __builtin_ct_select family of intrin … | Continue reading


@blog.trailofbits.com | 6 months ago

Constant-time support lands in LLVM: Protecting cryptographic code at the compiler level

Trail of Bits has developed constant-time coding support for LLVM 21, providing developers with compiler-level guarantees that their cryptographic implementations remain secure against branching-related timing attacks. This work introduces the __builtin_ct_select family of intrin … | Continue reading


@blog.trailofbits.com | 6 months ago

We found cryptography bugs in the elliptic library using Wycheproof

Trail of Bits is publicly disclosing two vulnerabilities in elliptic, a widely used JavaScript library for elliptic curve cryptography that is downloaded over 10 million times weekly and is used by close to 3,000 projects. These vulnerabilities, caused by missing modular reductio … | Continue reading


@blog.trailofbits.com | 7 months ago

Level up your Solidity LLM tooling with Slither-MCP

We’re releasing Slither-MCP, a new tool that augments LLMs with Slither’s unmatched static analysis engine. Slither-MCP benefits virtually every use case for LLMs by exposing Slither’s static analysis API via tools, allowing LLMs to find critical code faster, navigate codebases m … | Continue reading


@blog.trailofbits.com | 7 months ago

How we avoided side-channels in our new post-quantum Go cryptography libraries

The Trail of Bits cryptography team is releasing our open-source pure Go implementations of ML-DSA (FIPS-204) and SLH-DSA (FIPS-205), two NIST-standardized post-quantum signature algorithms. These implementations have been engineered and reviewed by several of our cryptographers, … | Continue reading


@blog.trailofbits.com | 7 months ago

Building checksec without boundaries with Checksec Anywhere

Since its original release in 2009, checksec has become widely used in the software security community, proving useful in CTF challenges, security posturing, and general binary analysis. The tool inspects executables to determine which exploit mitigations (e.g., ASLR, DEP, stack … | Continue reading


@blog.trailofbits.com | 7 months ago

Balancer hack analysis and guidance for the DeFi ecosystem

.content img { border: 1px solid black; } TL;DR The root cause of the hack was a rounding direction issue that had been present in the code for many years. When the bug was first introduced, the threat landscape of the blockchain ecosystem was significantly different, and arit … | Continue reading


@blog.trailofbits.com | 7 months ago

The cryptography behind electronic passports

Did you know that most modern passports are actually embedded devices containing an entire filesystem, access controls, and support for several cryptographic protocols? Such passports display a small symbol indicating an electronic machine-readable travel document (eMRTD), which … | Continue reading


@blog.trailofbits.com | 7 months ago

Vulnerabilities in LUKS2 disk encryption for confidential VMs

Trail of Bits is disclosing vulnerabilities in eight different confidential computing systems that use Linux Unified Key Setup version 2 (LUKS2) for disk encryption. Using these vulnerabilities, a malicious actor with access to storage disks can extract all confidential data stor … | Continue reading


@blog.trailofbits.com | 7 months ago

Prompt injection to RCE in AI agents

We bypassed human approval protections for system command execution in AI agents, achieving RCE in three agent platforms. | Continue reading


@blog.trailofbits.com | 7 months ago

Taming 2,500 compiler warnings with CodeQL, an OpenVPN2 case study

We created a CodeQL query that reduced 2,500+ compiler warnings about implicit conversions in OpenVPN2 to just 20 high-priority cases, demonstrating how to effectively identify potentially dangerous type conversions in C code. | Continue reading


@blog.trailofbits.com | 8 months ago

Supply chain attacks are exploiting our assumptions

Supply chain attacks exploit fundamental trust assumptions in modern software development, from typosquatting to compromised build pipelines, while new defensive tools are emerging to make these trust relationships explicit and verifiable. | Continue reading


@blog.trailofbits.com | 8 months ago

Use mutation testing to find the bugs your tests don't catch

Mutation testing reveals blind spots in test suites by systematically introducing bugs and checking if tests catch them. Blockchain developers should use mutation testing to measure the effectiveness of their test suites and find bugs that traditional testing can miss. | Continue reading


@blog.trailofbits.com | 9 months ago

Fickling’s new AI/ML pickle file scanner

We’ve added a pickle file scanner to Fickling that uses an allowlist approach to protect AI/ML environments from malicious pickle files that could compromise models or infrastructure. | Continue reading


@blog.trailofbits.com | 9 months ago

How Sui Move rethinks flash loan security

Sui’s Move language significantly improves flash loan security by replacing Solidity’s reliance on callbacks and runtime checks with a “hot potato” model that enforces repayment at the compiler level. This shift makes flash loan security a language guarantee rather than a develop … | Continue reading


@blog.trailofbits.com | 9 months ago

Safer cold storage on Ethereum

By using smart contract programmability, exchanges can build custody solutions that remain secure even when multisig keys are compromised. | Continue reading


@blog.trailofbits.com | 9 months ago

Subverting code integrity checks to locally backdoor Signal, 1Password, Slack, and more

A vulnerability in Electron applications allows attackers to bypass code integrity checks by tampering with V8 heap snapshot files, enabling local backdoors in applications like Signal, 1Password, Slack, and Chrome. | Continue reading


@blog.trailofbits.com | 9 months ago

Intern projects that outlived the internship

Our business operations intern at Trail of Bits built two AI-powered tools that became permanent company resources—a podcast workflow that saves 1,250 hours annually and a Slack exporter that enables efficient knowledge retrieval across the organization. | Continue reading


@blog.trailofbits.com | 9 months ago

Implement EIP-7730 today

EIP-7730 enables hardware wallets to decode transactions into human-readable formats, eliminating blind signing vulnerabilities with minimal implementation effort for dApp developers. | Continue reading


@blog.trailofbits.com | 9 months ago

Speedrunning the New York Subway

We optimized the route for visiting every NYC subway station using algorithms from combinatorial optimization, creating a 20-hour tour that beats the existing world record by 45 minutes. | Continue reading


@blog.trailofbits.com | 9 months ago