华为安全英国问题表明需要安全编码

发布日期:2019年06月06日
作者:Pieter Danhieux
案例研究

华为安全英国问题表明需要安全编码

发布日期:2019年06月06日
作者:Pieter Danhieux
查看资源
查看资源

原文发表于 信息时代.这是一个更新的版本,纠正了围绕风河系统对其实时操作系统产品VxWorks的持续安全支持的定位。

英国华为网络安全评估中心最近的一份报告指出了华为软件工程流程中的重大安全问题。虽然关于这份重要报告的大部分新闻都集中在前一年未解决的问题上,但更危险和被忽视的问题是华为明显缺乏安全编码准则和采用的做法。但这是一个可以解决的问题。

对于中国电信巨头华为来说,消息越来越糟。虽然美国已经直接禁止该公司参与未来的政府工作,但英国一直比较接受这样一个事实:华为设备和代码中的许多潜在缺陷是可以修复的。英国在2010年成立了华为网络安全评估中心(HCSEC),以评估和解决华为产品的安全问题,并编写有关年度报告。然而,今年的报告尤其令人震惊。

新闻中对2019年HCSEC报告的大部分关注都与前一年的安全缺陷几乎没有得到解决有关。这包括使用风河公司的VxWorks实时操作系统的旧版本,该系统很快就会被淘汰。华为已经承诺修复这个问题(他们将得到风河系统的持续支持),但它仍然是英国大部分电信基础设施的核心组成部分。

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

让我们看看报告中概述的那些技术问题的一些例子。必须说,华为所做的最好的事情之一是创建安全编码指南,以帮助他们的工程师和程序员部署新代码。这些准则涵盖了广泛的最佳实践,例如使用来自可信库的已知安全版本的系统函数和进程,当然也不使用具有任何已知漏洞的变体。这在理论上是件好事,但对英国的一个华为生产系统的实际评估发现,这些准则要么从未传达给程序员,要么被他们忽视,要么根本没有执行。

该报告研究了面向公众的应用程序中的特定内存处理功能,在这种情况下,有一组留言板,作为程序的一项功能,用户被邀请添加输入。鉴于用户输入区不应被视为 "可信",根据华为的内部准则,预计这些区域将只包含安全代码。具体来说,测试人员查看了这些生产系统中直接调用内存处理函数memcpy()、strcpy()和sprintf()的情况,众所周知,自1988年以来,这些函数有可能导致缓冲区溢出等严重安全问题。

令人震惊的是,有5000次直接调用17个已知的安全memcpy()函数,但也有600次使用12个不安全的变体。其他函数的比例也差不多。有1400次安全的strcpy()调用,但也有400次有已知漏洞的坏调用。还有2000次安全使用sprintf(),而不安全的只有200次。虽然这些函数的大部分使用都是安全的,这很好,但仍有大约20%的整体代码容易受到已知攻击。这是一个巨大的威胁面攻击区域,而且它还只考虑到了这三个内存处理函数的直接调用,而不是通过函数指针间接使用的任何实例。虽然审计人员只看了这些特定的函数,但这三个被选中的内存处理函数不太可能是唯一有问题的。

虽然华为为他们的程序员创建了一个最佳实践指南是件好事,但显然还需要做更多。概述安全期望是一个步骤,但只有当这些准则被积极遵守并为开发团队所熟悉时,它们才会有效。华为可以通过承诺对他们的程序员进行有效的培训,而不仅仅是略过如何遵循华为内部准则的基础知识,从而在提高其安全性方面取得重大进展。他们必须采取额外的飞跃,展示如何在总体上更安全地编码。编译员需要在好的(安全的)和坏的(不安全的)编码模式方面得到充分的培训,并被赋予责任,每次都要实践他们公司所宣扬的。

HCSEC报告中概述的许多具体编码问题都作为平台的一部分得到了解决和执行。 Secure Code Warrior平台的一部分,该平台培训程序员和网络安全团队始终部署和维护安全代码。平台内不断展示一些概念,如永远不要相信用户输入,永远从已建立的库中提取功能,在将其传递给服务器之前对所有输入进行消毒,以及其他许多安全编码做法。我们还关注高度具体的漏洞,并逐步展示如何避免和缓解这些漏洞。

除了熟练的培训,像华为这样的公司可以利用DevSecOps解决方案。 它直接在集成开发环境中增加了实时辅导,利用根据公司的安全准则定制的安全编码食谱,在开发人员编写代码时,充当他们在编码 "厨房 "的副厨师。这种方法可以帮助华为所有技能水平的程序员编写更好的代码,并识别潜在的漏洞,同时也允许华为的安全专家创建一个 "食谱",坚持他们的政策并帮助执行命令。

从华为的麻烦中得到的一个核心教训是,如果程序员不知道安全编码准则,或者根本不知道如何遵循良好的编码实践,那么创建安全编码准则就毫无意义。在这种情况下,内部最佳实践指南变成了华为自己的zhilaohu;西方人称之为"纸老虎"。这是一份有很多风格的文件,但没有内容。要赋予它真正的力量,需要正确的实用工具和实际的培训项目,一个采取实践方法并建立持续知识和技能的项目。

查看资源
查看资源

作者

皮特-丹休

Pieter Danhieux是全球公认的安全专家,拥有超过12年的安全顾问经验,并在SANS担任首席讲师8年,教授如何针对和评估组织、系统和个人的安全弱点的攻击性技术。2016年,他被评为澳大利亚最酷的科技人士之一(Business Insider),被授予年度网络安全专业人士(AISA - 澳大利亚信息安全协会),并持有GSE、CISSP、GCIH、GCFA、GSEC、GPEN、GWAPT、GCIA认证。

想要更多吗?

在博客上深入了解我们最新的安全编码见解。

我们广泛的资源库旨在增强人类对安全编码技术提升的方法。

查看博客
想要更多吗?

获取关于开发者驱动的安全的最新研究

我们广泛的资源库充满了有用的资源,从白皮书到网络研讨会,让你开始使用开发者驱动的安全编码。现在就去探索它。

资源中心

华为安全英国问题表明需要安全编码

发布日期:2019年06月06日
作者:Pieter Danhieux

原文发表于 信息时代.这是一个更新的版本,纠正了围绕风河系统对其实时操作系统产品VxWorks的持续安全支持的定位。

英国华为网络安全评估中心最近的一份报告指出了华为软件工程流程中的重大安全问题。虽然关于这份重要报告的大部分新闻都集中在前一年未解决的问题上,但更危险和被忽视的问题是华为明显缺乏安全编码准则和采用的做法。但这是一个可以解决的问题。

对于中国电信巨头华为来说,消息越来越糟。虽然美国已经直接禁止该公司参与未来的政府工作,但英国一直比较接受这样一个事实:华为设备和代码中的许多潜在缺陷是可以修复的。英国在2010年成立了华为网络安全评估中心(HCSEC),以评估和解决华为产品的安全问题,并编写有关年度报告。然而,今年的报告尤其令人震惊。

新闻中对2019年HCSEC报告的大部分关注都与前一年的安全缺陷几乎没有得到解决有关。这包括使用风河公司的VxWorks实时操作系统的旧版本,该系统很快就会被淘汰。华为已经承诺修复这个问题(他们将得到风河系统的持续支持),但它仍然是英国大部分电信基础设施的核心组成部分。

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

让我们看看报告中概述的那些技术问题的一些例子。必须说,华为所做的最好的事情之一是创建安全编码指南,以帮助他们的工程师和程序员部署新代码。这些准则涵盖了广泛的最佳实践,例如使用来自可信库的已知安全版本的系统函数和进程,当然也不使用具有任何已知漏洞的变体。这在理论上是件好事,但对英国的一个华为生产系统的实际评估发现,这些准则要么从未传达给程序员,要么被他们忽视,要么根本没有执行。

该报告研究了面向公众的应用程序中的特定内存处理功能,在这种情况下,有一组留言板,作为程序的一项功能,用户被邀请添加输入。鉴于用户输入区不应被视为 "可信",根据华为的内部准则,预计这些区域将只包含安全代码。具体来说,测试人员查看了这些生产系统中直接调用内存处理函数memcpy()、strcpy()和sprintf()的情况,众所周知,自1988年以来,这些函数有可能导致缓冲区溢出等严重安全问题。

令人震惊的是,有5000次直接调用17个已知的安全memcpy()函数,但也有600次使用12个不安全的变体。其他函数的比例也差不多。有1400次安全的strcpy()调用,但也有400次有已知漏洞的坏调用。还有2000次安全使用sprintf(),而不安全的只有200次。虽然这些函数的大部分使用都是安全的,这很好,但仍有大约20%的整体代码容易受到已知攻击。这是一个巨大的威胁面攻击区域,而且它还只考虑到了这三个内存处理函数的直接调用,而不是通过函数指针间接使用的任何实例。虽然审计人员只看了这些特定的函数,但这三个被选中的内存处理函数不太可能是唯一有问题的。

虽然华为为他们的程序员创建了一个最佳实践指南是件好事,但显然还需要做更多。概述安全期望是一个步骤,但只有当这些准则被积极遵守并为开发团队所熟悉时,它们才会有效。华为可以通过承诺对他们的程序员进行有效的培训,而不仅仅是略过如何遵循华为内部准则的基础知识,从而在提高其安全性方面取得重大进展。他们必须采取额外的飞跃,展示如何在总体上更安全地编码。编译员需要在好的(安全的)和坏的(不安全的)编码模式方面得到充分的培训,并被赋予责任,每次都要实践他们公司所宣扬的。

HCSEC报告中概述的许多具体编码问题都作为平台的一部分得到了解决和执行。 Secure Code Warrior平台的一部分,该平台培训程序员和网络安全团队始终部署和维护安全代码。平台内不断展示一些概念,如永远不要相信用户输入,永远从已建立的库中提取功能,在将其传递给服务器之前对所有输入进行消毒,以及其他许多安全编码做法。我们还关注高度具体的漏洞,并逐步展示如何避免和缓解这些漏洞。

除了熟练的培训,像华为这样的公司可以利用DevSecOps解决方案。 它直接在集成开发环境中增加了实时辅导,利用根据公司的安全准则定制的安全编码食谱,在开发人员编写代码时,充当他们在编码 "厨房 "的副厨师。这种方法可以帮助华为所有技能水平的程序员编写更好的代码,并识别潜在的漏洞,同时也允许华为的安全专家创建一个 "食谱",坚持他们的政策并帮助执行命令。

从华为的麻烦中得到的一个核心教训是,如果程序员不知道安全编码准则,或者根本不知道如何遵循良好的编码实践,那么创建安全编码准则就毫无意义。在这种情况下,内部最佳实践指南变成了华为自己的zhilaohu;西方人称之为"纸老虎"。这是一份有很多风格的文件,但没有内容。要赋予它真正的力量,需要正确的实用工具和实际的培训项目,一个采取实践方法并建立持续知识和技能的项目。

我们希望得到您的许可,向您发送有关我们产品和/或相关安全编码主题的信息。我们将始终以最谨慎的态度对待您的个人资料,绝不会将其出售给其他公司用于营销目的。

要提交表格,请启用 "分析 "cookies。完成后,请随时再次禁用它们。