Trail of Bits 2022年开源贡献回顾
去年此时,我们撰文介绍了2021年Trail of Bits提交的190多个合并到非Trail of Bits存储库的拉取请求(PR)。2022年,我们延续了这一趋势,有超过400个PR被合并到非Trail of Bits存储库中!
这为何重要?虽然我们对自己开发的工具深感自豪,但我们认识到我们也受益于Trail of Bits外部维护的工具。当某个工具未按预期工作时,我们尝试修复它;当某个工具未能满足其预期需求时,我们尝试改进它。简而言之,我们努力回馈给予我们如此之多的社区。
以下是博客末尾PR列表中的一些亮点:
加密工具
Clippy 是一个包含550多个lint的集合,用于捕获常见错误并改进Rust代码。我们添加了crate_in_macro_def
和unnecessary_find_map
lint,并对empty_line_after_outer_attribute
、expect_used/unwrap_used
、extra_unused_lifetimes
、needless_borrow
、needless_lifetimes
、unnecessary_to_owned
和unnecessary_filter_map
等lint进行了改进和错误修复。
HEVM 是一个具有符号执行功能的以太坊虚拟机实现。我们对HEVM的贡献包括简化其SMT求解器的使用、提高性能、修复内存泄漏以及添加测试。
Envoy 是一个高性能开源边缘和服务代理,使网络对应用程序透明。我们在Envoy中实现了统一头部验证(UHV)组件的初始版本,用于验证HTTP/1和HTTP/2的所有请求和响应头部。我们整合了现有的头部验证逻辑,执行评估以确定逻辑不完全符合RFC的地方,并修复或实现了任何差距,以确保默认配置严格遵循RFC标准。新组件为所有HTTP请求和响应验证提供了单一入口点,使其成为更易于维护、审计、扩展、自定义和修复任何新发现攻击向量的代码库。
pyca/cryptography 是一个为Python开发者提供加密配方和原语的包。我们改进了其对证书透明度的支持,并进行了许多可用性改进。
Vcpkg 是一个用于Windows、Linux和MacOS的C/C++包管理器。我们修复了Vcpkg本身的错误,并对flatbuffers、grpc、gtest、ixwebsocket、libcpplocate、llvm、mbedtls、tcb-span和z3等包进行了改进。
Warehouse 是PyPI的软件,PyPI是Python编程语言的官方包索引。我们进行了许多功能改进和错误修复,包括支持过期API令牌、支持使用OIDC的无凭证包上传、重构核心权限内部结构、增强PyPI的漏洞反馈以及改进面向用户的错误消息。
以下列出的项目代表了最高质量的软件。这种水平的软件不仅仅来自合并PR和发布新版本;它来自仔细的规划、优先考虑功能、熟悉相关项目以及理解项目在更大软件生态系统中的作用。我们感谢这些项目的维护者,既为公众看到的工作,也为公众看不到的无数小时工作。
祝您2023年快乐、安全且同样富有成效!
Trail of Bits 2022年部分开源贡献
加密工具
- arkworks-rs/algebra: 修复在域小于度数时密集多项式的评估 #521
- pyca/cryptography:
- x509/CT: 暴露更多SCT内部结构 #7207
- CT: 添加
SignedCertificateTimestamp.extensions
#7237 - CT:
extensions
->extension_bytes
#7238 - X.509/Certificate: 添加
tbs_precertificate_bytes
属性 #7279 - x509: 添加
load_pem_x509_certificates
#7878
- pyca/pyopenssl: 使
X509StoreContextError
的消息更友好 #1133 - RustCrypto/formats:
- asn1/octet_string: 添加
OctetStringRef::decode_into
#817 - x509-cert: 为
SerialNumber
添加Display
实现 #820
- asn1/octet_string: 添加
- str4d/rage: age/ssh: 使
ssh::Identity: Clone
#329 - veraison/go-cose: 上传Trail of Bits公共安全评估报告 #94
技术基础设施
- abodelot/jquery.json-viewer: 修复JSON对象键显示 #26
- aio-libs/aiohttp: 修复Unicode错误 (#7044) #7099
- curl/curl: url: 允许非HTTPS HSTS匹配用于调试构建 #9728
- curl/curl-fuzzer: 为
curl_fuzzer
添加额外CURLOPT支持 #60 - di/bump:
pyproject.toml
支持 #25 - di/pip-api:
- pip_api: 初始支持哈希需求 #126
- parse_requirements: 暴露需求是否可编辑 #131
- GaloisInc/daedalus: 避免数组未初始化时的未定义行为 #290
- googleapis/google-auth-library-python: 修复: 确保JWT段具有正确的类型 #1162
- Homebrew/homebrew-core:
- solc-select 0.2.1 (新公式) #107977
- crytic-compile 0.2.3 (新公式) #108010
- slither-analyzer 0.8.3 (新公式) #108016
- echidna 2.0.2 (新公式) #108045
- echidna 2.0.3 #110107
- crytic-compile 0.2.4 #112418
- slither-analyzer 0.9.0 #112423
- solc-select 1.0.1 #112793
- slither-analyzer 0.9.1 #114631
- echidna 2.0.4 #116508
- iovisor/ubpf: 添加: CMake、CI、macOS/Windows支持、打包、scan-build #109
- killercup/cargo-edit:
- 为
cargo-upgrade
添加–preserve-precision
标志 #613 - 使
get_version
返回字符串 #619 - 改进
update_table_named_entry
#620 - 重构(升级): 跟踪原始清单数据 #621
- 为
- llvm/llvm-project:
- [1b/3][ASan][compiler-rt] 用于注释对象内存的API dd1b7b7
- [1a/3][ASan][compiler-rt] 用于双端容器的API 1c5ad6d
- microsoft/ebpf-for-windows: 构建: 添加CMake支持 #882
- microsoft/vcpkg:
- [libcpplocate] 新端口 #23173
- [tcb-span] 添加新端口 #23393
- [llvm] 修复LLVM安装的’utils’功能 #23399
- [ixwebsocket] 更新至v11.3.3 #23548
- [gtest] 移除-Werror #23780
- [mbedtls] 更新至最新2.x LTS版本 #23787
- [flatbuffers] 更新至2.0.6 #24208
- [z3] 更新至4.8.15 #24209
- [z3] 更新至4.8.16 #24407
- [z3] 更新至4.9.1 #25911
- [z3] 更新至4.10.2 #25954
- [grpc] 修复protobuf protoc可执行变量 #26199
- [vcpkg] 修复跨编译macOS #26240
- [z3] 更新至4.11.0 #26429
- NixOS/nixpkgs:
- haskellPackages.clash-prelude: 通过禁用测试修复构建 #178868
- semgrep: 0.106.0 -> 0.108.0 #185771
- echidna: 1.7.3 -> 2.0.2 #190144
- echidna: 2.0.2 -> 2.0.3 #190775
- libff: 默认动态 #190786
- xed: 12.0.1 -> 2022.08.11 #191045
- echidna: 2.0.3 -> 2.0.4 #202542
- haskellPackages: 从ghc-9.2.x移除不必要的覆盖 #202604
- haskellPackages: 配置清理 #202615
- haskellPackages: 配置通用清理 #203180
- haskellPackages: 修复选定包 #203327
- haskellPackages: 修复选定包 #203489
- nodejs/node:
- 添加用于Node.js依赖漏洞检查的脚本 #43362
- 添加使用API密钥支持漏洞检查脚本 #43909
- 更新漏洞检查脚本中的
undici
CPE #44128 - 添加更新
base64
依赖的自动化 #45300 - 添加更新
acorn
依赖的自动化 #45357 - 添加更新
libuv
依赖的自动化 #45362 - 工具: 在update-base64.sh脚本中添加缺失步骤 #45509
- 移除依赖漏洞检查器 #45675
- osquery/osquery:
- 修复PIE支持检查 #7234
- 改进Pidfile处理 #7304
- 防止审计事件系统使用过多内存 #7329
- 修复globToRegex截断UTF16字符 #7430
- 不在第三方库上运行clang-tidy #7432
- 将事件计划查询结果的JSON更改为数组 #7434
- 在osquery_schedule中添加新指标并改进现有指标描述 #7438
- 修复Yara使用其自己的strutils函数时的崩溃 #7439
- bpf: 改进套接字事件处理 #7446
- 更新cppcheck至版本2.6.3并跳过第三方代码分析 #7455
- 修复macOS CI运行器的子模块缓存 #7456
- 添加第三方库目标 #7467
- 启用Asan时添加BOOST_USE_ASAN定义 #7469
- 在Windows上启用模糊测试和Asan,在macOS上启用Asan #7470
- 修复M1上进程表中的user_time和system_time单位 #7473
- 修复看门狗未足够快速杀死不健康的工作器/扩展 #7474
- 修复关于无法识别特殊字符的一些警告 #7478
- yum_sources: 在表输出中包含镜像列表URL #7479
- 修复第三方库标志泄漏到osquery目标 #7480
- 用静态工厂方法替换WmiRequest构造函数 #7489
- 更改cpu_info测试以确保至少存在一个套接字 #7490
- 改进计划查询拒绝列表和调度程序关闭 #7492
- 修复test_http_server.py –persist选项 #7497
- bpf: 在错误情况下禁用BPF发布器 #7500
- 在osquery_schedule中将wall_time列标记为隐藏 #7501
- 添加减少Linux上保留内存的机制 #7502
- 修复由于分布式和配置插件交互导致的崩溃 #7504
- 库: 将OpenSSL从版本1.1.1l更新至1.1.1n #7506
- 在Windows上实现高性能用户和组缓存 #7516
- 移除libelfin和elf解析表 #7524
- 将librpm更新至4.17.0 #7529
- 消除对“特殊”文件非阻塞标志的移除 #7530
- 修复以解除CI阻塞 #7533
- 移除shortcut_files表 #7547
- 库: 将zlib从v1.2.11更新至v1.2.12 #7548
- 库: 将libdpkg从版本v1.19.0.5更新至v1.21.7 #7549
- 防止ebpfpub链接系统zlib #7557
- 恢复一些发布检查 #7558
- 添加指定openssl存档路径的选项 #7559
- 防止通过配置设置CLI_FLAG #7561
- 更改生成macOS Info.plist的位置 #7566
- 修复DebPackages.test_sanity测试 #7569
- certificates表: 添加Linux支持 #7570
- CHANGELOG 5.2.3 #7571
- 修复Linux aarch64的发布测试 #7572
- 在deb_packages中使用additional而不是index用于admindir #7573
- CHANGELOG 5.3.0 #7575
- 为读取utmpx数据库的表显式设置上下文 #7578
- certificates: 重构OpenSSL实用程序 #7581
- 警告在配置中设置CLI_FLAG #7583
- 移除test_daemon_sighup测试 #7584
- 在现代macOS上恢复macOS
kernel_panics
表 #7585 - 在表规范中将
OS X
替换为macOS
#7587 - 修复Windows上的MBCS支持 #7593
- 从osquery.example.conf中移除CLI标志设置 #7595
- 更正描述用户和组服务标志的部分 #7596
- 修复shared_resources访问未初始化变量 #7600
- 移除冗余字符串转换 #7603
- 更新“新发布”问题模板 #7607
- 修复
disk_encryption
表中的UUID拼写错误 #7608 - 添加使用泄漏清理器构建的选项 #7609
- 修复SchedulerTests.test_scheduler_drift_accumulation的不稳定性 #7613
- 修复多个Yara泄漏 #7615
- 在所有需要它们的测试中初始化用户和组服务 #7620
- 在运行测试时不捕获表或注册表异常 #7621
- 移除不必要的字符串复制 #7625
- 修复Windows上Unicode字符的system-info支持 #7626
- 库: 将sqlite更新至版本3.38.5 #7628
- 库: 将OpenSSL更新至版本1.1.1o #7629
wmi_bios_info
: 为所有系统包含Win32_BIOS属性 #7631- 将
memory_devices
表移植到Windows #7633 - 改进配置解析和osqueryfuzz-config性能 #7635
- 实现使用std::string_view的分割和修剪函数 #7636
- deb_packages: 不在包名中显示arch信息 #7638
- 修复thrift服务器在删除权限时关闭 #7639
- 更新
shared_resources
表以添加类型名称,修复类型/最大允许处理 #7645 - 修复AWS证书验证在所有服务上失败 #7652
- time: 修复Windows local_timezone列值 #7656
- 将platform_info表移植到M1 Mac #7660
- 移除lldp_neighbors表 #7664
- ci: 将osquery-packaging提交更新至最新 #7667
- cmake: 添加启用或禁用使用ccache的选项 #7671
- cmake: 防止在其他平台上定义一些仅限Linux的目标 #7672
- 库: 将OpenSSL更新至版本1.1.1q #7674
- 添加关于第三方依赖安全的文档 #7684
- tpm_info: 重构,确保布尔值始终最新 #7686
- 将
secureboot
表移植到macOS #7692 - 修复解析没有列的ATC配置时的崩溃 #7693
- ci: 更新并暂时禁用macOS Catalina测试作业 #7700
- test: 修复Mdfind.test_sanity的不稳定性 #7701
- 修复GetHomeDirectories文件系统函数中的错误 #7705
- 将最低macOS支持从10.12更新至10.14 #7707
- 在Windows的
platform_info
表中添加firmware_type
列 #7710 - 修复Windows
memory_devices
表的GetMemorySize
#7711 - 更正unified_log.mm的macOS版本支持检查 #7713
- 改进osquery AWS逻辑 #7714
- 暂时禁用memory_devices集成测试 #7717
- 为memory_devices添加验证集成测试 #7722
- 将mdfind查询超时增加至30秒 #7725
- platform_info: 为macOS添加
firmware_type
#7727 - 库: 将libxml2更新至v2.9.14 #7729
- 库: 将sqlite更新至版本3.39.2 #7736
- mdfind: 减少表开销并支持快速中断 #7738
- test: 修复Windows上的platform-info.test_sanity #7742