网络管理与安全机构SANS及专门承接美国政府安全计划的MITRE号召了逾30家的全球软件厂商及美国安全相关部门的专家,在近日揭露了25个最危险的程序设计错误,并提醒开发人员如何避免犯下这些可能导致安全风险的失误。
来自MITRE的该计划经理Bob Martin表示,这25项最危险的错误将导致安全Bug而引发网络犯罪,更惊人的是,程序设计师对大多数的错误都不甚理解。此外,在2008年,光是其中的两个错误就让全球超过150万个网站有安全漏洞,而且让造访这些网站的使用者系统可能成为僵尸计算机。
这25个最危险的程序错误被归为三类,分别是组件间的不安全互动,占了9项;危险的资源管理,亦占了9项;多孔防御(Porous Defenses)则占了7项。
其中软件安全的最大杀手则是不当的输入验证(Input Validation),错误的输入验证程序可让黑客窜改并导致漏洞,采用合适的输入验证至少能减少现在最普遍的安全漏洞;另一个与输入验证相关的则是加密输出的缺失,因为程序人员经常忘记要分开数据上的控制信息与元数据,而让黑客有机可趁。
在不安全的组件互动方面,常见的危险错误还包括未能妥善保护SQL查询架构、网页架构,与操作系统命令架构,传输机密数据时未适当加密,伪造的跨站请求,导致竞赛情况(race condition)及错误讯息的信息揭露等。
在危险的资源管理中常见的错误则包括未能确保于内存缓冲的范围下执行运作、对重要状态信息的外部控制、对文件名称及路径的外部控制、不信任的搜寻路径、未能适当控制程序的产生、没有完善的检查就下载程序、未能适当移除或释出不要的资源、没有适当初始化数据,及变量与错误的表达式等。
另多孔防御的错误涵盖错误的存取控制、使用有瑕疵或不安全的密码运算法则、使用可能导致无法轻易修正系统安全的固定密码(Hard-Coded)、对重要资源的不安全权限分配.使用不足的随机值让黑客轻易识破规则、执行不必要的额外权限功能、让客户端可控制服务器端的安全机制等。
该计划是由美国国家安全局推动及赞助,希望可以由揭露最危险的程序设计错误,教育程序开发人员如何撰写安全的程序,以确保商业软件及国防安全架构的安全。参与该计划的还包括微软、赛门铁克、日本的IPA,美国政府各类安全部门以及加州大学戴维斯分校、普渡大学等,可谓结合了产官学的力量。
该计划除了列出25个最危险的程序错误外,另也提供了架构及设计的建议,以避免程序人员重蹈覆辙,他们并认为这些信息的揭露将有助于企业买到更安全的软件,而且学校也可以教导学生如何写出安全的程序。
此外,已有软件测试厂商正在开发根据上述信息而设计的软件测试工具,让应用程序开发团队可在开发期间测试产品的安全性。