Breaking the Solidity Compiler with a Fuzzer

Over the last few months, we’ve been fuzzing solc, the standard Solidity smart contract compiler, and we’ve racked up almost 20 (now mostly fixed) new bugs. A few of these are duplicates of existin… | Continue reading


@blog.trailofbits.com | 3 years ago

Verifying Windows binaries, without Windows

TL;DR: We’ve open-sourced a new library, μthenticode, for verifying Authenticode signatures on Windows PE binaries without a Windows machine. We’ve also integrated it into recent builds of Wincheck… | Continue reading


@blog.trailofbits.com | 3 years ago

Bug Hunting in Smart Contracts with Crytic

Crytic, our Github app for discovering smart contract flaws, is kind of a big deal: It detects security issues without human intervention, providing continuous assurance while you work and securing… | Continue reading


@blog.trailofbits.com | 4 years ago

Revisiting 2000 cuts using Binary Ninja’s new decompiler

It’s been four years since my blog post “2000 cuts with Binary Ninja.” Back then, Binary Ninja was in a private beta and the blog post response surprised its developers at Vector3… | Continue reading


@blog.trailofbits.com | 4 years ago

Financial Cryptography 2020 Recap

A few weeks ago, we went to the 24th Financial Cryptography (FC) conference and the Workshop on Trusted Smart Contracts (WTSC) workshop, where we presented our work on smart contract bug categoriza… | Continue reading


@blog.trailofbits.com | 4 years ago

Our Full Report on the Voatz Mobile Voting Platform

Voatz allows voters to cast their ballots from any geographic location on supported mobile devices. Its mobile voting platform is under increasing public scrutiny for security vulnerabilities that … | Continue reading


@blog.trailofbits.com | 4 years ago

Exploiting the Windows Cryptoapi Vulnerability

On Tuesday, the NSA announced they had found a critical vulnerability in the certificate validation functionality on Windows 10 and Windows Server 2016/2019. This bug allows attackers to break the … | Continue reading


@blog.trailofbits.com | 4 years ago

64 Bits Ought to Be Enough for Anybody

How quickly can we use brute force to guess a 64-bit number? The short answer is, it all depends on what resources are available. So we’re going to examine this problem starting with the most naive… | Continue reading


@blog.trailofbits.com | 4 years ago

iVerify, the Security Toolkit for iPhone Users

“If privacy matters, it should matter to the phone your life is on.” So says Apple in their recent ads about Privacy on the iPhone and controlling the data you share—but many of the sec… | Continue reading


@blog.trailofbits.com | 4 years ago

iVerify by Trail of Bits

Continue reading


@blog.trailofbits.com | 4 years ago

Announcing the Crytic $10k Research Prize

At Trail of Bits, we make a significant effort to stay up to date with the academic world. We frequently evaluate our work through peer-reviewed conferences, and we love to attend academic events (… | Continue reading


@blog.trailofbits.com | 4 years ago

Everything You Ever Wanted to Know About Test-Case Reduction

Imagine reducing the amount of code and time needed to test software, while at the same time increasing the efficacy of your tests and making your debugging tasks easier—all with minimal human effo… | Continue reading


@blog.trailofbits.com | 4 years ago

Attacking Go: VR TTPs

The Trail of Bits Assurance practice has received an influx of Go projects, following the success of our Kubernetes assessment this summer. As a result, we’ve been adapting for Go projects some of … | Continue reading


@blog.trailofbits.com | 4 years ago

Algo – your personal VPN in the cloud

I think you’ll agree when I say: there’s no VPN option on the market designed with equal emphasis on security and ease of use. That changes now. Today we’re introducing Algo, a self-hosted personal… | Continue reading


@blog.trailofbits.com | 4 years ago

New Tools That Tame the Treachery of Files

Parsing is hard, even when a file format is well specified. But when the specification is ambiguous, it leads to unintended and strange parser and interpreter behaviors that make file formats susce… | Continue reading


@blog.trailofbits.com | 4 years ago

Destroying x86_64 instruction decoders with differential fuzzing

TL;DR: x86_64 decoding is hard, and the number and variety of implementations available for it makes it uniquely suited to differential fuzzing. We’re open sourcing mishegos, a differential fuzzer … | Continue reading


@blog.trailofbits.com | 4 years ago

Safe browsing fails to protect user privacy

Recently, security researchers discovered that Apple was sending safe browsing data to Tencent for all Chinese users. This revelation has brought the underlying security and privacy guarantees of t… | Continue reading


@blog.trailofbits.com | 4 years ago

Watch Your Language: Our First Vyper Audit

A lot of companies are working on Ethereum smart contracts, yet writing secure contracts remains a difficult task. You still have to avoid common pitfalls, compiler issues, and constantly check you… | Continue reading


@blog.trailofbits.com | 4 years ago

TSC Frequency for All: Better Profiling and Benchmarking

Have you ever tried using LLVM’s X-Ray profiling tools to make some flame graphs, but gotten obscure errors like: ==65892==Unable to determine CPU frequency for TSC accounting. ==65892==Unable to d… | Continue reading


@blog.trailofbits.com | 4 years ago

Tethered Jailbreaks Are Back

Earlier today, a new iPhone Boot ROM exploit, checkm8 (or Apollo or Moonshine), was published on GitHub by axi0mX, affecting the iPhone 4S through the iPhone X. The vulnerability was patched in dev… | Continue reading


@blog.trailofbits.com | 4 years ago

Cryptography 2019 Takeaways

This year’s IACR Crypto conference was an excellent blend of far-out theory and down-to-earth pragmatism. A major theme throughout the conference was the huge importance of getting basic cryptograp… | Continue reading


@blog.trailofbits.com | 4 years ago

DeepState Now Supports Ensemble Fuzzing

by Alan Cao, Francis Lewis High School, Queens, NY We are proud to announce the integration of ensemble fuzzing into DeepState, our unit-testing framework powered by fuzzing and symbolic execution.… | Continue reading


@blog.trailofbits.com | 4 years ago

Rewriting Functions in Compiled Binaries

by Aditi Gupta, Carnegie Mellon University As a summer intern at Trail of Bits, I’ve been working on building Fennec, a tool to automatically replace function calls in compiled binaries that’s buil… | Continue reading


@blog.trailofbits.com | 4 years ago

Binary Symbolic Execution with KLEE-Native

KLEE-Native, a fork of KLEE that operates on binary program snapshots by lifting machine code to LLVM bitcode. | Continue reading


@blog.trailofbits.com | 4 years ago

Wrapper’s Delight

During my summer at Trail of Bits, I took full advantage of the latest C++ language features to build a new SQLite wrapper from scratch that is easy to use, lightweight, high performant, and concur… | Continue reading


@blog.trailofbits.com | 4 years ago

246 Findings from Our Smart Contract Audits: An Executive Summary

Until now, smart contract security researchers (and developers) have been frustrated by limited information about the actual flaws that survive serious development efforts. That limitation increase… | Continue reading


@blog.trailofbits.com | 4 years ago

From the Depths of Counterfeit Smartphones

In an age of online second-hand retailers, marketplace exchanges, and third-party refurb shops, it’s easier than ever to save hundreds of dollars when buying a phone. These channels provide an appe… | Continue reading


@blog.trailofbits.com | 4 years ago

Better Encrypted Group Chat

Broadly, an end-to-end encrypted messaging protocol is one that ensures that only the participants in a conversation, and no intermediate servers, routers, or relay systems, can read and write mess… | Continue reading


@blog.trailofbits.com | 4 years ago

Crytic: Continuous Assurance for Smart Contracts

Note: This blog has been reposted from Truffle Suite’s blog. We are proud to announce our new smart contract security product: Crytic provides continuous assurance for smart contracts. The pl… | Continue reading


@blog.trailofbits.com | 4 years ago

Understanding Docker Container Escapes

Trail of Bits recently completed a security assessment of Kubernetes, including its interaction with Docker. Felix Wilhelm’s recent tweet of a Proof of Concept (PoC) “container escape” sparked our … | Continue reading


@blog.trailofbits.com | 4 years ago

State of the Art Proof-of-Work: RandomX

RandomX is a new ASIC and GPU-resistant proof-of-work (PoW) algorithm originally developed for Monero, but potentially useful in any blockchain using PoW that wants to bias towards general purpose … | Continue reading


@blog.trailofbits.com | 4 years ago

Siderophile: Expose Your Crate’s Unsafety

Today we released a tool, siderophile, that helps Rust developers find fuzzing targets in their codebases. Siderophile trawls your crate’s dependencies and attempts to finds every unsafe function, … | Continue reading


@blog.trailofbits.com | 4 years ago

Use constexpr for faster, smaller, and safer code

With the release of C++14, the standards committee strengthened one of the coolest modern features of C++: constexpr. Now, C++ developers can write constant expressions and force their evaluation a… | Continue reading


@blog.trailofbits.com | 4 years ago

Creating an LLVM Sanitizer from Hopes and Dreams

Each year, Trail of Bits runs a month-long winter internship aka “winternship” program. This year we were happy to host 4 winterns who contributed to 3 projects. This project comes from Carson Harm… | Continue reading


@blog.trailofbits.com | 4 years ago

Getting 2FA Right in 2019

Since March, Trail of Bits has been working with the Python Software Foundation to add two-factor authentication (2FA) to Warehouse, the codebase that powers PyPI. As of today, PyPI members can ena… | Continue reading


@blog.trailofbits.com | 4 years ago

Trail of Bits ICSE 2019 – Recap

Three weeks ago, we presented our work on Slither at WETSEB, an ICSE workshop. ICSE is a top-tier academic conference, focused on software engineering. This edition of the event went very well. The… | Continue reading


@blog.trailofbits.com | 4 years ago

Leaves of Hash

Trail of Bits has released Indurative, a cryptographic library that enables authentication of a wide variety of data structures without requiring users to write much code. Indurative is useful for … | Continue reading


@blog.trailofbits.com | 4 years ago

Using Osquery for Remote Forensics

System administrators use osquery for endpoint telemetry and daily monitoring. Security threat hunters use it to find indicators of compromise on their systems. Now another audience is discovering … | Continue reading


@blog.trailofbits.com | 4 years ago

Fuzzing Unit Tests with DeepState and Eclipser

If unit tests are important to you, there’s now another reason to use DeepState, our Google-Test-like property-based testing tool for C and C++. It’s called Eclipser, a powerful new fuz… | Continue reading


@blog.trailofbits.com | 4 years ago

Slither: The Leading Static Analyzer for Smart Contracts

We have published an academic paper on Slither, our static analysis framework for smart contracts, in the International Workshop on Emerging Trends in Software Engineering for Blockchain (WETSEB), … | Continue reading


@blog.trailofbits.com | 4 years ago

Announcing the community-oriented osquery fork, osql

Announcing the community-oriented fork of osquery, osql. Supporting standard build tools, public CI, regular releases, and a community-driven roadmap. | Continue reading


@blog.trailofbits.com | 5 years ago

User-Friendly Fuzzing with Sienna Locomotive

Fuzzing is a great way to find bugs in software, but many developers don’t use it. We hope to change that today with the release of Sienna Locomotive, a new open-source fuzzer for Windows that emph… | Continue reading


@blog.trailofbits.com | 5 years ago

Summer Trail of Bits (2015)

This summer I’ve had the incredible opportunity to work with Trail of Bits as a high school intern. In return, I am obligated to write a blog post about this internship. So without further ado, her… | Continue reading


@blog.trailofbits.com | 5 years ago

Fuzzing an API with DeepState (Part 2)

Alex Groce, Associate Professor, School of Informatics, Computing and Cyber Systems, Northern Arizona University Mutation Testing Introducing one bug by hand (as we did in Part 1) is fine, and we c… | Continue reading


@blog.trailofbits.com | 5 years ago

Fuzzing an API with DeepState

Alex Groce, Associate Professor, School of Informatics, Computing and Cyber Systems, Northern Arizona University Using DeepState, we took a handwritten red-black tree fuzzer and, with minimal effor… | Continue reading


@blog.trailofbits.com | 5 years ago

McSema Handles C++ Exceptions

C++ programs using exceptions are problematic for binary lifters. The non-local control-flow “throw” and “catch” operations that appear in C++ source code do not map neatly to straightforward binar… | Continue reading


@blog.trailofbits.com | 5 years ago

How to write a rootkit without really trying

We open-sourced a fault injection tool, KRF, that uses kernel-space syscall interception. You can use it today to find faulty assumptions (and resultant bugs) in your programs. Check it out! This p… | Continue reading


@blog.trailofbits.com | 5 years ago

On Bounties and Boffins

Trying to make a living as a programmer participating in bug bounties is the same as convincing yourself that you’re good enough at Texas Hold ‘Em to quit your job. There’s data to back this up in … | Continue reading


@blog.trailofbits.com | 5 years ago