开放式Web应用程序安全项目(OWASP,Open Web Application Security Project),top10 展示了当前对web应用威胁最大应用最广的漏洞,学习目的在于了解当前最新的安全动态、走向,针对其内容更有针对性的学习安全,下图是owasp2021相较于2017的比较图,不难发现新增了三种威胁,而2017的威胁的排名在2021均有变化。

owasp2021 top10 分别是:
1.Broken Access Control 失效的访问控制
2.Cryptographic Failures 加密失败
3.Injection 注入
4.Insecure Design 不安全的设计 //new
5.Security Misconfigration 安全配置错误
6.Vulnerable and Outdated Components 易受攻击和过时的组件
7.Identification and Authentication Failures 认证和授权失败
8.Software and Data Integrity Failures 软件和数据完整性故障 //new
9.Security Logging and Monitoring Failures 安全日志和监控失效
10.Server-Side Request Forgery 服务器请求伪造 //new
总体来看信息安全问题归根到底还是人的问题,比如新上榜的不安全的设计,注入、安全配置错误、易受攻击和过时的组件,都是人为因素占比相当大。体现的是在当前信息化的社会里,很多信息、网络管理员的安全意识淡薄,对于自己配制的信息不熟悉,对其所在的企事业单位的信息系统整体框架不了解,对于当前信息安全发展动向不清楚,对新的安全技术学习不认真。
再仔细看,如果把top10中某些漏洞联系起来看,能发现一个趋势–内网安全问题变得严峻。我得出这个结论最重要的一个论据就是第十位新上榜的SSRF服务端请求伪造,攻击者使用这个技术来实现跨域、横向移动等战术。这说明越来越多的内部网络发现来自内网设备的攻击,这应该引起大家的注意,毕竟当前内网安全的保障仍需完善。
黄保华老师在课上曾不止一次提到,防止安全事故发生要做到两项极重要的事情,一个是访问控制,另一个是安全审计。2021 top10 的首位是失效的访问控制,即攻击者通过绕过等技术,以任意身份访问被限制访问的系统内部资源。显然倘若访问控制失效,攻击者就会如入无人之境。
对于安全审计,我预言不久之后随着防御技术更加成熟,以ATT&CK框架为代表的中级模型被广泛应用后,攻击者可能会采取更意想不到的战术、技术入侵、破坏信息系统。随后攻击者会将把重心集中在破坏审计这个环节。通过破坏审计,让已有框架的搜集功能失效,让上下文信息的联系断开,使得防守方应急速度落后于攻击者的攻击速度、导致防守方无法短时间内制定出方案,无法止损。并且即便处理了漏洞,也无法对事件起因进行分析,无法溯源,对于防御下一次攻击以及更新防御方案,更新防御技术框架十分不利。
基于这个预言,我认为从事安全行业的研究者必须提高警惕,通过改进、巩固,更新已有的安全审计技术和设施,找到更加先进,高效的方法使得攻击者的战术难以实现。我认为,隐写溯源技术,除了在保护版权、保护涉密文件有重大作用外,对于安全审计来说也能发挥其功能。鉴于隐写溯源技术未普及,仅作粗浅判断。目前隐写溯源技术主要还是将数字水印(包含操作人员、设备等秘密信息)利用隐写术嵌入如图像、音频、视频中,后期通过提取识别、验证数字水印实现防伪、溯源的效果。借鉴该思想,对于分析安全事件的核心日志等文件,也可以使用隐写溯源技术分布式的镶嵌在某处或者多处,当攻击者企图篡改日志、破坏日志、混淆数据的时候,我们可以根据水印来检测真伪并且一定程度上进行溯源。隐写溯源技术是具有鲁棒性、脆弱性、不可感知性的,我认为日后它将广泛应用于更行各业之中,本篇文章主要是学习owasp2021同2017的异同分析,对于隐写溯源就不再多描述了。
(ps:照这么发展,以后owasp top 10可能还会出现:失效的隐写溯源,哈哈)
下面我会结合网上优秀文章对新的top10进行讨论。
一、top1
新的top1是失效的访问控制(原top5),取代了注入。调查显示94%受测试的应用程序存在该漏洞。
我认为这很有可能是随着信息化的发展,各行业纷纷转型,而由于技术、资金、安全观念不足,大多企业会使用网上开源的代码,或者雇用经验不足的技术人员,又或者是企业内的技术人员的安全意识不够充分,引起安全问题。
展开来说,编写网站的程序员贪图方便照搬了网上开源的CMS源码,对于一些必须严格执行访问控制的功能点没进行检查。我们知道系统如果没有访问控制,会让非法用户任意跳转页面,或者操作资源。我们应该首先验证身份,再根据授权情况给予放行等操作。一般的验证方式要么写在每个功能页之中,要么就写在一个文件里,通过文件包含去应用所有功能页,我们还会使用cookie或者session、token等技术来快速验证身份。
问题就出在某些功能页没有写上验证代码或者没有引用验证代码,攻击者通过目录扫描技术很快就能找到这些文件,通过工具或者人工检查找到缺少验证的地方,就能直接绕开访问控制,实现跳转。
二、top2
新的top2是加密失败(原top3 敏感数据泄露),网上文章说这是“广泛的症状不是根本原因”,那根本原因是啥啊.……就我所学来看,加密失败与密码学发展有相关性,与当前加密技术、编码技术相关。比方说最普遍的MD5存在哈希碰撞,彩虹表,很多数据库中保存的密码仅简单的加密,很容易被破解为明文,连盐都不加,加密后的md5值放在在线工具一下子就被破解出来了。另一个影响比较大的是保存系统认证的密码、凭证等,如windows的LM Hash和NTLM Hash加密后的内容被破解,让攻击者能实现在内网中提权以及横向移动,危害性很大。
那么需要我们找到更安全的加密技术,比如采取国产加密算法等。同时它上升到top2应该引起人们对密码学关注,根据本人在学校密码学学习,我们用的技术趋于过时,存在极大的被破解风险,就比如随着计算机的算力提高DES都存在被暴力破解。而在未来量子计算技术很有可能打破现有大部分的加密方式。
加密失败举例子说明常见的找到配置文件,根据规则替换掉攻击者想要的密码。
三、top3
新的top3是注入(原top1)学习web安全首先接触的是SQL注入漏洞,xss漏洞(漏洞之王),注入的危害度相比以前有所下降,我想跟如今的安全技术提高有关。从1998年sql注入刚引起瞩目到2017年,这十几二十年的技术发展,频频爆出的注入漏洞一次又一次的提醒开发人员要对传进来的参数进行严格的过滤、控制,我很赞同那个观点–“一切来自用户的输入都是不可信的”。霍林老师在报告中提到,以往很多技术在设计之初是不考虑安全问题的,谁也无法预料未来攻击者会以何种方式找到漏洞并且攻击。比如SQL注入,设计之初没考虑好若有人存心构造payload闭合select语句会产生如此大的危害。
立足当下,我们依然要严格的对传入的参数进行严格的过滤、限制。
四、top4
新的top4是不安全的设计,这是新上榜的威胁,取代了原来的xxe漏洞。它的上榜体现了安全相关从业人员、开发人员正在寻求更多的安全模式,在设计应用或者流程之初就要考虑到安全性。
不安全的设计说白了类似上一点提到的,设计者在关键功能点没有进行细致的安全考虑,出现了验证的漏洞,支付逻辑漏洞,业务逻辑漏洞等安全问题。
比如前后端验证没做好,在某些支付逻辑漏洞中,仅通过修改物品的单价或者数量就能实现对最后价格的修改,0元购不是梦;再比如,任意密码找回,某些验证码的安全机制设计得并不完善,易被绕过;有的验证码不限制次数导致攻击者可以通过爆破求出验证码;还有的验证码允许复用,既先合法进行业务拿到合法的验证码,然后将该验证码用于找回其他任意账户的密码等,这些都是在逻辑上存在的安全问题。
五、top5
新的top5是安全配置错误(原top6),这仍是管理人员疏忽的地方,很多漏洞是基于某些框架、语言的特性利用的,比如php在低版本会存在一些魔术符号,若被错误开启,或者默认开启,攻击者会通过这些错误的安全配置进行攻击。在安全开发我们往往寻求最小特权原则,不必要的功能我们要严格限制,给予用户或者系统实现某种业务最基本的功能权限就足够了,比如一些仅用来留言的功能点,没必要配置其能够解析命令,又比如说宏病毒、eval函数,很多时候我们可以通过禁止宏、禁用eval函数来规避它们被攻击者恶意利用。
再者,我们应该更加注重自身的安全意识培养,对于使用框架或者其他情况,面对大量的可控配置,我们要熟知涉及到安全问题的配置信息,严格的遵守操作手册,对默认配置进行修改,对权限进行合理的增删。
六、top6
新的top6是脆弱的和过时的组件(原top9使用存在已知漏洞的组件)。不难看出这也是人为因素占据大部分责任的威胁。
在web应用、操作系统、数据库管理系统等诸多方面,为了实现不同的需求、便利操作,往往人们选择使用第三方组件、控件,那么这些组件出现安全问题将直接危害到它的载体也就是会危害设备或者系统。在去年年末爆发的log4j2安全漏洞,它是apache推出的日志系统,被广泛使用在apache的产品中,它存在任意代码执行漏洞,使用该组件的所有资产均受到威胁。
七、top7
新的top7是认证和授权失败(原top2)。说明标准化框架发挥了作用。它包括密码、密钥、会话token、用户信息以及与用户身份验证有联系的信息被篡改、伪造、破坏。
比如验证来源时可以通过修改HTTP报文中的数据来伪造来源;很多时候认证和授权为了便利仅进行对某些数据字段的验证,比如状态码,这是十分危险的,因为攻击者可以修改。
八、top8
新的top8是软件和数据完整性被破坏。这是新增的威胁,推测其要实现的战术,有破坏水印对被保护的资产进行恶意泄露;对生产环境的软件进行破坏,导致设备异常如大停电,可能与apt有关。
九、top9
新的top9是安全日志记录和监控失败(原top10)。该问题会严重影响可见性和取证,如我在本篇文章开头处做出的预言那样分析,此类威胁程度会越来愈严重,下次更新它的排名应该会更高。
查阅学习ATT&CK时,我注意到当前的一些高频攻击技术常常伪装自己,比如重命名,这个时候就需要防守方检测表里不一名字的情况,在安全审计的时候提高警惕。
十、top10
新的top10是服务器请求伪造SSRF,是新上榜的安全威胁。了解到它上榜的原因,其中一个是它是安全社区中呼声最高的,同我在文章开头所说的那用,我认为这是内网安全即将迎来下一波风险挑战的信号。
总结:
owasp 仅是一项参考基准,我们可以通过它来大致判断安全的未来走势,也应该通过了解它来加强我们的安全意识。老话重提,上述top10有相当多的威胁是本能避免的,事故就是出于人的疏忽,意识薄弱,或者在一些敏感问题上思想觉悟不够高。是人在贪图方便、利益等。
有时我们不能只掌握技术,还应该要有高度的自觉性,责任心,对社会负责更要对国家负责。