中国教育和科研计算机网
EDU首页 |  中国教育 |   高校科技 |   教育信息化 |   CERNET
教育信息化

资讯 | 专题 会议 观点 专栏 访谈 企业 产品 CIO 技术 校园信息化 下一代互联网 IPv6视频课堂

中国教育网 > 教育信息化
您现在的位置: EDU首页 > 教育信息化 > 下一代互联网 > 互联网的机构
全球25个最危险的编程错误
http://www.edu.cn   2009-08-13 中国教育和科研计算机网 作者:翻译/杨峰;整理/段海新

字体选择:【大】 【中】 【小】

  2009年初,CWE/SANS联合发布了25个最危险的编程错误(以下简称top25)。SANS (SysAdmin, Audit, Network, Security) 研究所是美国一个比较权威的信息安全培训与认证机构,CWE常见缺陷列表(Common Weakness Enumeration)是MITRE公司(一个非盈利机构)继CVE(Common Vulnerabilities and Exposures)之后的又一个安全漏洞词典。

  本文给出Top25的概要介绍,在以后的内容中将陆续介绍每个错误的细节和防范方法。原文可以从CWE(http://cwe.mitre.org)网站上访问,提供PDF下载。

  这份清单是SANS研究院、MITRE和许多在美国和欧洲的顶级软件安全专家的合作成果。它总结了在SANS的20大攻击向量(http://www.sans.org/ top20 /)和MITRE的常见缺陷列表(CWE)(http://cwe.mitre.org/)的开发中的经验。MITRE在美国国土安全部、国家网络安全局的支持下维护CWE网站,对这些编程错误给出了详细描述,并给出了权威性的指导以减少和避免这些错误。CWE网站还包含了700多个额外的编程错误、设计错误,以及可导致开发漏洞的结构错误的数据。

  这25个最危险的编程错误,它们可能导致严重的软件漏洞。这些错误频繁发生,往往容易被攻击者发现,且易于利用。这些错误之所以是危险的,是因为他们会经常让攻击者完全接管软件、窃取数据,或让软件系统停止工作。

  Top25清单的主要目标是在软件发布之前,通过教育程序员如何消除十分常见的错误,从源头上阻止漏洞。该清单将成为教育和宣传的一种工具,将有助于程序员防止各种困扰软件产业的漏洞出现。软件的消费者可以用同样的清单,来帮助他们获取更安全的软件。最后,软件管理人员和CIO们可以使用Top 25清单作为衡量在软件安全工作上进展的标尺。

  TOP25的分类
  1、组件间不安全的交互
  这些缺陷与数据在单独的组件、模块、程序、进程、线程或系统之间不安全发送和接受方法有关。
  CWE-20:不适当的输入验证 ;
  CWE-116:不正确的编码或输出转义;
  CWE-89:SQL查询结构保护失败(又名“ SQL注入”) ;
  CWE-79:网页结构保护失败(又名“跨站脚本攻击”) ;
  CWE-78:操作系统命令结构保护失败(又名“操作系统命令注入”) ;
  CWE-319:明文传输的敏感信息;
  CWE-352:伪造跨站请求(CSRF);
  CWE-362:竞争条件 ;
  CWE-209:错误消息的信息泄漏;

  2、危险的资源管理
  此类缺陷与软件没有妥善管理创造、使用、转让或取消重要的系统资源有关。
  CWE-119:对内存缓冲区边界操作限制失败 ;
  CWE-642:外部控制的临界状态数据;
  CWE-73:外部控制的文件名或路径 ;
  CWE-426:不可信的搜索路径;
  CWE-94:代码生成控制失败(又名“代码注入” ) ;
  CWE-494:下载的代码未进行完整性检查 ;
  CWE-404:资源关闭或释放不正确;
  CWE-665:不正确的初始化;
  CWE-682:不正确的运算(译者:如出现整数溢出等错误)。
  3、可穿透的防范措施
  这一类缺点与防御技术的经常误用、滥用,或彻底忽略有关。
  CWE-285:不正确的访问控制(授权) ;
  CWE-327:使用一个被攻破的或危险的加密算法 ;
  CWE-259:硬编码的密码 ;
  CWE-732:对关键资源的使用权限不安全的分配 ;
  CWE-330:使用不够有效的随机值 ;
  CWE-250:给予没有必要的权限;
  CWE-602:服务器端的安全由客户端实施。

  对Top25的开发和选择
  Top 25清单是在2008年底产生的。大约40个软件安全专家提供了反馈,包括软件开发人员、扫描工具开发商、安全顾问、政府代表和大学教授,代表性是国际的。在最终定稿前经过了几个中间版本,重新提交给了审阅人员。更多的详细情况参照Top 25产生进程:http://cwe.mitre.org/top25/process.html。
  为了描述Top 25并确定优先次序,研究者开发了一个针对熟练、有目的的黑客的威胁模型。
  在选择Top 25中的缺陷,主要考虑以下两个原则:
  第一,缺陷的流行程度:对于那些软件开发周期中没有集成安全的软件,这些缺陷的频繁程度。
  第一,后果:成功利用缺陷以后可能造成的后果,如意想不到的执行代码,数据丢失,或拒绝服务。
  流行与否是多位Top 25开发者评估的结果,因为没有可用的统计数据和统计方法。
  根据上述标准,未来版本的Top 25将不断改进,以涵盖不同的弱点。

  Top25的组织
  CWE对Top 25中每个的条目提供额外的资料,它的主要读者对象是软件编程人员和设计人员。
  CWE编号和名称;
  支持数据字段:缺陷的补充资料,可能对决策者进一步考虑缺陷的优先级是有帮助的;
  讨论:关于缺陷性质和后果的一个简短的、非正式的讨论;
  预防和缓解措施:开发人员可以采取减轻或消除弱点的步骤。软件厂商可以选择一个或多个这样的缓解措施,以适应自己的需要。请注意,这些技术的有效性有所不同,可以组合多种技术实现纵深防御方案;
  相关CWE:与Top25中相关的其他CWE条目。注:这个列表只是说明性的,并不全面;
  有关的攻击模式:可能会成功利用这些缺陷进行攻击的CAPEC条目。注:不一定是完整的。(译者注:CAPEC是MITRE的一个常见攻击列表和分类的字典,参见http://capec.mitre.org/)

  其他支持的数据域
  每一个Top 25条目包括缺陷广泛性和后果的支持数据域。每个条目还包括下列域:
  攻击频率:缺陷被攻击者所利用的频繁程度。
  检测的难易程度:一个攻击者发现这个缺陷的容易程度。
  修复代价:修补这些缺陷所需的努力。
  攻击者的意识:攻击者意识到这一缺陷的可能性、检测的方法和利用的方法。

  (作者单位为清华大学信息网络工程研究中心)

  来源:《中国教育网络》2009年4月刊

页面功能 【打印】 【关闭】 【我有话说

MOOC风暴来袭

版权所有:中国教育和科研计算机网网络中心 CERNIC,CERNET,京ICP备15006448号-16,京网文[2017]10376-1180号

关于假冒中国教育网的声明 | 有任何问题与建议请联络:Webmaster@staff.cernet.com