漏洞10:数字错误 Numeric Errors

数字错误可以指几类不同的问题,包括:

  • 包围错误。

  • 数组索引的不正确验证。

  • 整数溢出。

  • 字节排序不正确。

  • 数字类型之间的转换不正确。

  • 数字错误占所有漏洞的3%。

  • 不正确的计算。

数字错误漏洞的一个常见位置是在数学计算。另外,如果数据从一个溢出,它就会受到这种漏洞的影响。

漏洞9:密码学问题Cryptographic Issues

与密码学的使用有关的弱点,经常让许多开发者感到困惑。实践中有很多动作可以导致密码学问题,包括:

  • 敏感数据的加密缺失。

  • 密钥管理错误。

  • 缺少所需的加密步骤。

  • 加密强度不足。

  • 使用不安全或有风险的加密算法。

  • 使用可逆的单向散列。

  • 未正确使用随机初始化。

  • 不适当地使用RSA算法。

漏洞8:代码注入Code Injection

任何人都可以向移动应用程序发送不受信任的数据,包括外部用户、内部用户、应用程序本身或移动设备上的其他恶意应用程序。攻击者加载简单的基于文本的攻击,这些攻击利用移动应用程序中目标解释器的语法。而几乎任何数据源都可以是注入向量。

作为社区中的一个常见漏洞。尽管这个漏洞主要出现在网站开发中,但当涉及到汽车的信息娱乐系统和其他复杂的嵌入式系统时,它仍然经常存在。

漏洞7:代码Code

将代码作为自己的漏洞可能看起来很奇怪,但我们谈论的是任何不属于特定类别的东西——所以认为这是一个包罗万象的漏洞。形如:

  • 密码管理不善、存储明文密码、硬编码密码。

  • API 合同处理不当。

  • 错误处理不当或缺失。

  • 不恰当地处理时间和状态。

  • 代码错误占所有漏洞的 4.4%。

  • 代码生成问题。

重要的是,开发人员不要自己进行加密——这显然不值得。,因为逆向工程非常容易,当它的表现不如预期时,这也将让许多工程师感到沮丧和尴尬。

漏洞6:资源管理Resource Management Errors

错误资源管理错误包括许多事情,如:

  • 系统资源管理不当。

  • 不受控制的资源消耗。

  • 将私人资源转移到新领域。

  • 资源释放或关闭不当。

  • 非对称资源消耗。

  • 资源锁定。

  • 双重免费,免费后使用。

  • 资源池不足。

  • 没有非堆内存。

尽管这些问题在 C 和 C++ 等语言中更为常见,但牢记它们始终很重要。用Python和Java编码的人常常认为他们对资源管理错误是免疫的,但事实并非如此。在这些语言中,很容易在不知不觉中达到内存耗尽的地步,而没有意识到它正在发生。

漏洞5:不当的访问控制 Improper Access Control

不当的访问控制是指软件不限制或错误地限制未授权的参与者对资源的访问。包括:

  • 权限管理不当。

  • 所有权管理不当。

  • 授权不当。

  • 不正确的用户管理。

  • 不正确的身份验证。

  • 来源验证错误。

  • 对预期端点的通信通道限制不当。

漏洞 4:输入验证不当Improper Input Validation

不正确的输入验证包括从可能影响程序控制流或数据流的任何内容中获取不正确或缺失的信息。包括以下内容:

  • 不正确的路径名限制。

  • 不正确的路径名等效解析。

  • 配置设置的外部控制。

  • 不适当的中和(命令注入、SQL 注入、跨站点脚本等)。

  • 缺少 XML 验证。

  • 不正确的日志无效化。

  • 对内存缓冲区边界的限制不当。

  • 不正确的数组索引验证。

  • 复制到缓冲区而不检查大小。

  • 不正确的空终止。

通常来说,开发人员从外部世界获取信息的任何地方都可能包含在此漏洞中。

漏洞3:信息泄露Information Exposure

信息泄露是指有意或无意地将信息透露给未经明确授权的行为者。这种信息暴露往往是通过以下方式发生的。如:

  • 发送的数据。

  • 数据查询。

  • 差异性。

  • 错误信息。

  • 调试信息。

  • 进程环境。

  • 缓存。

  • 索引私人数据。

开发人员往往会忘记通过错误消息和调试消息以及任何可能会进入日志文件的信息而泄露信息。出于这个原因,开发人员需要注意日志文件中的所有内容,并确信那里没有任何可能对攻击者有价值的信息。

漏洞2:访问控制Access Control

访问控制是与管理权限、特权或其他安全功能有关的任何弱点。包括:

  • 沙盒问题(chroot环境)。

  • 权限问题(不适当的继承,允许的默认值,颠覆权限的符号链接。不当的权限保存,等等)。

  • 不当的所有权管理。

  • 不当的访问控制

漏洞1:内存缓冲区问题Memory Buffer Problems

当软件可以读取或写入内存缓冲区边界之外的位置时,就会出现内存缓冲区问题。包括:

  • 在复制时不检查输入的大小。

  • 允许写到任意位置的错误。

结语:如何在黑客虎视眈眈中保持安全

通过持续关注上述 Top10 漏洞,可以确保代码保持相对安全。 当然,及时发现了解资产的漏洞并加载补丁也是至关重要的——因为新的问题不断会被发现。

Source: Top 10 Embedded Software Cybersecurity Vulnerabilities whitepaper

说明:本公众号为青骥信息安全小组所有,不隶属于任何商业机构,部分信息为网络收集,版权归原作者所有,文中观点仅供分享交流,不代表本公众号立场。如涉及版权等问题,请您联系ICVSec@126.com告知,以便及时处理,谢谢!

声明:本文来自汽车信息安全,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。