Using benchmarks to speed up Echidna
Trail of Bits Blog
by Trail of Bits
4h ago
By Ben Siraphob During my time as a Trail of Bits associate last summer, I worked on optimizing the performance of Echidna, Trail of Bits’ open-source smart contract fuzzer, written in Haskell. Through extensive use of profilers and other tools, I was able to pinpoint and debug a massive space leak in one of Echidna’s dependencies, hevm. Now that this problem has been fixed, Echidna and hevm can both expect to use several gigabytes less memory on some test cases compared to before. In this blog post, I’ll show how I used profiling to identify this deep performance issue in hevm and how we fixe ..read more
Visit website
The life and times of an Abstract Syntax Tree
Trail of Bits Blog
by Trail of Bits
1w ago
By Francesco Bertolaccini You’ve reached computer programming nirvana. Your journey has led you down many paths, including believing that God wrote the universe in LISP, but now the truth is clear in your mind: every problem can be solved by writing one more compiler. It’s true. Even our soon-to-be artificially intelligent overlords are nothing but compilers, just as the legends foretold. That smart contract you’ve been writing for your revolutionary DeFi platform? It’s going through a compiler at some point. Now that we’ve established that every program should contain at least one compiler if ..read more
Visit website
Curvance: Invariants unleashed
Trail of Bits Blog
by Trail of Bits
1w ago
By Nat Chin Welcome to our deep dive into the world of invariant development with Curvance. We’ve been building invariants as part of regular code review assessments for more than 6 years now, but our work with Curvance marks our very first official invariant development project, in which developing and testing invariants is all we did. Over the nine-week engagement, we wrote and tested 216 invariants, which helped us uncover 13 critical findings. We also found opportunities to significantly enhance our tools, including advanced trace printing and corpus preservation. This project was a journe ..read more
Visit website
Announcing two new LMS libraries
Trail of Bits Blog
by Trail of Bits
2w ago
By Will Song The Trail of Bits cryptography team is pleased to announce the open-sourcing of our pure Rust and Go implementations of Leighton-Micali Hash-Based Signatures (LMS), a well-studied NIST-standardized post-quantum digital signature algorithm. If you or your organization are looking to transition to post-quantum support for digital signatures, both of these implementations have been engineered and reviewed by several of our cryptographers, so please give them a try! For the Rust codebase, we’ve worked with the RustCrypto team to integrate our implementation into the RustCrypto/signatu ..read more
Visit website
5 reasons to strive for better disclosure processes
Trail of Bits Blog
by Trail of Bits
3w ago
By Max Ammann This blog showcases five examples of real-world vulnerabilities that we’ve disclosed in the past year (but have not publicly disclosed before). We also share the frustrations we faced in disclosing them to illustrate the need for effective disclosure processes. Here are the five bugs: Undefined behavior in the borsh-rs Rust library Denial-of-service (DoS) vector in Rust libraries for parsing the Ethereum ABI Missing limit on authentication tag length in Expo DoS vector in the num-bigint Rust library Insertion of MMKV database encryption key into Android system log with react-nat ..read more
Visit website
Introducing Ruzzy, a coverage-guided Ruby fuzzer
Trail of Bits Blog
by Trail of Bits
1M ago
By Matt Schwager Trail of Bits is excited to introduce Ruzzy, a coverage-guided fuzzer for pure Ruby code and Ruby C extensions. Fuzzing helps find bugs in software that processes untrusted input. In pure Ruby, these bugs may result in unexpected exceptions that could lead to denial of service, and in Ruby C extensions, they may result in memory corruption. Notably, the Ruby community has been missing a tool it can use to fuzz code for such bugs. We decided to fill that gap by building Ruzzy. Ruzzy is heavily inspired by Google’s Atheris, a Python fuzzer. Like Atheris, Ruzzy uses libFuzzer for ..read more
Visit website
Why fuzzing over formal verification?
Trail of Bits Blog
by Trail of Bits
1M ago
By Tarun Bansal, Gustavo Grieco, and Josselin Feist We recently introduced our new offering, invariant development as a service. A recurring question that we are asked is, “Why fuzzing instead of formal verification?” And the answer is, “It’s complicated.” We use fuzzing for most of our audits but have used formal verification methods in the past. In particular, we found symbolic execution useful in audits such as Sai, Computable, and Balancer. However, we realized through experience that fuzzing tools produce similar results but require significantly less skill and time. In this blog post, we ..read more
Visit website
Streamline your static analysis triage with SARIF Explorer
Trail of Bits Blog
by Trail of Bits
1M ago
By Vasco Franco Today, we’re releasing SARIF Explorer, the VSCode extension that we developed to streamline how we triage static analysis results. We make heavy use of static analysis tools during our audits, but the process of triaging them was always a pain. We designed SARIF Explorer to provide an intuitive UI inside VSCode, with features that make this process less painful: Open multiple SARIF files: Triage all your results at once. Browse results: Browse results by clicking on them to open their associated location in VSCode. You can also browse a result’s dataflow steps, if present. Cla ..read more
Visit website
Read code like a pro with our weAudit VSCode extension
Trail of Bits Blog
by Trail of Bits
1M ago
By Filipe Casal Today, we’re releasing weAudit, the collaborative code-reviewing tool that we use during our security audits. With weAudit, we review code more efficiently by taking notes and tracking bugs in a codebase directly inside VSCode, reducing our reliance on external tools, ensuring we never lose track of bugs we find, and enabling us to share that information with teammates. We designed weAudit with features that are crucial to our auditing process: Bookmarks for findings and notes: Bookmark code regions to identify findings or add audit notes. Tracking of audited files: Mark entir ..read more
Visit website
Releasing the Attacknet: A new tool for finding bugs in blockchain nodes using chaos testing
Trail of Bits Blog
by Trail of Bits
1M ago
By Benjamin Samuels (@thebensams) Today, Trail of Bits is publishing Attacknet, a new tool that addresses the limitations of traditional runtime verification tools, built in collaboration with the Ethereum Foundation. Attacknet is intended to augment the EF’s current test methods by subjecting their execution and consensus clients to some of the most challenging network conditions imaginable. Blockchain nodes must be held to the highest level of security assurance possible. Historically, the primary tools used to achieve this goal have been exhaustive specification, tests, client diversity, m ..read more
Visit website

Follow Trail of Bits Blog on FeedSpot

Continue with Google
Continue with Apple
OR