3个版本 (1个稳定版本)

8.0.0-alpha.202406132024年6月14日
8.0.0-alpha.12024年4月12日
7.0.5 2024年6月14日
7.0.0-alpha.5 2023年1月31日
7.0.0-alpha.3 2021年9月23日

#9#suricata

每月29次下载
用于 suricata

GPL-2.0-only

16KB
289

Suricata

Fuzzing Status codecov

简介

Suricata 是由 OISF 和 Suricata 社区开发的一种网络入侵检测系统、入侵防御系统和网络安全监控引擎。

资源

贡献

我们愉快地接受补丁和其他贡献。请参阅我们的 贡献流程 了解如何开始。

Suricata 是一个处理大量不受信任输入的复杂软件。处理不当此输入将产生严重后果

  • 在IPS模式下,崩溃可能导致网络离线
  • 在被动模式下,IDS的妥协可能导致关键和机密数据的丢失
  • 未检测到可能导致网络未被发现的安全漏洞

换句话说,我们认为风险相当高,特别是在许多常见情况下,IDS/IPS 将直接可被攻击者访问。

因此,我们开发了一个相当广泛的质量保证流程。结果是,对 Suricata 的贡献可能是一个相对漫长的过程。

在高级别上,步骤如下

  1. 基于 GitHub-CI 的检查。在提交拉取请求时自动运行。
  2. 团队和社区的审查
  3. 来自私有 QA 设置的质量保证运行。这些设置是私有的,因为测试流量性质。

Suricata 的 QA 步骤概述

OISF 团队成员能够将构建提交到我们的私有 QA 设置。它将运行一系列构建测试和回归测试套件,以确认没有现有的功能被破坏。

最终的质量保证运行至少需要几个小时,通常在夜间运行。目前运行

  • 在不同操作系统、编译器、优化级别、配置功能上的广泛构建测试
  • 使用cppcheck和scan-build进行静态代码分析
  • 使用valgrind、AddressSanitizer和LeakSanitizer进行运行时代码分析
  • 对过去的错误进行回归测试
  • 日志输出验证
  • Unix套接字测试
  • 使用ASAN和LSAN的基于pcap的模糊测试
  • 基于流量回放的入侵检测系统(IDS)和入侵防御系统(IPS)测试

除了这些测试外,还可以根据代码更改的类型手动运行更多测试

  • 流量回放测试(多吉比特)
  • 大pcap集合处理(多太字节)
  • 模糊测试(可能需要多天甚至几周)
  • 基于pcap的性能测试
  • 实时性能测试
  • 基于对所提议更改的评估,进行各种其他手动测试

重要的是要认识到,上述几乎所有测试都用作验收测试。如果出现问题,您需要在自己的代码中解决这些问题。

QA的一个步骤目前在合并后运行。我们将构建提交到Coverity Scan程序。由于该(免费)服务的限制,我们每天最多只能提交一次。当然,合并后社区可能会发现问题。对于这两种情况,我们请求您帮助他们解决可能出现的问题。

常见问题解答

问题:您会接受我的PR吗?

答案:这取决于许多事情,包括代码质量。对于新功能,还取决于团队和/或社区认为该功能是否有用,它对其他代码和功能的影响有多大,性能回归的风险等。

问题:我的PR何时会合并?

答案:这取决于情况,如果这是一个主要功能或被认为是高风险更改,它可能将进入下一个主要版本。

问题:为什么我的PR被关闭了?

答案:如Suricata GitHub工作流程中所述,我们期望每个更改都有一个新的拉取请求。

通常,团队(或社区)会在拉取请求后给出反馈,然后期望用改进的PR来替换。所以看看评论。如果我们不同意评论,我们仍然可以在关闭的PR中讨论它们。

如果PR在没有评论的情况下被关闭,很可能是由于QA失败。如果GitHub-CI检查失败,应立即修复PR。没有必要讨论它,除非您认为QA失败是不正确的。

问题:编译器/代码分析器/工具出错了怎么办?

答案:为了帮助自动化QA,我们不接受警告或错误保留。在某些情况下,这可能意味着如果工具支持,我们将添加抑制(例如,valgrind,DrMemory)。一些警告可以禁用。在某些特殊情况下,唯一的“解决方案”是将代码重构以绕过静态代码检查器的误报限制。虽然令人沮丧,但我们更愿意这样做,而不是在输出中留下警告。警告往往会被人忽略,然后增加隐藏其他警告的风险。

问题:我认为您的QA测试是错误的

答案:如果您真的这样认为,我们可以讨论如何改进它。但不要太快下结论,更常见的情况是代码是错误的。

问题:您是否需要签署贡献者许可协议?

答案:是的,我们这样做是为了保持Suricata的所有权在一手:开放信息安全基金会。请参阅http://suricata.io/about/open-source/http://suricata.io/about/contribution-agreement/

依赖关系

~2MB
~44K SLoC