庆祝我们的2024开源贡献 - Trail of Bits博客
Trail of Bits以开发Slither、Medusa和Fickling等安全工具而闻名,但我们的工程努力远不止于自身项目。在整个2024年,我们的团队深入参与更广泛的安全生态系统,解决安全工程师日常依赖的开源工具和基础设施中的挑战。
今年,我们的工程师提交了超过750个成功合并的拉取请求(比2023年的贡献增加了67%!),改进了80多个开源项目,范围从基础密码学库到包管理器和软件索引。每个贡献都是对现实世界安全工程挑战的回应——当我们在关键工具中遇到限制时,我们会深入挖掘并改进它们。当我们发现加强每个人依赖的安全原语的方法时,我们会将这些改进实施到上游,使整个社区受益。
其中一些变化单独看可能很小——这里一个更健壮的解析器,那里更好的错误处理——但合在一起,它们代表了对数千名工程师依赖的安全工具的有意义改进。从强化包签名工作流到增强模糊测试能力,每个贡献都有助于为每个人构建更安全的基础。
让我们深入探讨我们在2024年做出的一些关键贡献。
关键贡献
LLVM:我们对MLIR和AddressSanitizer进行了改进。例如,我们为std::string和std::deque容器添加了C++容器溢出检测。在我们的博客文章“Sanitize your C++ containers: ASan annotations step-by-step”中阅读更多相关内容。
pwndbg:pwndbg是一个GDB和LLDB插件,有助于逆向工程和漏洞利用开发。我们的工程师继续维护该项目,修复了许多问题并合并了许多新功能,如LLDB端口、Binary Ninja集成(参见拉取请求)以及对嵌入式设备的更好支持。
hevm:hevm是EVM的一个实现,支持符号和具体执行,我们将其作为Echidna的基础。在整个2024年,我们贡献了几个性能改进,添加了对新Cancun操作码的支持,并实现了多个新的cheatcode以改善测试体验。
后量子密码学:我们发布了两种已被NIST标准化的后量子数字签名方案的开源实现,有助于改善后量子密码学的整体社区支持。我们发布了这些标准的Go和Rust版本,Rust版本已集成到RustCrypto中。
OSS-Fuzz:OSS-Fuzz是开源软件项目的持续模糊测试工具。我们添加了对Ruzzy的支持,这是我们为Ruby和Ruby C扩展提供的覆盖引导模糊测试器。
Python打包生态系统:我们继续为Python打包生态系统做出贡献,实现了PEP 740和许多其他供应链安全改进。在我们的博客文章“Attestations: A new generation of signatures on PyPI”中阅读更多相关内容。
这里列出的拉取请求捕捉了技术变化,但它们并没有讲述完整的故事。每个合并的拉取请求背后都有一个维护者社区,他们审查了我们的代码,提出了改进建议,并仔细考虑了每个变化的长期影响。这些维护者承担着开源开发的真正重量——确保一致性,维护测试覆盖,并在多年的变化中保持兼容性。
我们的许多贡献始于我们在安全评估或工具开发期间在开源项目中遇到的限制。我们没有为这些限制构建变通方案,而是选择在上游解决它们,改进整个安全社区依赖的工具。我们能够完成这项工作,是因为我们站在巨人的肩膀上——构建和培育这些关键项目的维护者和贡献者。
向每一位审查我们拉取请求的维护者、每一位提供反馈的开发人员以及每一位努力改善安全生态系统的工程师——感谢你们。为协作安全工程的又一年干杯!
Trail of Bits 2024年部分开源贡献
AI/ML
-
Repo: TabbyML/tabby
Name: feat: Add Solidity language
#1681 ret2libc: https://github.com/TabbyML/tabby/pull/1681 -
Repo: astronomer/ask-astro
#325 bismuthsalamander: https://github.com/astronomer/ask-astro/pull/325
-
Repo: continuedev/continue
Name: Add autocomplete support for Solidity
#964 ret2libc: https://github.com/continuedev/continue/pull/964 -
Repo: langchain-ai/langchain
Name: core: runnables: special handling GeneratorExit because no error
#22662 ret2libc: https://github.com/langchain-ai/langchain/pull/22662 -
Repo: onyx-dot-app/onyx
Name: backend: remove duplicated word in ANSWER_VALIDITY_PROMPT
#1184 ret2libc: https://github.com/onyx-dot-app/onyx/pull/1184 -
Repo: unoplat/vespa-helm-charts
Name: Fix labels and service selector
#14 oldsj: https://github.com/unoplat/vespa-helm-charts/pull/14
密码学
-
Repo: C2SP/x509-limbo
Name: render-testcases: fix linkification
#162 woodruffw: https://github.com/C2SP/x509-limbo/pull/162 -
Repo: C2SP/x509-limbo
Name: gocryptox509: handle a KeyUsage edge case
#167 woodruffw: https://github.com/C2SP/x509-limbo/pull/167 -
Repo: C2SP/x509-limbo
Name: Update URLs post-transfer
#172 woodruffw: https://github.com/C2SP/x509-limbo/pull/172 -
Repo: C2SP/x509-limbo
Name: Add an explicit curve test
#173 woodruffw: https://github.com/C2SP/x509-limbo/pull/173 -
Repo: C2SP/x509-limbo
Name: testcases: add CVE-2024-0567
#176 woodruffw: https://github.com/C2SP/x509-limbo/pull/176
(由于篇幅限制,此处仅展示部分贡献列表,完整列表包含数百个具体的技术贡献)
语言和编译器
-
Repo: airbus-cert/tree-sitter-powershell
Name: bindings/rust: fix build.rs
#15 woodruffw: https://github.com/airbus-cert/tree-sitter-powershell/pull/15 -
Repo: compiler-explorer/compiler-explorer
Name: Add vast-trunk compiler
#5973 xlauko: https://github.com/compiler-explorer/compiler-explorer/pull/5973 -
Repo: llvm/llvm-project
Name: [MLIR] Make resolveCallable customizable in CallOpInterface
#100361 xlauko: https://github.com/llvm/llvm-project/pull/100361 -
Repo: llvm/llvm-project
Name: [ASan][libc++] Annotating std::basic_string with all allocators
#75845 AdvenamTacet: https://github.com/llvm/llvm-project/pull/75845
库
-
Repo: AFLplusplus/AFLplusplus
Name: afl-persistent-config: Use GRUB_CMDLINE_LINUX instead of GRUB_CMDLINE_LINUX_DEFAULT
#1998 maxammann: https://github.com/AFLplusplus/AFLplusplus/pull/1998 -
Repo: AFLplusplus/LibAFL
Name: Fix libafl_libfuzzer’s compatibility with LLVM 14
#2136 maxammann: https://github.com/AFLplusplus/LibAFL/pull/2136 -
Repo: curl/curl-fuzzer
Name: Resolve i386 build warnings and errors
#103 elopez: https://github.com/curl/curl-fuzzer/pull/103
技术基础设施
-
Repo: Homebrew/homebrew-core
Name: caracal 0.2.3
#160933 elopez: https://github.com/Homebrew/homebrew-core/pull/160933 -
Repo: aws/aws-nitro-enclaves-cli
Name: command_executer – recv infinite loop
#609 GrosQuildu: https://github.com/aws/aws-nitro-enclaves-cli/pull/609 -
Repo: osquery/osquery
Name: Changelog 5.11.0
#8231 Smjert: https://github.com/osquery/osquery/pull/8231
软件测试工具
-
Repo: google/oss-fuzz
Name: Adding Ruby Support into OSS-Fuzz via Ruzzy
#12034 AdvenamTacet: https://github.com/google/oss-fuzz/pull/12034 -
Repo: langston-barrett/tree-crasher
Name: feat: tree-crasher-nix
#75 woodruffw: https://github.com/langston-barrett/tree-crasher/pull/75 -
Repo: pypa/abi3audit
Name: _object: lower warning to debug
#103 woodruffw: https://github.com/pypa/abi3audit/pull/103
区块链软件
-
Repo: FuelLabs/fuel-vm
Name: Add ClusterFuzzLite in CI featuring PR fuzzing, batch fuzzing and fuzz coverage reports
#820 netrome: https://github.com/FuelLabs/fuel-vm/pull/820 -
Repo: JoranHonig/tree-sitter-solidity
Name: Add support for keyName/valueName in mappings
#52 ret2libc: https://github.com/JoranHonig/tree-sitter-solidity/pull/52 -
Repo: cosmos/cosmos-sdk
Name: test: avoid evidenceFraction parameter to be very close to 1.0
#16978 ggrieco-tob: https://github.com/cosmos/cosmos-sdk/pull/16978 -
Repo: ethereum/hevm
Name: Abstract gas v3
#427 arcz: https://github.com/ethereum/hevm/pull/427
逆向工程工具
-
Repo: Gallopsled/pwntools
Name: Fix pwn constgrep when it matches a non-constant type (Fixes #2344)
#2345 disconnect3d: https://github.com/Gallopsled/pwntools/pull/2345 -
Repo: NationalSecurityAgency/ghidra
Name: Fix ASAN static initialization order fiasco
#5382 ekilmer: https://github.com/NationalSecurityAgency/ghidra/pull/5382 -
Repo: angr/angrop
#95 ekilmer: https://github.com/angr/angrop/pull/95
-
Repo: pwndbg/pwndbg
Name: Fixes #1976 – vmmap read /proc/$tid/maps instead of $pid/maps
#1982 disconnect3d: https://github.com/pwndbg/pwndbg/pull/1982
打包生态系统/供应链
-
Repo: Homebrew/.github
Name: SECURITY: make conduct section, warn against weaponized PRs
#92 woodruffw: https://github.com/Homebrew/.github/pull/92 -
Repo: Homebrew/brew
Name: attestation: add initial attestation helpers, integrate into brew install
#17049 woodruffw: https://github.com/Homebrew/brew/pull/17049 -
Repo: pypa/gh-action-pypi-publish
Name: oidc-exchange: update OIDC minting endpoint
#206 woodruffw: https://github.com/pypa/gh-action-pypi-publish/pull/206 -
Repo: pypa/twine
Name: twine: use API tokens by default on PyPI
#1040 woodruffw: https://github.com/pypa/twine/pull/1040
其他
-
Repo: AlDanial/cloc
Name: Adding FunC language
#872 cdahlheimer: https://github.com/AlDanial/cloc/pull/872 -
Repo: emad-elsaid/xlog
Name: link_preview.go: fix Twitter regexp
#67 disconnect3d: https://github.com/emad-elsaid/xlog/pull/67
如果您喜欢这篇文章,请分享: Twitter LinkedIn GitHub Mastodon Hacker News
页面内容 关键贡献 Trail of Bits 2024年部分开源贡献 AI/ML 密码学 语言和编译器 库 技术基础设施 软件测试工具 区块链软件 逆向工程工具 打包生态系统/供应链 其他 近期文章 使用Deptective调查您的依赖项 系好安全带,Buttercup,AIxCC的评分回合正在进行中! 使您的智能合约超越私钥风险 Go解析器中意想不到的安全陷阱 我们审查首批DKL之一的经验教训 Silence Laboratories的23个库 © 2025 Trail of Bits。 使用Hugo和Mainroad主题生成。