没人喜欢被管束。当交警要求你规范驾驶减速行驶时,你的第一反应很少会是由衷感谢。但当你开车经过一辆撞在树上的汽车,周围闪烁着警灯,救援设备四处可见时,或许你会意识到警察的建议是有道理的。
对于 FBI 和 CISA 对缓冲区溢出问题的严厉态度,这一点毋庸置疑。这些机构关注可能威胁企业 IT 系统、造成严重事故的安全漏洞,他们已经见过太多类似情况,因此感到愤怒。编写代码时犯错并不是罪过,任何值得做的人类活动都难免会出错。问题在于这类漏洞是可以避免的,而且几十年来一直如此,但大型科技公司仍在源源不断地产生这样的问题,就像教堂长椅上不断涌出的蛀虫。他们说"够了",这种说法很有道理。
你应该都了解缓冲区溢出。当程序员将数据从 A 移动到 B,却没有检查 A 是否总能装入 B 时,就会出现问题。当 A 装不下时,数据就会被复制到 B 之外的内存中,这可能会造成灾难性后果。让我们把那块内存称为 C,代表灾难 (Catastrophe)。或混乱 (Chaos)。或者就是 C 语言本身。
联邦机构建议的众多解决方案之一是放弃 C 语言及其混乱的家族,转而使用具有健全防御机制、能够防止缓冲区溢出的现代语言。C 语言显然不具备这种特性。它就像一把没有安全防护的电锯,诞生于这样一个时代:如果程序员想要切断自己的股动脉,那是他们的自由。有些马戏团演员可以玩杂耍电锯,但你绝对不会想在圣诞节把电锯杂耍套装作为家庭礼物送人。
正如联邦机构指出的,你不必完全放弃 C 语言就能提高安全性。你可以通过多种方式进行更好的测试,可以使用安全的编码实践和检查工具。现在的计算机可以在几分钟内编译整个 Linux 源代码。没有理由不利用这种原始计算能力来做更多的代码测试工作。
这正是安全漏洞观察者感到沮丧的核心原因。这些公司在没人要求的 AI 上烧掉数十亿美元,却不愿意花费一小部分资金来清理自己制造的混乱。
所有向他人提供服务和商品的人都要承担责任和后果。一个将 240 伏电路接到 115 伏插座的电工活不了多久。同样,一个用一英寸管道做马桶出水口的水管工也会遇到真正的缓冲区溢出问题。然而,像 Microsoft 这样的公司在明知可以避免的情况下,仍然对数百万客户这样做,而且可以继续这样做而不受惩罚。
是的,测试成本很高,而且不能保证绝对安全。但是请想想:如果测试的代码本身错误较少,测试就会变得更快、更容易、更便宜。当某类错误在流程早期就被消除时,就不需要再检查这类错误了。这就把我们带回到编码平台的选择,特别是编程语言的选择这个话题。
改变语言很困难,而且你在某个领域越优秀,改变就越困难。世界上最好的电锯杂耍者不会想换成精密安全切割器。如果你的业务建立在电锯杂耍套装的生态系统上,而流的血不是你的,那为什么这是别人的事?对一个组织来说,挑战不仅仅是技术层面的,还包括文化和个人层面,这不应该被低估。看看 Linux 内核中关于 Rust 的争论,其中 Linus 不得不用他的驯兽鞭来驯服一些大家伙。
但这些都不是不做出改变的借口。终有一天,C 语言会成为 21 世纪的 COBOL,这一天来得越快,信息高速公路上的血迹就会越少。当你明知如何把事情做好却依然做得很糟糕时,迟早会导致无关紧要,甚至灭绝。一旦你拥有高效的流程和优秀的人才,编写和发布更好的代码就会成为竞争优势。
转型成本是一次性的,而持续的节省是永远的。你想多快到达那里?你正在做什么来实现这一目标?
当罪过变成犯罪时,站在正义一边也是很好的。如果不良实践被多次指出却仍被故意忽视,那么将其定为可诉讼就成为可能。一个新法律,甚至仅仅是对现有法律的一个法庭案例就可以做到这一点——由于可避免的糟糕代码造成的漏洞使公司明确承担责任。从法律角度定义糟糕的代码很难,但将使用公认的良好方法作为可接受的辩护符合逻辑。
这个列表不会包括"不要使用 C 语言",至少不会立即包括。如果问题持续足够长的时间,有一天可能会需要这样做。最好不要让这种情况发生,而是让 C 语言成为历史,至少在生产代码中是这样,因为这些代码不仅可能切断你自己的腿,还可能伤害数百万用户。那些电锯最好尽快生锈掉。
好文章,需要你的鼓励
OpenAI首席执行官Sam Altman表示,鉴于投资者的AI炒作和大量资本支出,我们目前正处于AI泡沫中。他承认投资者对AI过度兴奋,但仍认为AI是长期以来最重要的技术。ChatGPT目前拥有7亿周活跃用户,是全球第五大网站。由于服务器容量不足,OpenAI无法发布已开发的更好模型,计划在不久的将来投资万亿美元建设数据中心。
阿里巴巴团队提出FantasyTalking2,通过创新的多专家协作框架TLPO解决音频驱动人像动画中动作自然度、唇同步和视觉质量的优化冲突问题。该方法构建智能评委Talking-Critic和41万样本数据集,训练三个专业模块分别优化不同维度,再通过时间步-层级自适应融合实现协调。实验显示全面超越现有技术,用户评价提升超12%。
英伟达推出新的小型语言模型Nemotron-Nano-9B-v2,拥有90亿参数,在同类基准测试中表现最佳。该模型采用Mamba-Transformer混合架构,支持多语言处理和代码生成,可在单个A10 GPU上运行。独特的可切换推理功能允许用户通过控制令牌开启或关闭AI推理过程,并可管理推理预算以平衡准确性和延迟。模型基于合成数据集训练,采用企业友好的开源许可协议,支持商业化使用。
UC Berkeley团队提出XQUANT技术,通过存储输入激活X而非传统KV缓存来突破AI推理的内存瓶颈。该方法能将内存使用量减少至1/7.7,升级版XQUANT-CL更可实现12.5倍节省,同时几乎不影响模型性能。研究针对现代AI模型特点进行优化,为在有限硬件资源下运行更强大AI模型提供了新思路。