博客

华为在英国面临的安全问题凸显了安全编码的必要性。

June 6, 2019
Pieter Danhieux
一辆红色双层巴士行驶在桥上,背景是伦敦大本钟和议会大厦。

本文最初发表于 Information Age。此为更新版本,修正了关于 Wind River Systems 为其 VxWorks 实时操作系统产品提供持续安全支持的表述。

英国华为网络安全评估中心近期发布的一份报告指出,华为的软件工程流程存在重大安全问题。尽管关于这份关键报告的多数新闻都聚焦于去年遗留的未决问题,但更危险且被忽视的问题在于,华为明显缺乏安全编码准则与实践。不过,这些问题是可以解决的。

对于中国电信巨头华为而言,坏消息接踵而至。虽然美国已彻底禁止该公司参与未来的政府项目,但英国对华为设备及代码中许多潜在缺陷可修复这一事实持更开放的态度。英国于 2010 年成立了华为网络安全评估中心(HCSEC),旨在评估并解决华为产品中的安全问题,并发布 年度报告。然而,今年的报告内容尤为严厉。

新闻界对 2019 年 HCSEC 报告的关注点大多集中在几乎没有任何去年的安全漏洞得到解决这一事实上。这包括使用 Wind River 即将停止支持的旧版 VxWorks 实时操作系统。华为已承诺解决该问题(并将获得 Wind River Systems 的持续支持),但它仍是英国电信基础设施中许多核心组件的一部分。

大多数主流媒体似乎忽略了一个关键因素,即该公司在开发和部署新软硬件的过程中可能存在根本性的流程缺陷。报告指出,华为处理内部工程方法的方式存在“重大技术问题”。

让我们看看报告中列举的一些技术问题示例。必须承认,华为所做的最正确的事情之一就是制定了安全编码准则,以帮助其工程师和程序员部署新代码。这些准则涵盖了广泛的最佳实践,例如使用来自受信任库的已知安全版本的系统函数和流程,绝不使用任何已知存在漏洞的变体。理论上这很好,但对英国华为生产系统的实地评估发现,这些准则要么从未传达给程序员,要么被他们忽视,或者根本没有得到执行。

报告审查了面向公众的应用程序中特定的内存处理函数,本例中是一组允许用户输入信息的留言板。鉴于用户输入区域绝不应被视为“受信任”,根据华为内部准则,这些区域理应仅包含安全代码。具体而言,测试人员检查了这些生产系统中对 memcpy()、strcpy() 和 sprintf() 等内存处理函数的直接调用,众所周知,自 1988 年以来,这些函数可能导致缓冲区溢出等严重安全问题。

令人震惊的是,代码中存在 5,000 次对 17 个已知安全 memcpy() 函数的直接调用,但同时也存在 600 次对 12 个不安全变体的调用。其他函数的情况也大致相同。代码中有 1,400 次安全的 strcpy() 调用,但也有 400 次存在已知漏洞的错误调用。此外,还发现了 2,000 次安全的 sprintf() 使用,相比之下有 200 次是不安全的。虽然大部分函数使用是安全的,但这仍意味着约 20% 的代码容易受到已知攻击。这是一个巨大的攻击面,而且这仅考虑了对这三个内存处理函数的直接调用,未计入通过函数指针进行的间接使用。虽然审计人员仅检查了这些特定函数,但所选的三个内存处理函数不太可能是仅有的存在问题的函数。

虽然华为为程序员制定了最佳实践指南是件好事,但显然还需要做更多工作。概述安全期望只是第一步,只有当这些准则被开发团队熟知并积极遵循时,它们才有效。华为可以通过承诺有效培训程序员来显著提升安全性,而不仅仅是泛泛地讲解如何遵循内部准则。他们必须更进一步,展示如何从整体上进行更安全的编码。程序员需要接受关于良好(安全)和不良(不安全)编码模式的充分培训,并被赋予责任,在每次编码时都践行公司所倡导的准则。

HCSEC 报告中列出的许多具体编码问题,在 Secure Code Warrior 平台中都得到了解决和强制执行。该平台旨在培训程序员和网络安全团队始终部署并维护安全代码。诸如绝不信任用户输入、始终从既定库中调用函数、在将输入传递给服务器前进行清理等安全编码实践,都在该平台中得到了持续演示。我们还研究了高度具体的漏洞,并逐步展示如何避免和缓解这些问题。

除了专业的培训,像华为这样的公司还可以利用 DevSecOps 解决方案。它直接在 IDE 中添加实时指导,利用根据公司安全准则定制的安全编码方案,在开发人员编写代码时充当其编码“厨房”的副主厨。这种方法可以帮助各技术水平的华为程序员编写更好的代码并识别潜在漏洞,同时允许华为的安全专家创建一个符合公司政策并有助于执行命令的“食谱”。

A core lesson from Huawei's troubles should be that creating secure coding guidelines is meaningless if programmers don't know about them, or simply don't know how to follow good coding practices. In this case, the internal best practices guidelines turned out to be Huawei's own zhilaohu; what the West would call "a paper tiger'. It was a document with a lot of style, but no substance. To give it real teeth would require the right practical tools and an actual training program, one that takes a hands-on approach and builds continuous knowledge and skill.

标语

在 AI 驱动的开发成果发布前实现有效治理

评估 AI 辅助风险,在提交代码时强制执行安全编码策略,并加速整个软件开发生命周期的安全交付。

预约演示
资源库

探索更多博客

获取有关安全编码、人工智能治理和软件风险管理的专家内容。

浏览全部
案例研究
筛选标签
这是 div 块中的一段文本。

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

统一的安全文化:Sage 如何打造其安全倡导者项目

了解 Sage 如何通过灵活且以关系为导向的方法提升安全性,成功培养了 200 多名安全倡导者,并实现了显著的风险降低。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

2026年网络安全意识月:理解人工智能安全对企业防御至关重要

目前,大多数顶级人工智能公司已公开呼吁全球放缓人工智能的发展速度,以便安全防护措施能够跟上步伐。然而事实是,严重的安全问题已经显现。随着人工智能实施带来的经济成本和风险不断累积,无数安全领导者和高管团队正处于紧迫的境地。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

赋能要素 8:打造项目品牌

成功的安全编码项目不仅需要优质的内容。赋能要素 8 展示了如何通过品牌化将参与过程转变为一种令人向往、以地位为驱动的体验。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

每一位员工现在都处于 AI 网络安全的最前线

企业技术格局正以一种鲜有人预料到的速度发生剧变,直到为时已晚。我们已正式跨越了从人工编写代码和基础辅助编程,进入“智能体开发生命周期”(ADLC)的时代。虽然自主 AI 智能体有望在多个职能领域实现前所未有的效率,但它们也带来了全新的安全和监管风险。

了解更多

在产品发布前确保 AI 驱动的开发安全

洞察开发风险,执行安全策略,并在整个软件开发生命周期中预防漏洞。

预约演示
未找到相关项目。