25种最危险的编程错误和16种系统弱点
介绍
2011年CWE / SANS 25大危险软件错误列出了可能导致软件严重漏洞的最普遍和最严重的错误。它们通常很容易找到,并且易于开发。它们很危险,因为它们经常会让攻击者完全接管软件,窃取数据或阻止软件工作。
排名前25的名单是一种教育和意识工具,通过识别和避免软件出货之前发生的常见错误,帮助程序员防止困扰软件行业的各种漏洞。软件客户可以使用相同的列表来帮助他们索要更安全的软件。软件安全方面的研究人员可以使用前25名专注于所有已知安全弱点的狭窄而重要的子集。最后,软件经理和CIO可以使用Top 25列表作为保护软件安全进度的衡量标准。
该列表是SANS Institute,MITER和美国和欧洲许多顶级软件安全专家之间的合作成果。它利用SANS Top 20攻击媒介(http://www.sans.org/top20/)和MITRE Common Weakness Enumeration(CWE)(http://cwe.mitre.org/)的开发经验。MITRE在美国国土安全部国家网络安全部门的支持下维护了CWE网站,详细介绍了排名前25位的编程错误以及减轻和避免错误的权威性指导。CWE网站包含超过800个编程错误,设计错误和可能导致漏洞利用的体系结构错误。
2011年前25名对2010年名单进行了改进,但精神和目标保持不变。今年的前25名参赛者使用来自20多个不同组织的输入信息进行优先排序,他们根据流行率,重要性和利用可能性对每个弱点进行评估。它使用 通用弱点评分系统(CWSS)对最终结果进行评分和排名。排名前25的名单包含一小组最有效的“Monster Mitigations”,帮助开发人员减少或消除前25名弱点中的整个群体,以及CWE记录的数百个弱点中的许多弱点。
最危险的编程错误
软件错误分为三类
- 软件错误类别:组件之间不安全的交互(6错误)
- 软件错误类别:风险资源管理(8错误)
- 软件错误类别:多孔防御(11错误)
组件之间不安全的交互
这些弱点与数据在不同组件,模块,程序,进程,线程或系统之间发送和接收的不安全方式有关。
CWE ID | 名称 |
---|---|
CWE-89 | SQL命令中使用的特殊元素的不当中和('SQL Injection') |
CWE-78 | 操作系统命令中使用的特殊元素的不当中和('OS命令注入') |
CWE-79 | 网页生成过程中对输入的中和不当(“跨站脚本”) |
CWE-434 | 危险类型的文件无限制上传 |
CWE-352 | 跨站请求伪造(CSRF) |
CWE-601 | 将URL重定向到不可信站点('打开重定向') |
风险资源管理
这一类的弱点与软件无法正确管理重要系统资源的创建,使用,传输或销毁的方式有关。
CWE ID | 名称 |
---|---|
CWE-120 | 不检查输入大小的缓冲区复制('经典缓冲区溢出') |
CWE-22 | 限制目录路径名的不当限制('路径遍历') |
CWE-494 | 没有完整性检查的代码下载 |
CWE-829 | 不可信控制球的功能性包含 |
CWE-676 | 潜在危险功能的使用 |
CWE-131 | 错误的缓冲区大小计算 |
CWE-134 | 不受控制的格式字符串 |
CWE-190 | 整数溢出或绕回 |
多孔防御
这一类别的弱点与常常被滥用,滥用或被忽略的防守技术有关。
CWE ID | 名称 |
---|---|
CWE-306 | 缺少关键功能的身份验证 |
CWE-862 | 缺少授权 |
CWE-798 | 使用硬编码的凭证 |
CWE-311 | 缺少敏感数据的加密 |
CWE-807 | 在安全决策中依赖不可信输入 |
CWE-250 | 用不必要的特权执行 |
CWE-863 | 授权不正确 |
CWE-732 | 关键资源的权限分配不正确 |
CWE-327 | 使用易破解或者有风险的加密算法 |
CWE-307 | 对过度验证尝试的不当限制 |
CWE-759 | 没有盐的单向哈希的使用 |
常见系统弱点
CWE ID | 名称 |
---|---|
CWE-770 | 无限制或节流的资源分配 |
CWE-129 | 数组索引的错误验证 |
CWE-754 | 对不正常或特殊情况的错误检查 |
CWE-805 | 长度值不正确的缓冲区访问 |
CWE-838 | 输出上下文不合适的编码 |
CWE-330 | 使用不充分的随机值 |
CWE-822 | 不可信指针解引用 |
CWE-362 | 使用带有不正确同步的共享资源并发执行('竞争条件') |
CWE-212 | 敏感数据的不合理移除 |
CWE-681 | 数字类型之间的转换不正确 |
CWE-476 | NULL指针解引用 |
CWE-841 | 行为工作流程的不当执行 |
CWE-772 | 有效寿命后资源的释放 |
CWE-209 | 通过错误信息曝光信息 |
CWE-825 | 过期的指针解除引用 |
CWE-456 | 缺少初始化 |
参考推荐:
https://www.sans.org/top25-software-errors/
http://cwe.mitre.org/top25/