Appearance
Appearance
可以(至少对某些 dissector 而言)使用更高级的语言来生成 dissector 的 C 代码。如果已经审查过这些转换器,确保它们生成“安全”的代码,并且已经审查过它们调用的代码以确保其安全,那么用这些更高级语言编写的 dissector 就会是安全的。
例如,某些使用 ASN.1 的协议 dissector 是根据协议的 ASN.1 描述生成的。
状态:我们已经对许多基于 ASN.1 的协议以及 NCP、DCE/RPC BUTC 等协议这样做了。Wireshark 的大多数(可能是全部)dissector 都可以自动生成。
Wireshark 开发流程包含来自世界各地许多不同开发者(编程技能水平各不相同)的补丁,而只有少数开发者负责在这些补丁提交到主源代码树之前进行审查。由于若干原因,这种开发模式不会改变。
状态:过去有独立研究人员做过非正式审查。遗憾的是,迄今为止还没有进行过全面审查。
我们可以通过以非特权用户身份运行 Wireshark 来降低潜在危害。在某些平台上这很困难,因为捕获可能需要 "root" 或 "Administrator" 权限。详情请参见 CaptureSetup/CapturePrivileges。
状态:权限分离已在 Wireshark 1.0 中实现。只有 'dumpcap' 实用程序需要以 root 身份运行。更多详情请参见 Development/PrivilegeSeparation。
Epan 的 tvbuff 例程在防止 Wireshark 核心中的安全漏洞方面已经取得了很大进展。dissector 从 tvbuff 中取出数据之后会发生什么则是另一回事,也是我们大多数严重 bug 的来源。应该可以扩展 Wireshark 的 API,使安全处理数据变得更容易。
状态:未知。
我们有一个自动构建流程 GitLab CI?它会使用 randpkt 输出、一个捕获文件样本集,以及经过 fuzz 处理后的样本集来运行 tshark。到目前为止,这个流程已经发现了许多 bug。还可以添加更多测试,例如 Valgrind 和 Gimpel Lint。
开发者也可以自行进行 fuzz/随机测试。详情可在 FuzzTesting 页面找到。
状态:Linux 64-bit buildbot 会在每次 checkin 后运行 fuzz 测试。
我们应该避免使用已知经常导致安全相关问题的函数,例如 ANSI-C 函数 strcpy(),如果源字符串对目标区域来说过大,它会覆盖目标区域。
状态:进行中,详情可在 Development/SecureProgramming 中找到。
我们在 SVN 中创建了一个稳定分支,并且只允许将 bug 修复 checkin 到该分支。新的开发仍保留在 trunk 中。更多信息请参见 Development/ReleaseNumbers。
Imported from https://wiki.wireshark.org/Development/Security on 2020-08-11 23:13:05 UTC