11个版本 (1个稳定版)
8.0.0-alpha.20240613 | 2024年6月14日 |
---|---|
7.0.5 | 2024年6月14日 |
7.0.0-dev | 2021年5月28日 |
7.0.0-alpha.5 | 2023年1月31日 |
6.0.3-alpha.1 | 2021年9月23日 |
#453 in Rust 模式
每月26次下载
3MB
66K SLoC
Suricata
简介
Suricata 是由 OISF 和 Suricata 社区开发的网络 IDS、IPS 和 NSM 引擎。
资源
贡献
我们很高兴接受补丁和其他贡献。请参阅我们的 贡献流程 了解如何开始。
Suricata 是一款处理大多数不受信任输入的复杂软件。不当处理这些输入将产生严重后果
- 在 IPS 模式下,崩溃可能导致网络离线
- 在被动模式下,IDS 被入侵可能导致关键和机密数据丢失
- 漏检可能导致网络被未检测到的入侵
换句话说,我们认为风险相当高,尤其是在许多常见情况下,IDS/IPS 将直接被攻击者访问。
因此,我们开发了一个相当广泛的 QA 流程。结果是,为 Suricata 贡献可能是一个相对漫长的过程。
从高层次来看,步骤如下
- 基于 GitHub-CI 的检查。在创建 pull request 时自动运行。
- 团队和社区开发者的审查
- 来自私有 QA 设置的 QA 运行。这些测试是私有的,因为测试流量的性质。
Suricata 的 QA 步骤概述
OISF 团队成员可以将构建提交到我们的私有 QA 设置。它将运行一系列构建测试和回归测试,以确认没有现有功能损坏。
最终的 QA 运行至少需要几个小时,通常在夜间进行。目前运行
- 在多个操作系统、编译器、优化级别、配置功能上的广泛的构建测试
- 使用 cppcheck、scan-build 的静态代码分析
- 使用 valgrind、AddressSanitizer、LeakSanitizer 的运行时代码分析
- 针对过去错误的回归测试
- 日志输出的验证
- Unix 套接字测试
- 基于 ASAN 和 LSAN 的基于 pcap 的模糊测试
- 基于流量回放的 IDS 和 IPS 测试
在这些测试旁边,根据代码更改的类型,可以手动运行进一步测试
- 流量回放测试(多吉比特)
- 大型pcap收集处理(多太字节)
- 模糊测试(可能需要多天甚至几周)
- 基于pcap的性能测试
- 实时性能测试
- 根据对提议的更改的评估,进行各种其他手动测试
重要的是要认识到,上述几乎所有测试都用作验收测试。如果出现问题,则由您负责在代码中解决这个问题。
QA的一个步骤目前在合并后运行。我们将构建提交到Coverity Scan程序。由于该(免费)服务的限制,我们每天最多只能提交一次。当然,合并后社区可能会发现问题。对于这两种情况,我们请求您帮助他们解决问题。
常见问题解答(FAQ)
问题:你会接受我的PR吗?
答案:这取决于许多事情,包括代码质量。对于新功能,它还取决于团队和/或社区是否认为该功能有用,它对其他代码和功能的影响,性能回退的风险等。
问题:我的PR何时会被合并?
答案:这取决于情况,如果它是一个主要功能或被认为是一个高风险更改,它可能将被纳入下一个主要版本。
问题:为什么我的PR被关闭了?
答案:如Suricata GitHub工作流程中所述,我们期望每个更改都有一个新的pull request。
通常,团队(或社区)会在拉取请求后给出反馈,然后预计会被改进的PR所取代。所以看看评论。如果您不同意评论,我们仍然可以在关闭的PR中讨论它们。
如果PR没有评论就被关闭,很可能是由于QA失败。如果GitHub-CI检查失败,应立即修复PR。不需要对此进行讨论,除非您认为QA失败是不正确的。
问题:编译器/代码分析器/工具出错怎么办?
答案:为了帮助自动化QA,我们不接受保留警告或错误。在某些情况下,这可能意味着如果工具支持,我们将添加抑制(例如valgrind,DrMemory)。某些警告可以禁用。在某些特殊情况下,唯一的“解决方案”是重构代码以绕过静态代码检查器限制的误报。虽然令人沮丧,但我们更愿意这样做而不是在输出中保留警告。警告往往会被人忽视,然后增加隐藏其他警告的风险。
问题:我认为你的QA测试是错误的
答案:如果您真的这么认为,我们可以讨论如何改进它。但不要太快得出这个结论,更常见的情况是代码是错误的。
问题:你们需要签署贡献者许可协议吗?
答案:是的,我们这样做是为了保持Suricata的所有权:Open Information Security Foundation。请参阅http://suricata.io/about/open-source/和http://suricata.io/about/contribution-agreement/
依赖项
~19MB
~521K SLoC