庆祝我们2021年的开源贡献 - Trail of Bits博客
在Trail of Bits,我们以将最佳工具开源而自豪,例如algo、manticore和graphtage。虽然这篇文章是关于开源的,但它并不是关于我们的工具……
2021年,Trail of Bits员工提交了超过190个拉取请求(PR),这些请求被合并到非Trail of Bits的仓库中。这展示了我们致力于保护整个软件生态系统以及为所有人提升软件质量的承诺。贡献的代表性列表出现在文章末尾,但以下是一些亮点:
LLVM
LLVM是一组编译器和工具链技术。LLVM作为许多流行编译器的后端,如clang、rustc和swiftc。我们为LLVM中的多个错误实施了修复,包括纠正文档错误、确保在clang的AST转储模式下生成有效的JSON,以及确保LLVM仅接受格式良好的位码。
Nixpkgs
Nixpkgs是一个包含超过80,000个软件包的集合,可以通过Nix包管理器安装。我们对许多广泛使用的Nix包进行了改进和错误修复,包括Go、Hevm、libff、Protobuf和SBV。
Osquery
Osquery是一个基于SQL的操作系统检测、监控和分析框架。我们对osquery做出了众多贡献,最显著的是基于新的Endpoint Security API为macOS添加了进程事件监控;彻底改革了项目的代码签名、打包和CI;最后但同样重要的是,添加了对Apple Silicon的原生支持,这是Apple今年初开始过渡的基于ARM的架构。
Python
Python是一种解释型、高级、通用编程语言。我们为Python打包/分发生态系统中的关键包贡献了一系列修复和新功能,包括mypy、pip-api和Warehouse。我们还在pyelftools(主导的Python ELF解析器)中添加了DWARFv5支持。
Pwndbg
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
- 防止在二进制cmd无法完成时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
-
修复pubsub框架中的UB和危险转换 #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镜像 #6903
-
CMake:在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
-
始终对‘long long’数据使用BIGINT宏 #6986
-
使Windows表中的组ID列一致 #6987
-
文档:将关于Azure Pipelines的引用更改为GitHub Actions #6988
-
[打包]移除macOS上augues的多余lenses目录 #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
-
修复launchd plist中的macos路径 #7288
-
纠正osqueryctl和文档中的macOS安装应用捆绑包路径 #7289
-
库:更新OpenSSL到版本1.1.1l #7293
-
防止在使用–force标志时osquery杀死自身 #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 当reg值解引用失败时的上下文 #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
- api-reference/json:在响应中记录
-
pysmt/pysmt
- 修复以正确将逻辑传递给由Portfolio启动的求解器 #683
-
python/mypy
- mypy/build:在
load_tree中使用_load_json_file#11575
- mypy/build:在
-
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_argslint #7743 - 修复#7903 #7906
- 添加
unnecessary_to_ownedlint #7978
- 添加
-
rust-lang/rust
- 更新没有补丁版本的Clippy依赖 #88517
- 实现#85440(随机测试排序) #89082
- 将真实的crate级属性传递给
pre_expansion_lint#89214
-
rustsec/advisory-db
- parse_duration:通过具有大指数的有效负载进行
parseDoS #827
- parse_duration:通过具有大指数的有效负载进行
-
samuelcolvin/pydantic
- 文档(模式):修复标注 #2620