<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>2022 on The Trail of Bits Blog</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/</link><description>Recent content in 2022 on The Trail of Bits Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 22 Dec 2022 15:10:39 -0500</lastBuildDate><atom:link href="https://miscreants.github.io/blog.trailofbits.com/2022/index.xml" rel="self" type="application/rss+xml"/><item><title>How to share what you’ve learned from our audits</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/12/22/curl-security-audit-threat-model/</link><pubDate>Thu, 22 Dec 2022 15:10:39 -0500</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/12/22/curl-security-audit-threat-model/</guid><description>Trail of Bits recently completed a security review of cURL, which is an amazing and ubiquitous tool for transferring data. We were really thrilled to see cURL founder and lead developer Daniel Stenberg write a blog post about the engagement and the report, and wanted to highlight some important things he pointed […]</description></item><item><title>Fast and accurate syntax searching for C and C++</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/12/22/syntax-searching-c-c-clang-ast/</link><pubDate>Thu, 22 Dec 2022 08:00:52 -0500</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/12/22/syntax-searching-c-c-clang-ast/</guid><description>The naive approach to searching for patterns in source code is to use regular expressions; a better way is to parse the code with a custom parser, but both of these approaches have limitations. During my internship, I prototyped an internal tool called Syntex that does searching on Clang ASTs to avoid […]</description></item><item><title>What child is this?</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/12/20/process-reparenting-microsoft-windows/</link><pubDate>Tue, 20 Dec 2022 08:00:25 -0500</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/12/20/process-reparenting-microsoft-windows/</guid><description>A Primer on Process Reparenting in Windows. Process reparenting is a technique used in Microsoft Windows to create a child process under a different parent process than the one making the call to CreateProcess. Malicious actors can use this technique to evade security products or break process ancestry ties, making detection more […]</description></item><item><title>How I gave ManticoreUI a makeover</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/12/15/manitcoreui-symbolic-execution-gui/</link><pubDate>Thu, 15 Dec 2022 08:00:23 -0500</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/12/15/manitcoreui-symbolic-execution-gui/</guid><description>During my internship at Trail of Bits, I explored the effectiveness of symbolic execution for finding vulnerabilities in native applications ranging from CTF challenges to popular open source libraries like image parsers, focusing on finding ways to enhance ManticoreUI. It is a powerful tool that improves accessibility to symbolic execution and vulnerability […]</description></item><item><title>Manticore GUIs made easy</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/12/13/manticore-gui-plugin-binary-ninja-ghidra/</link><pubDate>Tue, 13 Dec 2022 08:00:04 -0500</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/12/13/manticore-gui-plugin-binary-ninja-ghidra/</guid><description>Trail of Bits maintains Manticore, a symbolic execution engine that can analyze smart contracts and native binaries. While symbolic execution is a powerful technique that can augment the vulnerability discovery process, it requires some base domain knowledge and thus has its own learning curve. Given the plethora […]</description></item><item><title>Hybrid fuzzing: Sharpening the spikes of Echidna</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/12/08/hybrid-echidna-fuzzing-optik-maat/</link><pubDate>Thu, 08 Dec 2022 08:00:36 -0500</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/12/08/hybrid-echidna-fuzzing-optik-maat/</guid><description>Smart contract fuzzing is an effective bug-finding technique that is largely used at Trail Of Bits during audits. During my internship at Trail of Bits, I contributed to expand our fuzzing capabilities by working on Hybrid Echidna, a “hybrid fuzzer” that couples our smart contract fuzzer, Echidna, with […]</description></item><item><title>Specialized Zero-Knowledge Proof failures</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/11/29/specialized-zero-knowledge-proof-failures/</link><pubDate>Tue, 29 Nov 2022 07:30:56 -0500</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/11/29/specialized-zero-knowledge-proof-failures/</guid><description>Zero-knowledge (ZK) proofs are useful cryptographic tools that have seen an explosion of interest in recent years, largely due to their applications to cryptocurrency. The fundamental idea of a ZK proof is that a person with a secret piece of information (a cryptographic key, for instance) can prove something about the secret […]</description></item><item><title>ABI compatibility in Python: How hard could it be?</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/11/15/python-wheels-abi-abi3audit/</link><pubDate>Tue, 15 Nov 2022 07:30:00 -0500</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/11/15/python-wheels-abi-abi3audit/</guid><description>TL;DR: Trail of Bits has developed abi3audit, a new Python tool for checking Python packages for CPython application binary interface (ABI) violations. We’ve used it to discover hundreds of inconsistently and incorrectly tagged package distributions, each of which is a potential source of crashes and exploitable memory corruption due to undetected ABI differences. It’s publicly […]</description></item><item><title>We’re streamers now</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/11/14/livestream-workshop-fuzzing-echidna-slither/</link><pubDate>Mon, 14 Nov 2022 08:30:23 -0500</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/11/14/livestream-workshop-fuzzing-echidna-slither/</guid><description>Over the years, we’ve built many high-impact tools that we use for security reviews. You might know some of them, like Slither, Echidna, Amarna, Tealer, and test-fuzz. All of our tools are open source, and we love seeing the community benefit from them. But mastering our tools takes time and practice, and it’s easier if […]</description></item><item><title>Look out! Divergent representations are everywhere!</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/11/10/divergent-representations-variable-overflows-c-compiler/</link><pubDate>Thu, 10 Nov 2022 07:30:53 -0500</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/11/10/divergent-representations-variable-overflows-c-compiler/</guid><description>Trail of Bits recently published a blog post about a signed integer overflow in certain versions of SQLite that can enable arbitrary code execution and result in a denial of service. While working on proof-of-concept exploits for that vulnerability, we noticed that the compiler’s representation of an important integer variable is semantically […]</description></item><item><title>We sign code now</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/11/08/sigstore-code-signing-verification-software-supply-chain/</link><pubDate>Tue, 08 Nov 2022 07:30:15 -0500</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/11/08/sigstore-code-signing-verification-software-supply-chain/</guid><description>Sigstore announced the general availability of its free and ecosystem-agnostic software signing service two weeks ago, giving developers a way to sign, verify and protect their software projects and the dependencies they rely on. Trail of Bits is absolutely thrilled to be a part of the project, and we spoke about our […]</description></item><item><title>Stranger Strings: An exploitable flaw in SQLite</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/10/25/sqlite-vulnerability-july-2022-library-api/</link><pubDate>Tue, 25 Oct 2022 07:30:10 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/10/25/sqlite-vulnerability-july-2022-library-api/</guid><description>Trail of Bits is publicly disclosing CVE-2022-35737, which affects applications that use the SQLite library API. CVE-2022-35737 was introduced in SQLite version 1.0.12 (released on October 17, 2000) and fixed in release 3.39.2 (released on July 21, 2022). CVE-2022-35737 is exploitable on 64-bit systems, and exploitability depends on how the program is […]</description></item><item><title>Porting the Solana eBPF JIT compiler to ARM64</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/10/12/solana-jit-compiler-ebpf-arm64/</link><pubDate>Wed, 12 Oct 2022 08:00:55 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/10/12/solana-jit-compiler-ebpf-arm64/</guid><description>Andrew Haberlandt  During my summer internship at Trail of Bits, I worked on the fork of the RBPF JIT compiler that is used to execute Solana smart contracts. The RBPF JIT compiler plays a critical role on the Solana blockchain, as it facilitates the execution of contracts on validator nodes by default. Before my […]</description></item><item><title>Working on blockchains as a Trail of Bits intern</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/10/05/trail-of-bits-internship-blockchain-tealer/</link><pubDate>Wed, 05 Oct 2022 09:00:42 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/10/05/trail-of-bits-internship-blockchain-tealer/</guid><description>Earlier this year, I successfully completed my internship at Trail of Bits and secured a full-time position as a Blockchain Security Analyst. This post is not intended to be a technical description of the work I did during my internship. Rather, it is intended to describe my general experience as a […]</description></item><item><title>Secure your machine learning with Semgrep</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/10/03/semgrep-maching-learning-static-analysis/</link><pubDate>Mon, 03 Oct 2022 09:00:53 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/10/03/semgrep-maching-learning-static-analysis/</guid><description>tl;dr: Our publicly available Semgrep ruleset now has 11 rules dedicated to the misuse of machine learning libraries. Try it out now! Picture this: You’ve spent months curating images, trying out different architectures, downloading pretrained models, messing with Kubernetes, and you’re finally ready to ship your sparkling new machine learning (ML) product. […]</description></item><item><title>It pays to be Circomspect</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/09/15/it-pays-to-be-circomspect/</link><pubDate>Thu, 15 Sep 2022 00:00:43 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/09/15/it-pays-to-be-circomspect/</guid><description>In October 2019, a security researcher found a devastating vulnerability in Tornado.cash, a decentralized, non-custodial mixer on the Ethereum network. Tornado.cash uses zero-knowledge proofs (ZKPs) to allow its users to privately deposit and withdraw funds. The proofs are supposed to guarantee that each withdrawal can be matched against a […]</description></item><item><title>Magnifier: An Experiment with Interactive Decompilation</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/08/25/magnifier-an-experiment-with-interactive-decompilation/</link><pubDate>Thu, 25 Aug 2022 09:00:30 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/08/25/magnifier-an-experiment-with-interactive-decompilation/</guid><description>Today, we are releasing Magnifier, an experimental reverse engineering user interface I developed during my internship. Magnifier asks, “What if, as an alternative to taking handwritten notes, reverse engineering researchers could interactively reshape a decompiled program to reflect what they would normally record?” With Magnifier, the decompiled C code isn’t the end—it’s […]</description></item><item><title>Using mutants to improve Slither</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/08/17/using-mutants-to-improve-slither/</link><pubDate>Wed, 17 Aug 2022 09:00:12 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/08/17/using-mutants-to-improve-slither/</guid><description>Improving static analysis tools can be hard; once you’ve implemented a good tool based on a useful representation of a program and added a large number of rules to detect problems, how do you further enhance the tool’s bug-finding power? One (necessary) approach to coming up with new rules […]</description></item><item><title>The road to the apprenticeship</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/08/12/the-road-to-the-apprenticeship/</link><pubDate>Fri, 12 Aug 2022 09:00:13 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/08/12/the-road-to-the-apprenticeship/</guid><description>Finding talent is hard, especially in the blockchain security industry. The space is new, so you won’t find engineers with decades of experience with smart contracts. Training is difficult, as the technology evolves constantly, and online content quickly becomes outdated. There are also a lot of misconceptions about blockchain […]</description></item><item><title>Shedding smart contract storage with Slither</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/07/28/shedding-smart-contract-storage-with-slither/</link><pubDate>Thu, 28 Jul 2022 09:00:07 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/07/28/shedding-smart-contract-storage-with-slither/</guid><description>You think you’ve found a critical bug in a Solidity smart contract that, if exploited, could drain a widely used cryptocurrency exchange’s funds. To confirm that it’s really a bug, you need to figure out the value at an obscure storage slot that has no getter method. Adrenaline courses […]</description></item><item><title>libmagic: The Blathering</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/07/01/libmagic-the-blathering/</link><pubDate>Fri, 01 Jul 2022 07:00:27 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/07/01/libmagic-the-blathering/</guid><description>A couple of years ago we released PolyFile: a utility to identify and map the semantic structure of files, including polyglots, chimeras, and schizophrenic files. It’s a bit like file, binwalk, and Kaitai Struct all rolled into one. PolyFile initially used the TRiD definition database for file identification. However, […]</description></item><item><title>A Typical Day as a Trail of Bits Engineer-Consultant</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/06/30/a-typical-day-as-a-trail-of-bits-engineer-consultant/</link><pubDate>Thu, 30 Jun 2022 09:00:29 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/06/30/a-typical-day-as-a-trail-of-bits-engineer-consultant/</guid><description>Wherever you are in the world, a typical day as a Trail of Bits Engineer-Consultant means easing into your work. Here’s a short video showing some of our European colleagues describing a typical day as a Trail of Bits Engineer-Consultant: You generally set your own hours, to provide at least a couple of hours of […]</description></item><item><title>The Trail of Bits Hiring Process</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/06/28/the-trail-of-bits-hiring-process/</link><pubDate>Tue, 28 Jun 2022 09:00:10 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/06/28/the-trail-of-bits-hiring-process/</guid><description>When engineers apply to Trail of Bits, they’re often surprised by how straightforward and streamlined our hiring process is. After years of experience, we’ve cut the process to its bedrock, so that it’s candidate focused, quick, and effective. Here’s a short video showing some of our European colleagues discussing some cool things they’re working on […]</description></item><item><title>Managing risk in blockchain deployments</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/06/24/managing-risk-in-blockchain-deployments/</link><pubDate>Fri, 24 Jun 2022 09:00:09 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/06/24/managing-risk-in-blockchain-deployments/</guid><description>Do you need a blockchain? And if so, what kind? Trail of Bits has released an operational risk assessment report on blockchain technology. As more businesses consider the innovative advantages of blockchains and, more generally, distributed ledger technologies (DLT), executives must decide whether and how to adopt them. Organizations adopting these systems must understand and […]</description></item><item><title>Are blockchains decentralized?</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/06/21/are-blockchains-decentralized/</link><pubDate>Tue, 21 Jun 2022 05:00:39 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/06/21/are-blockchains-decentralized/</guid><description>A new Trail of Bits research report examines unintended centralities in distributed ledgers Blockchains can help push the boundaries of current technology in useful ways. However, to make good risk decisions involving exciting and innovative technologies, people need demonstrable facts that are arrived at through reproducible methods and open data. We believe the risks inherent […]</description></item><item><title>Announcing the new Trail of Bits podcast</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/06/20/announcing-the-new-trail-of-bits-podcast/</link><pubDate>Mon, 20 Jun 2022 22:00:42 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/06/20/announcing-the-new-trail-of-bits-podcast/</guid><description>Trail of Bits has launched a podcast. The first five-episode season is now available for download. The podcast and its RSS feed are available at trailofbits.audio, and you may subscribe on all major podcast outlets, including Apple iTunes, Spotify, Gaana, Google Podcasts, Amazon Music, and many others. Listening to our podcast is like having a […]</description></item><item><title>Themes from PyCon US 2022</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/06/09/themes-from-pycon-us-2022/</link><pubDate>Thu, 09 Jun 2022 07:00:19 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/06/09/themes-from-pycon-us-2022/</guid><description>After two long years of lockdowns, virtual meetups, quarantines, and general chaos, the Python community gathered en masse to Salt Lake City for PyCon 2022. Two of our engineers attended the conference, and we are happy to report that the Python community is not only alive and well but also thriving, with […]</description></item><item><title>Interactive decompilation with rellic-xref</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/05/17/interactive-decompilation-with-rellic-xref/</link><pubDate>Tue, 17 May 2022 07:00:09 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/05/17/interactive-decompilation-with-rellic-xref/</guid><description>Rellic is a framework for analyzing and decompiling LLVM modules into C code, implementing the concepts described in the original paper presenting the Dream decompiler and its successor, Dream++. It recently made an appearance on this blog when I presented rellic-headergen, a tool for extracting debug metadata from LLVM modules and turning […]</description></item><item><title>Themes from Real World Crypto 2022</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/05/03/themes-from-real-world-crypto-2022/</link><pubDate>Tue, 03 May 2022 07:00:04 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/05/03/themes-from-real-world-crypto-2022/</guid><description>Last week, over 500 cryptographers from around the world gathered in Amsterdam for Real World Crypto 2022, meeting in person for the first time in over two years. As in previous years, we dispatched a handful of our researchers and engineers to attend the conference, listen to talks, and schmooze observe the […]</description></item><item><title>Improving the state of go-fuzz</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/04/26/improving-the-state-of-go-fuzz/</link><pubDate>Tue, 26 Apr 2022 07:00:18 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/04/26/improving-the-state-of-go-fuzz/</guid><description>During my winternship, I used the findings from recent Go audits to make several improvements to go-fuzz, a coverage-based fuzzer for projects written in Go. I focused on three enhancements to improve the effectiveness of Go fuzzing campaigns and provide a better experience for users. I contributed to fixing type alias […]</description></item><item><title>Amarna: Static analysis for Cairo programs</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/04/20/amarna-static-analysis-for-cairo-programs/</link><pubDate>Wed, 20 Apr 2022 07:00:04 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/04/20/amarna-static-analysis-for-cairo-programs/</guid><description>We are open-sourcing Amarna, our new static analyzer and linter for the Cairo programming language. Cairo is a programming language powering several trading exchanges with millions of dollars in assets (such as dYdX, driven by StarkWare) and is the programming language for StarkNet contracts. But, not unlike other languages, it has its […]</description></item><item><title>The Frozen Heart vulnerability in PlonK</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/04/18/the-frozen-heart-vulnerability-in-plonk/</link><pubDate>Mon, 18 Apr 2022 07:00:01 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/04/18/the-frozen-heart-vulnerability-in-plonk/</guid><description>In part 1 of this blog post, we disclosed critical vulnerabilities that break the soundness of multiple implementations of zero-knowledge proof systems. This class of vulnerability, which we dubbed Frozen Heart, is caused by insecure implementations of the Fiat-Shamir transformation that allow malicious users to forge proofs for random statements. In part […]</description></item><item><title>The Frozen Heart vulnerability in Bulletproofs</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/04/15/the-frozen-heart-vulnerability-in-bulletproofs/</link><pubDate>Fri, 15 Apr 2022 07:00:52 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/04/15/the-frozen-heart-vulnerability-in-bulletproofs/</guid><description>In part 1 of this series, we disclosed critical vulnerabilities that break the soundness of multiple implementations of zero-knowledge proof systems. This class of vulnerability, which we dubbed Frozen Heart, is caused by insecure implementations of the Fiat-Shamir transformation that allow malicious users to forge proofs for random statements. In part 2, […]</description></item><item><title>The Frozen Heart vulnerability in Girault’s proof of knowledge</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/04/14/the-frozen-heart-vulnerability-in-giraults-proof-of-knowledge/</link><pubDate>Thu, 14 Apr 2022 07:00:32 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/04/14/the-frozen-heart-vulnerability-in-giraults-proof-of-knowledge/</guid><description>In part 1 of this series, we disclosed critical vulnerabilities that break the soundness of multiple implementations of zero-knowledge proof systems. This class of vulnerability, which we dubbed Frozen Heart, is caused by insecure implementations of the Fiat-Shamir transformation that allow malicious users to forge proofs for random statements. The vulnerability is […]</description></item><item><title>Coordinated disclosure of vulnerabilities affecting Girault, Bulletproofs, and PlonK</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/04/13/part-1-coordinated-disclosure-of-vulnerabilities-affecting-girault-bulletproofs-and-plonk/</link><pubDate>Wed, 13 Apr 2022 07:00:00 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/04/13/part-1-coordinated-disclosure-of-vulnerabilities-affecting-girault-bulletproofs-and-plonk/</guid><description>Trail of Bits is publicly disclosing critical vulnerabilities that break the soundness of multiple implementations of zero-knowledge proof systems, including PlonK and Bulletproofs. These vulnerabilities are caused by insecure implementations of the Fiat-Shamir transformation that allow malicious users to forge proofs for random statements. We’ve dubbed this class of vulnerabilities Frozen Heart. […]</description></item><item><title>Towards Practical Security Optimizations for Binaries</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/03/25/towards-practical-security-optimizations-for-binaries/</link><pubDate>Fri, 25 Mar 2022 08:58:54 -0400</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/03/25/towards-practical-security-optimizations-for-binaries/</guid><description>To be thus is nothing, but to be safely thus. (Macbeth: 3.1) It’s not enough that compilers generate efficient code, they must also generate safe code. Despite the extensive testing and correctness certification that goes into developing compilers and their optimization passes, they may inadvertently introduce information leaks […]</description></item><item><title>Optimizing a smart contract fuzzer</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/03/02/optimizing-a-smart-contract-fuzzer/</link><pubDate>Wed, 02 Mar 2022 07:00:33 -0500</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/03/02/optimizing-a-smart-contract-fuzzer/</guid><description>During my winternship, I applied code analysis tools, such as GHC’s Haskell profiler, to improve the efficiency of the Echidna smart contract fuzzer. As a result, Echidna is now over six times faster! Echidna overview To use Echidna, users provide smart contracts and a list of conditions that should be satisfied no […]</description></item><item><title>Maat: Symbolic execution made easy</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/02/23/maat-symbolic-execution-made-easy/</link><pubDate>Wed, 23 Feb 2022 07:00:08 -0500</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/02/23/maat-symbolic-execution-made-easy/</guid><description>We have released Maat, a cross-architecture, multi-purpose, and user-friendly symbolic execution framework. It provides common symbolic execution capabilities such as dynamic symbolic execution (DSE), taint analysis, binary instrumentation, environment simulation, and constraint solving. Maat is easy-to-use, is based on the popular Ghidra intermediate representation (IR) language p-code, prioritizes runtime performance, and has […]</description></item><item><title>Part 2: Improving crypto code in Rust using LLVM’s optnone</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/02/01/part-2-rusty-crypto/</link><pubDate>Tue, 01 Feb 2022 07:00:25 -0500</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/02/01/part-2-rusty-crypto/</guid><description>Let’s implement crypto! Welcome to the second part of our posts on the challenges of implementing constant-time Rust code. Part 1 discussed challenges with constant-time implementations in Rust and WebAssembly and how optimization barriers can mitigate risk. The Rust crypto community has responded with several approaches, and in this post, we will […]</description></item><item><title>Part 1: The life of an optimization barrier</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/01/26/part-1-the-life-of-an-optimization-barrier/</link><pubDate>Wed, 26 Jan 2022 07:00:35 -0500</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/01/26/part-1-the-life-of-an-optimization-barrier/</guid><description>Many engineers choose Rust as their language of choice for implementing cryptographic protocols because of its robust security guarantees. Although Rust makes safe cryptographic engineering easier, there are still some challenges to be aware of. Among them is the need to preserve constant-time properties, which ensure that, regardless of the input, code […]</description></item><item><title>C your data structures with rellic-headergen</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/01/19/c-your-data-structures-with-rellic-headergen/</link><pubDate>Wed, 19 Jan 2022 07:00:12 -0500</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/01/19/c-your-data-structures-with-rellic-headergen/</guid><description>Have you ever wondered how a compiler sees your data structures? Compiler Explorer may help you understand the relation between the source code and machine code, but it doesn’t provide as much support when it comes to the layout of your data. You might have heard about padding, alignment, and “plain old […]</description></item><item><title>Finding unhandled errors using CodeQL</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/01/11/finding-unhandled-errors-using-codeql/</link><pubDate>Tue, 11 Jan 2022 07:00:58 -0500</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/01/11/finding-unhandled-errors-using-codeql/</guid><description>One of your developers finds a bug in your codebase—an unhandled error code—and wonders whether there could be more. He combs through the code and finds unhandled error after unhandled error. One lone developer playing whack-a-mole. It’s not enough. And your undisciplined team of first-year Stanford grads never learned software engineering. You’re […]</description></item><item><title>Toward a Best-of-Both-Worlds Binary Disassembler</title><link>https://miscreants.github.io/blog.trailofbits.com/2022/01/05/toward-a-best-of-both-worlds-binary-disassembler/</link><pubDate>Wed, 05 Jan 2022 07:00:51 -0500</pubDate><guid>https://miscreants.github.io/blog.trailofbits.com/2022/01/05/toward-a-best-of-both-worlds-binary-disassembler/</guid><description>This past winter, I was fortunate to have the opportunity to work for Trail of Bits as a graduate student intern under the supervision of Peter Goodman and Artem Dinaburg. During my internship, I developed Dr. Disassembler, a Datalog-driven framework for transparent and mutable binary disassembly. Though this project is ongoing, this […]</description></item></channel></rss>