“无法阻止这种事”——唯一频繁发生此类问题的语言用户如是说
CVE-2026-55200 漏洞影响 libssh2 项目,由于对 packet_length 字段缺少上限检查,导致 ssh2_transport_read() 中存在越界写入,可能引发堆损坏和远程代码执行。该漏洞的根本原因在于相关组件使用 C 语言编写——这是过去 50 年中全球 90% 内存安全漏洞发生的唯一语言,使用该语言的项目出现安全漏洞的可能性高出 20 倍。程序员们对此表示“无助”,认为如果不从根本改变编程方式,这类悲剧无法避免。
背景速读
- 这是一篇讽刺风格的幽默短文,模仿新闻报道的口吻,戏仿了美国枪支管制争论中"悲剧无法预防"的经典句式,用来批评C语言社区对内存安全问题的长期漠视。
- "CVE-2026-55200"是一个虚构的漏洞编号(2026年尚未到来),指向 libssh2 库中一个典型的C语言内存安全缺陷:越界写入导致堆破坏和远程代码执行。libssh2 是一个广泛使用的开源SSH协议实现库。
- 过去几十年里,C/C++语言因缺乏自动内存管理机制,一直占据着绝大多数高危安全漏洞的源头。近年业界对比"内存安全语言"(如Rust、Go)和传统系统级语言的趋势日益明显。美国白宫和CISA等机构也多次呼吁软件行业转向内存安全语言。
- 文末用"每季度发生一两次、持续八年"的数据反讽C语言社区面对这类问题时的"无能为力"姿态——不是真的无法预防,而是长期不愿系统性改变。