欢迎大家来到IT世界,在知识的湖畔探索吧!
欢迎大家来到IT世界,在知识的湖畔探索吧!
RASP(Runtime application self-protection)运行时应用自我保护。Gartner 在2014年应用安全报告里将 RASP 列为应用安全领域的关键趋势。
它将防护功能“ 注入”到应用程序中,与应用程序融为一体,使应用程序具备自我防护能力,当应用程序遭受到实际攻击伤害时,能实时检测和阻断安全攻击,而不需要进行人工干预。
在Java领域里,原理是用 Java Instrumentation 在 class 加载前插入修改的机会。
java.lang.instrument”包的具体实现依赖于 JVMTI 。JVMTI(Java Virtual Machine Tool Interface)是一套由 Java 虚拟机提供的,为 JVM 相关的工具提供的本地编程接口集合。
Java Instrumentation +字节码增强(Javassist & ASM & Byte Buddy…)感兴趣的朋友自己搜索下
WAF VS Rasp
多数情况,遇到的都是基于流量规则的waf防御,waf往往误报率高,绕过率高。WAF、IDS等等,均是对HTTP请求进行分析和处理,并结合请求特征库进行匹配,能做的事情比较有限。
- 只有成功的攻击行为才会触发RASP的报警,而WAF是只要匹配特征就会报警
- WAF很难完全兼容后端应用的特性,导致防护引擎绕过;后端是Java应用,拦截到的却是PHP的攻击特征!
- 可以实现应用热补丁,WAF只能不断加规则 ,规则不断地增加,导致WAF效率下降
做个大家都经历过的比喻,疫情期间,大家戴口罩,打疫苗~~~
WAF,相当于是戴口罩,是在身体(应用)的外层进行拦截。
Rasp,相当于疫苗,在身体(应用)本身产生抵抗能力,是精准抵抗(抗体)
回到技术场景中,比如SQL注入攻击时
WAF只能看到HTTP请求。
Rasp不但能看到完整的SQL语句,还可以和当前的HTTP请求进行关联,并结合语义引擎、上下文等能力,实现对SQL注入的检测。
WAF拦截起来比较吃力,httt://xxx.com/getOrder?id=1,就可以产生各种方式的绕过,给予规则的拦截,就需要,穷举出各种规则。
而且绕过方式,还有更多的奇淫巧技,那是搞安全那帮哥们的专长。
1.内联绕过 /*!44544 关键字 */ ?id=1' /*!42444and*/ '1'='1 判断列数 ?id=1' /*!42444order*/ /*!42444by*/ 3 --+ 判断显示位 ?id=-1' /*!42444union*/ /*!42444select*/ 1,2,3 --+ 2.内联反向思维 /*!大于版本号*/注释内容 ?id=1' /*!84544*/and '1'='1 3.get传参绕过(参数污染) 参数名=/*&正常参数&参数名=*/ ; 例:a=/*&id=1&b=*/ ?id=1' and '1'='1 ?a=/*&id=1' and '1'='1&b=qr*/ 4.奇怪的url编码绕过 /*%!字母*/ ?id=1' /*%!s*/and '1'='1 ?id=1' /*%!sw*/order/*%!sw*/by 4--+ ?id=-1' /*%!sw*/union/*%!sw*/select 1,database/*%!sw*/(),3--+
欢迎大家来到IT世界,在知识的湖畔探索吧!
而对于,Java的编程人员来说,虽然mybatis、hiberate等在框架底层已经实现了对sql注入的防御,另一方面白盒/黑盒扫描器、代码审计等也能解决一部分sql注入问题,sql注入的出现风险被大大降低,但是,未能恰当的使用框架或者sql语句拼接不当的的情况下,仍然可能导致sql注入的风险(如面试常问的mybatis的#和$区别)。
在Rasp的眼中只有JDBC有两种方法执行SQL语句,分别为PrepareStatement和Statement。
只需要在Statement的执行位置,“预埋”好一个点,关注Statement的行为,管它上层攻击是如何进来的,最终收敛到Statement的行为上,在这里拦截危险的行为就能完全避免SQL的注入,如果非得需要Statement执行,再设计一个简单的白名单即可。
性能影响
根据百度开源的OpenRasp的文档中说道:
我们测试了大量的业务系统,也测试了多个开源应⽤;很多金融客户帮助我们进行了全链路的压测。性能影响通常 在 2%~4% 之间,接口响应延迟在 2~8ms 之间,完全可以接受。
总结
通过本文您应该已经初步理解到Rasp的工作原理和应用思路了
下期,我们,写个log4j的漏洞拦截,感受一下Rasp的魅力!
如果对您有帮助,请关注一下这个二流程序员的公众号搜索-> 高级面试工程师,谢谢!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/131267.html