RASP技术
在2013年的时候乌云研发了应该是国内第一款商业:防护云
。借助于PHP的auto_prepend_file
和Java的Filter
特性我们实现了这两种语言层的攻击防御。在2014年RASP
(Runtime application self-protection
运行时应用自我保护)技术提出之前“防护云”早就已经实现了基于客户端拦截和云端可视化分析为一体化的安全防御系统研发。
Runtime application self-protection
一词,简称为RASP。它是一种新型应用安全保护技术,它将保护程序像疫苗一样注入到应用程序中,应用程序融为一体,能实时检测和阻断安全攻击,使应用程序具备自我保护能力。当应用程序遭受到实际攻击伤害,就可以自动对其进行防御,而不需要进行人工干预。
传统的WAF(网站防火墙)一般都是基于流量解析的(CDN、硬件盒子),他们的面临如下几个比较严重的问题:
- 无法精准的解析Http协议,可能会直接导致漏洞或误报。
- CDN类型的防御找到用户真实IP就可以绕过防御。
- 无法结合应用程序运行时环境分析黑客攻击。
- 没有后门扫描功能,无法监控用户文件系统。
- 硬件盒子类无法及时更新规则,针对新型漏洞防御能力较低。
- 溯源难、安全响应速度较慢。
- WAF大部分都是基于正则来实现的,导致绕过率较高。
- 通常WAF规则只能应对已经公开的通用漏洞。
- 无法精准的获取数据库最终执行的SQL语句、Java表达式(
Ognl
、SpEL
、MVEL2
),所有的检测只能针对请求参数。 - 不支持或者难支持一些比较复杂的业务系统和框架,如
Spring MVC
、等。
- 灵蜥云端提供了攻击可视化功能,可以近实时对应用进行监控、分析,同时也提供了云端规则实时同步、动态补丁下发等特色功能。
- 灵蜥客户端嵌入了用户运行时环境,可以非常准确的对黑客攻击参数进行解析,当黑客访问后门文件时可以实时防御,同时还可以对用户请求对参数进行净化或拦截处理,一定程度上避免了由于程序误报导致对用户应用系统不可用等问题。
- 新版灵蜥实现了对程序语言底层API的防御,提供了更加强大的基于行为事件的拦截,可以轻易的拦截到黑客最终执行的恶意程序、命令、SQL语句等功能,而这些防御能力是传统的WAF难以实现的。
- 灵蜥独特的请求参数净化功能,可以把疑似攻击的请求参数值经过特殊的转义后转换成对服务端无攻击性的参数。以净化代替请求阻断可以有效的避免误报导致的业务无法正常使用的问题。
- 灵蜥插件机制允许用户实现定制化防御,可针对用户自研发或已爆发漏洞但无法对源码进行完善的系统进行定制化防御。
- 灵蜥
Java Agent
针对Java安全做了深入的研究,对NIO
、Spring MVC
框架、Java其他特性都做了深入支持。 - 对于未公开的通用漏洞或者企业内部自主开发的系统所产生的攻击可实现自动拦截。
- 快速定位漏洞点,可直观的看到黑客攻击调用链。
- 支持
Attach
(附加灵蜥Agent到Java进程的方式)模式运行,已实现无需重启容器或服务即可实现防御。 - 自适应能力强大!灵蜥基于
Java Servlet API
和JDBC API
实现了对接口实现类的方法级别Hook。理论上灵蜥已经实现了支持一切标准的Web容器和一切基于JDBC的数据库驱动
。 - 支持对方法调用Hook的支持。
- Agent与用户业务高度的紧密性,一旦Agent出现任何异常可能是致命的(如错误的使用了ASM的操作指令去修改类、类验证错误等),所以对Agent自身的稳定性、兼容性要求非常高,其次是一旦嵌入到用户环境就非常容易遭到质疑,即便是用户自己的bug、性能消耗可能也会归咎于是Agent造成的。
- 客户端防御消耗着用户服务器CPU、内存资源,对Agent的效率和性能消耗要求较高。
- 不同的开发语言需要去独立适配,如:PHP和Java的Agent实现方式都重度依赖语言的实现方式,两则之间截然不同。
- 部署、防御方式较为麻烦,实现容器的自动安装需要做适配,Attach机制虽然可以一定程度的解决这个问题。
个人认为以上缺陷最为致命的就是稳定性,尤其是涉及到字节码操作、类加载、异常处理等问题一旦处理不好就会全功尽弃!通过Agent机制获取的东西多了,但是与之而来的稳定性要求也就越高了,所以我们在追求可用性的同时稳定性应该永远的放在第一位。