C++ 阅读时间 2 分钟

C++ 会因 CrowdStrike 大规模中断事件而受指责,这早在意料之中

分享本文
It was obvious that C++ would be blamed for the major CrowdStrike outage.

上周五,银行、机场、电视台、医疗机构、酒店以及众多其他企业遭遇了大范围的 IT 中断,全球 Windows 机器出现错误,导致航班停飞并造成广泛混乱。而我们曾写过一篇文章,指出很快他们就会把责任归咎于 C++,而事实确实如此,正如我们在这里所见。

我们遇到涉及 C++ 的严重问题的主要原因之一是:正因为其强大,C++ 被广泛应用于关键系统。而在这些关键系统中,哪怕一个缺陷也可能导致灾难。

假设所有关键系统都是用 Java 或 C# 开发的,这些系统就一定安全吗?正如 Herb Sutter 在这篇详细文章中所解释的,答案是否定的。

但也存在一些误解,包括过于狭隘地将编程语言安全性视为我们行业首要的安全保障问题——事实并非如此。许多最具破坏性的近期安全漏洞发生在用内存安全语言(MSL)编写的代码中(例如,Log4j),或者与编程语言毫无关系(例如,存储在公开 GitHub 仓库中的 Kubernetes Secrets)。

正如 Herb Sutter 所指出的,2023 年十大最危险软件缺陷中的大多数都与内存安全无关。

2023 年十大"最危险软件缺陷"中的大多数与内存安全无关。2023 年许多最大的数据泄露事件以及其他网络攻击和网络犯罪与编程语言完全无关。

将软件缺陷的普遍存在归咎于 C++ 是一种简单化的观点,忽视了软件开发的更广泛背景。虽然 C++ 提供了高度的控制能力和性能,但需要谨慎而娴熟的使用才能避免陷阱。任何编程语言都是如此,每种语言都有其自身的挑战和潜在问题。

归根结底,软件质量的责任在于开发者、测试人员以及开发过程本身。强调适当的教育、严格的测试以及对最佳实践的遵循,可以降低与任何编程语言(包括 C++)相关的许多风险。与其妖魔化一种工具,我们更应专注于改进使用它的方式,以创建可靠、安全、高效的软件。

分享本文