Hacker News 中文摘要

RSS订阅

如何应对认为io_uring不安全的观点?(2024) -- How to handle people dismissing io_uring as insecure? (2024)

文章摘要

文章讨论了如何应对一些人认为iouring不安全的观点,建议通过提供详细的技术解释和实际案例来反驳这些质疑,强调iouring的安全性和性能优势,并鼓励开发者积极参与讨论以消除误解。

文章总结

如何处理人们对io_uring安全性的质疑?

在GitHub的liburing讨论区中,用户cmazakas提出了一个问题:如何应对开发者对iouring安全性的质疑。cmazakas表示,他在开发一个基于iouring的开源运行时,但每当推广时,开发者们往往会质疑io_uring的安全性,认为它“非常不安全”。尽管cmazakas了解过去的一些CVE(常见漏洞和暴露)及其修复措施,但他发现很难改变这种负面印象。

主要讨论内容:

  1. axboe(维护者)的回应:

    • axboe指出,iouring的安全性问题主要集中在几个方面:谷歌在Android上使用了旧版本的内核,旧内核中的异步卸载设计存在问题,以及谷歌为发现的漏洞支付了赏金。他强调,自5.10稳定版及之后的内核版本中,iouring的线程模型已经进行了改进,不再使用kthreads,从而解决了这些问题。
    • axboe表示,iouring本身并没有固有的安全问题,团队在开发新功能时也非常谨慎。尽管高性能的异步框架开发难度大,但团队通过增加测试用例和功能测试来确保其稳定性。他还提到,Meta已经在生产环境中使用iouring,主要用于存储,网络功能也在测试中,即将推出。
  2. krisman的补充:

    • krisman从企业级支持的角度指出,iouring在企业界的兴趣正在快速增长,越来越多的客户询问如何采用它。他认为,谷歌/Android世界的负面印象主要基于旧版本的实现,而实际上iouring的安全性已经得到了显著改善。他还提到,过去几个月里,针对io_uring的CVE数量和复杂性都有所下降。
  3. YoSTEALTH的体验:

    • YoSTEALTH分享了他与一些质疑iouring安全性的人打交道的经历,表示这些人的观点往往缺乏事实依据,甚至有人建议他停止基于iouring的项目开发。

总结: 尽管iouring在过去曾因设计问题引发过安全漏洞,但经过多次修复和改进,其安全性已经得到了显著提升。开发者们需要了解这些改进,并基于事实来评估iouring的安全性,而不是仅仅依赖过去的负面印象。

评论总结

评论主要围绕io_uring的安全性和性能展开,观点分为支持和质疑两方。

支持iouring的观点: 1. 性能优势:iouring在性能上有显著提升,特别是在数据库查询中。 - "在Postgres 18中,简单读取查询的性能可以比旧的同步行为快3倍。" (The potential performance benefits are quite compelling, e.g. in Postgres 18 you reportedly can get a 3x speedup over the old sync behaviour in simple read queries.)

  1. 技术改进:io_uring的设计已经改进,不应仅基于旧版本的安全问题进行评判。
    • "澄清这主要是关于Android上的旧设计非常有帮助。" (The clarification that this was mostly about an older design on Android is quite helpful.)

质疑iouring的观点: 1. 安全性问题:iouring存在安全漏洞,尤其是在容器化环境中。 - "你无法像过滤常规系统调用那样过滤它的系统调用,这移除了容器运行时常用的安全边界。" (One problem is that you can't filter its "syscalls" as you can regular syscalls. This removes a security boundary that e.g. container runtimes regularly use.) - "2022年,Google安全团队报告称,60%的漏洞利用是针对Linux内核的iouring漏洞。" (In June 2023, Google's security team reported that 60% of the exploits submitted to their bug bounty program in 2022 were exploits of the Linux kernel's iouring vulnerabilities.)

  1. 缺乏证据:支持者未能提供足够证据证明io_uring的安全性。
    • "如果它更好,那就展示出来。" (If it's better, show that.)

中立观点: 1. 需要深入评估:应通过详细评估来确定iouring的安全性,而不是简单地支持或反对。 - "更好的起点是想要深入了解并评估iouring的安全性。" (A better starting point would be wanting to get to the bottom of it, and assess the security of io_uring.)

  1. 信息传播缓慢:技术信息的传播往往滞后,导致误解和偏见。
    • "信息传播缓慢且非常笼统,很少关注细节。" (Information moves slowly and is very generalised, with little attention to detail.)

总结:io_uring在性能上有显著优势,但其安全性仍存在争议,尤其是在容器化环境中。支持者强调其技术改进,而质疑者则指出其安全漏洞和缺乏证据。中立观点认为应通过深入评估来得出结论。