Trail of Bits 2022年开源贡献亮点:代码审计、安全工具与区块链技术

Trail of Bits在2022年向非自有项目提交了超过400个合并的PR,涵盖Clippy、HEVM、Envoy等关键工具的安全增强、性能优化与漏洞修复,展示了其在代码审计、基础设施加固及区块链技术领域的深度技术贡献。

另一个开源贡献丰硕之年 - Trail of Bits 博客

Samuel Moelius
2023年1月10日
年度回顾

去年此时,我们撰文介绍了2021年Trail of Bits提交的190多个PR被合并到非Trail of Bits仓库的情况。2022年,我们延续了这一趋势,有超过400个PR被合并到非Trail of Bits仓库!

这为何重要?虽然我们对自己开发的工具深感自豪,但我们认识到我们也受益于Trail of Bits外部维护的工具。当某个工具无法按预期工作时,我们尝试修复它;当某个工具未能满足其设计目标时,我们尝试改进它。简而言之,我们努力回馈给予我们如此之多的社区。

以下是本文末尾PR列表中的一些亮点:

  • Clippy 是一个包含550多个lint的集合,用于捕获常见错误并改进Rust代码。我们添加了crate_in_macro_defunnecessary_find_map lint,并对empty_line_after_outer_attributeexpect_used/unwrap_usedextra_unused_lifetimesneedless_borrowneedless_lifetimesunnecessary_to_ownedunnecessary_filter_map等lint进行了改进和错误修复。

  • HEVM 是一个具有符号执行能力的以太坊虚拟机实现。我们对HEVM的贡献包括简化其SMT求解器的使用、改进性能、修复内存泄漏以及添加测试。

  • Envoy 是一个高性能开源边缘和服务代理,使网络对应用程序透明。我们在Envoy中实现了统一头部验证(UHV)组件的初始版本,用于验证HTTP/1和HTTP/2的所有请求和响应头部。我们整合了现有的头部验证逻辑到UHV组件中,进行了评估以确定逻辑不完全符合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/证书:添加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

  • 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
    [grpc] 修复路径引用 #24948
    [mbedtls] 更新至v2.28.1 #25894
    [z3] 更新至v4.9.1 #25911
    [z3] 更新至v4.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
    libs:将OpenSSL从版本1.1.1l更新至1.1.1n #7506
    在Windows上实现高性能用户和组缓存 #7516
    移除libelfin和elf解析表 #7524
    更新librpm至4.17.0 #7529
    消除对“特殊”文件非阻塞标志的移除 #7530
    修复以解除CI阻塞 #7533
    删除shortcut_files表 #7547
    libs:将zlib从v1.2.11更新至v1.2.12 #7548
    libs:将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字符的系统信息支持 #7626
    libs:将sqlite更新至版本3.38.5 #7628
    libs:将OpenSSL更新至版本1.1.1o #7629
    wmi_bios_info:为所有系统包含Win32_BIOS属性 #7631
    memory_devices表移植到Windows #7633
    改进配置解析和osqueryfuzz-config性能 #7635
    使用std::string_view实现拆分和修剪函数 #7636
    deb_packages:不在包名中显示架构信息 #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
    libs:将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
    修复Windowsmemory_devices表的GetMemorySize #7711
    更正macOS版本支持检查以用于unified_log.mm #7713
    改进osquery AWS逻辑 #7714
    暂时禁用memory_devices集成测试 #7717
    为memory_devices添加验证集成测试 #7722
    将mdfind查询超时增加至30秒 #7725
    platform_info:向macOS添加firmware_type #7727
    libs:将libxml2更新至v2.9.14 #7729
    libs:将sqlite更新至版本3.39.2 #7736
    mdfind:减少表开销并支持快速中断 #7738
    test:修复Windows上的platform-info.test_sanity #7742
    secureboot:在Windows上获取必要的进程权限 #7743
    ci:将作业从ubuntu-18.04迁移至ubuntu-20.04 #7745
    修复泄漏并改进Windows上的用户和组API #7755
    修复process_file_events订阅者错误初始化 #7759
    docs:更正关于如何配置和使用Yara签名URL的描述 #7769
    build:移除未使用的find_packages模块和子模块 #7771
    misc:删除临时CTest文件 #7782
    ci:添加作业和辅助脚本以定期扫描CVE #7787
    processes:稳定macOS和Linux上的start_time列值 #7788
    ci:更新我们设置github工作流步骤输出的方式 #7791
    修复在数据库重置期间发生日志记录时的死锁 #7798
    修复AWS HTTP请求期间某些错误的处理 #7811
    ci:在macos上安装模块和测试时修复python版本 #781

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计