庆祝我们的 2021 开源贡献 - Trail of Bits 博客
Sam Moelius
2021 年 12 月 31 日
年度回顾
在 Trail of Bits,我们以将最佳工具开源而自豪,例如 algo、manticore 和 graphtage。但虽然这篇文章关于开源,它并不关于我们的工具……
2021 年,Trail of Bits 员工提交了超过 190 个拉取请求(PR),这些请求被合并到非 Trail of Bits 的代码库中。这展示了我们致力于保护整个软件生态系统并提高每个人的软件质量的承诺。贡献的代表性列表出现在文章末尾,但以下是一些亮点:
LLVM 是一组编译器和工具链技术。LLVM 作为许多流行编译器的后端,如 clang、rustc 和 swiftc。我们为 LLVM 中的多个错误实施了修复,包括纠正文档错误、确保在 clang 的 AST 转储模式中生成有效的 JSON,以及确保 LLVM 仅接受格式良好的位码。
Nixpkgs 是一个包含超过 80,000 个软件包的集合,可以通过 Nix 包管理器安装。我们对许多广泛使用的 Nix 包进行了改进和错误修复,包括 Go、Hevm、libff、Protobuf 和 SBV。
Osquery 是一个基于 SQL 的操作系统检测、监控和分析框架。我们对 osquery 做出了众多贡献,最显著的是基于新的端点安全 API 为 macOS 添加了进程事件监控;彻底 overhaul 了项目的代码签名、打包和 CI;最后但同样重要的是,添加了对 Apple Silicon 的原生支持,这是 Apple 今年初开始过渡的基于 ARM 的架构。
Python 是一种解释型、高级、通用编程语言。我们为 Python 打包/分发生态系统中的关键包贡献了一系列修复和新功能,包括 mypy、pip-api 和 Warehouse。我们还为 pyelftools(主导的 Python ELF 解析器)添加了 DWARFv5 支持。
Pwndbg 是一个 GDB 插件,使使用 GDB 进行调试“不那么糟糕”。我们在从命令解析到匿名页面映射方式等多个方面对 pwndbg 进行了改进和错误修复。
我们想承认,提交 PR 只是开源体验的一小部分。有人必须审查 PR。有人在 PR 合并后必须维护代码。早期 PR 的提交者必须编写测试以确保其代码功能得以保留。
我们贡献这些项目部分是因为我们热爱这门手艺,但也因为我们发现这些项目有用。为此,我们向开源社区致以最诚挚的感谢,并祝愿每个人 2022 年快乐、安全和富有成效!
Osquery 描述于 2022 年 1 月 3 日更新。
Trail of Bits 的 2021 开源贡献部分列表
-
assert-rs/assert_cmd
添加Assert
方法的try_
变体 #128
功能:优化append_context
边界 #130 -
aws/amazon-ecs-agent
防止在调用 forceCloseConnection 时发生超时导致 goroutine 泄漏 #2854 -
Azure/azure-container-networking
修复:防止在 internalapi.go 中 goroutine 泄漏 #850 -
cdisselkoen/llvm-ir
添加llvm_version
函数(解决 #13) #14
在llvm_version
中添加llvm-13
情况 #17 -
CycloneDX/cyclonedx-python-lib
模型/漏洞:修复可选类型 #61 -
dapphub/dapptools
更新 hevm 依赖和 nixpkgs 到 21.05 #655 -
di/pip-api
使用
pip list
的 JSON 输出用于installed_distributions
#93
pip_api:类型提示 #97
允许解析需求标记 #99
允许installed_distributions
过滤全局分发 #103
添加支持解析 URL 需求 #109
在调用pip list
时支持–path
参数 #112
pip_api/_call:将所有调用传递 PIP_DISABLE_PIP_VERSION_CHECK #114 -
eliben/pyelftools
dwarf:初始 DWARFv5 支持 #363 -
ESultanik/visie
代码清理 #1 -
firemark/pixelopolis
支持 bsd/posix 调用 #1 -
Gallopsled/pwntools
修复 #1966:添加架构别名:x86-64 -> amd64 #1967 -
GaloisInc/FAW
添加 Polytracker 文件详细视图插件 #35 -
haampie/libtree
在使用 CMake Ninja 生成器时修复集成测试 #33 -
icedland/iced
指示指令是否为“字符串”指令 #186 -
iovxw/gleipnir
修复 rpc 服务器权限 #238 -
kgabis/parson
修复解析嵌入空字节的键时的内存泄漏 #157 -
kubernetes/minikube
Goroutine 泄漏修复 #11247 -
LLVM
[BitcodeAnalyzer] 允许有动机的用户转储 BLOCKINFO (D107536)
[clang] 在使用过滤器时修复 JSON AST 输出 (D108441)
[docs] [NFC] 澄清数据布局文档 (D108962)
[BitcodeReader] 修复向量类型元素验证中的逻辑错误 (D109655) -
microsoft/hcsshim
防止二进制命令失败完成时 goroutine 泄漏 #993 -
microsoft/vcpkg-tool
二进制缓存:添加 NuGet 超时配置条目 #95 -
microsoft/vcpkg
[vcpkg_configure_make] MacOS 假设目标架构是主机架构 #18632
[docs] 在二进制缓存中描述 nugettimeout 选项 #19084 -
NixOS/nixpkgs
echidna:初始版本 1.7.2 #106919
pe-parse:初始版本 1.2.0 #107506
liquidctl:初始版本 1.4.2 #108258
python3Packages.slither-analyzer:0.6.14 -> 0.7.0 #108610
uthenticode:初始版本 1.0.4 #109378
pythonPackages.manticore:修复 darwin 上的测试 #112069
nxpmicro-mfgtools:1.4.43 -> 1.4.72 #113516
sgx-sdk:初始版本 2.14 #126990
python3Packages.crytic-compile:0.1.13 -> 0.2.0 #130241
haskellPackages.hevm:修复 #131059
solc-select:初始版本 0.2.1 #131943
protobuf:3.18.0 -> 3.19.0 #142096
go:在 Darwin 上使用来自 Nix 的 tzdata #142494
slither-analyzer:0.8.1 -> 0.8.2 #150058
libff:修复在 aarch64 上的构建 #150850
haskellPackages.sbv:修复在 aarch64 上的构建 #150855 -
nodejs/node
http2:修复由于处理带有取消代码的 rst_stream 导致的双重释放 #39423
http2:更新在 rst_stream 帧上处理流的方式 #39622 -
osquery/osquery
移除未使用的 ev2 代码 #6878
移除未使用/实验性的 ebpf 代码 #6879
修复在 deregisterEventSubscriber 中的堆使用后释放 #6880
修复发布订阅框架中的未定义行为和危险转换 #6881
CI:添加对 GitHub Actions 的支持 #6885
减少来自 libarchive 的编译单元 #6886
修复在查询 deb_packages 表时 libdpkg 中的泄漏 #6892
[macOS][CI] 更新 XCode 到 12.3 并更新最低 macOS 版本到 10.12 #6896
修复用于 64 位时间戳变量的数据类型宏 #6897
禁用增量链接以减少 Windows 上的构建大小 #6898
拼写检查和 Markdown 小问题 #6899
移除未使用的 Rocksdb 和 Inmemory db 插件测试 #6900
修复源代码中的拼写错误 #6901
将 libdpkg 子模块 URL 更改为我们自己的 GitHub 镜像 #6903CMake:在 posix 平台上添加 -pthread 编译选项 #6909
禁用已弃用的 TLS 版本 1.0, 1.1 #6910
GitHub Actions:使用 Xcode 12.3, SDK 10.12 #6913
显著加速 CMake 配置阶段 #6914
添加由配置策略管理的系统扩展列(system_extensions 表) #6915
重命名 yara 字符串函数以避免符号冲突 #6917
移除未使用的空测试文件 #6918
GitHub Actions:修复 .deb 工件,添加计划构建 #6920
将打包逻辑移动到 osquery-packaging #6921
修复 SystemControlsTest 添加 sunrpc 作为预期子系统 #6932
文档:修复对 Windows 上 Powershell 脚本的引用 #6936
修复由于意外值导致的 StartupItemTest 失败 #6940
修复由于意外属性名称导致的 XattrTests 失败 #6941
修复由于意外属性导致的 ExtendedAttributesTableTests 失败 #6942
修复 StartupItems 测试中的不正确检查 #6950
改进事件控制标志的解释 #6954
更新 Linux 安装步骤和包列表 #6956
更新关于 osquery 的 TLS 版本支持的信息 #6963
修复 Windows sids API 的内存泄漏回归 #6984
始终使用 BIGINT 宏用于 ’long long’ 数据 #6986
使 Windows 表中的组 ID 列一致 #6987
文档:将关于 Azure Pipelines 的引用更改为 GitHub Actions #6988
[打包] 移除 macOS 上 augues 的多余镜头目录 #6998
文档:添加关于启用 Windows 以使用 CMake 的长路径构建的说明 #7010
库:更新 OpenSSL 到版本 1.1.1k #7026
纠正关于 OpenSSL 和 TLS 行为的文档 #7033
移除支持使用旧版本 OpenSSL 构建的 Buck 遗留物 #7034
纠正 windows_events 表规范中的示例 #7035
改进关于 FIM 的文档,提及 NTFS 和审计等 #7036
添加一个选项以在 Windows 上启用增量链接 #7044
[macOS] 基于 EndpointSecurity 的进程事件 #7046
文档:添加安全保证案例 #7048
修复文档中的 tls_enroll_max_attempts 标志名称 #7049
使用独立的 CPack 打包 #7059
纠正打开失败时的 RocksDB 错误代码和子代码打印 #7069
在加载失败时打印扩展 sdk 所需的最低版本 #7074
修复扩展在关闭时崩溃 #7075
提高 osquery 关闭过程的速度 #7077
移除重复的 osquery_utils_aws_tests-test #7078
CI:当编译器版本更改时重新生成 sccache 缓存 #7081
[AWS] 添加对 IMDSv2(实例元数据服务)的支持 #7084
文档:更新进程审计要求 #7102
提高初始化期间的关闭速度 #7106
看门狗应等待工作线程关闭 #7116
chrome_extensions:从 ‘key’ 属性计算标识符 #7124
实现无限注册重试 #7125
在 Windows 上移除仅 POSIX 的 -fexceptions 标志 #7126
修复递归日志记录支持中的崩溃和死锁 #7127
少量清理未使用的变量 #7128
修复在 chocolatey 部署期间应用 ACL 的问题 #7166
文档:使 YARA 维基页面保持最新 #7172
库:更新 ebpfpub 库 #7173
[库][yara] 在 macOS 上启用并编译 macho 模块 #7174
修复在安装或升级期间发生错误时 choco 不失败的问题 #7182
修复向记录器插件广播空日志的问题 #7183
更新 macOS 构建以包括应用捆绑包相关文件 #7184
库:更新 Strawberry Perl 到 5.32.1.1,使用 HTTPS 下载 #7199
防止关闭与工作线程或扩展启动之间的竞争条件 #7204
[AWS] 可选启用调试选项并限制 PUT 请求的内容类型头大小 #7216
库:更新 ebpfpub #7219
修复 Linux 上 osquery_info build_platform 列值 #7254
[macOS][打包] 更新打包仓库提交以修复 #7236 相关修复 #7255
[macOS][打包] 创建应用捆绑包以及其他 package_data #7263
审计:socket_events 改进 #7269
[linux][打包] 更新打包路径 #7271
更改 logger_mode 标志以实际解释为八进制 #7273
更新打包 SHA #7279
在代码中更新 osquery 安装工件的默认路径 #7285
在文档中更新 osquery 安装工件的路径 #7286
macOS 路径修复在 launchd plist 中 #7288
在 osqueryctl 和文档中纠正 macOS 安装的应用捆绑包路径 #7289
库:更新 OpenSSL 到版本 1.1.1l #7293
防止 osquery 在使用 –force 标志时杀死自己 #7295
bpf:提高发布者可靠性 #7302
文档:更新 macOS ESF 文档 #7303
更新安装指南以使用较新的 macOS 路径 #7311
修复在 macOS 11 及更高版本上的 ASL 测试 #7320
Apple Silicon 支持 #7330
在循环遍历 cron 搜索目录时避免字符串复制 #7331
更新 CI Linux Docker 镜像 #7332
Windows:检测扩展何时未启动 #7355
当目标为 10.13+ SDK 时跳过已弃用的 ASL 测试 #7358
对 GitHub 问题模板的小修复 #7361
在使用 ssdeep 进行哈希时尊重read_max
标志 #7367
在 Windows 打包中恢复查询包 #7388
修复当 windows_security_products 出错时崩溃 #7401
CI:更新打包提交以修复 Linux 符号链接 #7404
防止在模糊测试时运行发现查询 #7418
修复我们在模糊测试初始化方法中禁用表的方式 #7419
修复 thirdparty_sleuthkit 的链接 #7425
更新 sqlite 到版本 3.37.0 #7426 -
paritytech/substrate
node-template:从运行时中移除冗余类型 #9161 -
pwndbg/pwndbg
format_args:显示 fd 路径 #825
修复 #858 #877
修复 #881 #883
vmmap:命名匿名页面 #933
修复 #946 当寄存器值解引用失败时的上下文 #948
添加 memoize 命令用于切换缓存,对调试 pwndbg 有用 #951
添加 attachp 命令 #965
移除 shebang 和编码行 #972
移除 Py2 类对象继承 #973
修复 #932,#788:修复命令解析 #974
当无法附加时跳过 attachp 测试 #975
修复 #932,#788:修复命令解析 #976 -
pypa/warehouse
api-reference/json:在响应中记录vulnerabilities
#10431 -
pysmt/pysmt
修复以正确将逻辑传递给由 Portfolio 启动的求解器 #683 -
python/mypy
mypy/build:在load_tree
中使用_load_json_file
#11575 -
rust-fuzz/afl.rs
在运行时扩展CARGO
环境变量 #184
在 CI 中测试稳定版和夜间版 #194
在 rustc 1.57 上处理旧 LLVM 传递管理器 #197 -
rust-lang/rust-clippy
添加format_in_format_args
和to_string_in_format_args
检查 #7743
修复 #7903 #7906
添加unnecessary_to_owned
检查 #7978 -
rust-lang/rust
更新 Clippy 依赖项而不带补丁版本 #88517
实现 #85440(随机测试排序) #89082
将真实的 crate 级属性传递给pre_expansion_lint
#89214 -
rustsec/advisory-db
parse_duration:通过具有大指数的负载进行parse
DoS #827 -
samuelcolvin/pydantic
文档(模式):修复一个标注 #2620 -
Smithay/udev-rs
库, 设备:开始使用 list::List 而不是自定义结构 #22 -
solana-labs/rbpf
修复验证器移位指令溢出 imm 值 #