
RASP
从0开始的Java RASP实现
跟着手动操作一下
https://www.cnblogs.com/bitterz/p/15080403.html
https://www.cnblogs.com/bitterz/p/15152287.html
1
新建两个idea项目,RASP和TestRun,
SCA
WAF
部署,搭建南墙和雷池,
内存马
这后面是一些概念的东西,从别的地方抄的
SAST
(Static Application Security Testing)(静态应用安全测试)
SAST 是一种白盒测试方法,它在不运行代码的情况下对源代码或二进制代码进行安全扫描。SAST 工具通过分析代码结构、逻辑和模式来发现潜在的安全漏洞和不良编码实践。
工作原理:
静态分析:SAST工具在应用代码未运行时,通过分析源代码、字节码或二进制代码,查找潜在的安全漏洞。
代码扫描:利用静态分析技术,扫描代码中的常见漏洞模式,如缓冲区溢出、SQL注入、跨站脚本(XSS)等。
技术细节:
数据流分析:追踪变量和数据在代码中的流动,识别可能导致安全问题的数据流。
控制流分析:分析代码的控制结构,查找可能导致漏洞的执行路径。
语义分析:检查代码的逻辑和语义,识别不安全的编码实践和潜在的逻辑错误。
优点:
可以在开发早期发现和修复安全漏洞,减少修复成本。
能够检测代码中的所有路径和状态,提供全面的漏洞报告。
缺点:
误报率较高:因为仅基于代码分析,可能会有一些误报,需要开发人员进一步确认。
依赖代码质量:代码的复杂性和质量可能影响检测效果,复杂代码可能导致漏报。
无法看到执行流。通常需要定制或调参。
使用场景:
开发阶段:在开发早期和中期,帮助开发人员在编码时发现和修复安全问题。
代码审查:作为代码审查的一部分,确保代码的安全性和质量。
DAST
(Dynamic Application Security Testing)(动态应用安全测试)
DAST 是一种黑盒测试技术,通过模拟攻击者的行为来测试正在运行的应用程序,以发现安全漏洞。它不接触源代码,而是通过发送各种输入并观察应用程序的响应来检测潜在的安全问题
输入模糊测试(Fuzzing):向应用发送各种随机或特制的输入数据,观察应用的响应,以发现潜在的漏洞。
爬虫技术:自动化工具遍历应用的所有页面和功能,确保测试覆盖全面。
工作原理:
DAST工具在应用运行时进行黑盒测试,通过发送各种输入和请求来检测应用的安全漏洞。模拟真实攻击者的行为,尝试通过注入恶意输入、探测开放端口、绕过验证等手段发现漏洞。
DAST的优点是:
自动化程度高:可以自动化运行,定期扫描应用,发现新的安全问题。
缺点:
误报率:由于无法了解应用的内部逻辑,可能会产生误报,需要手动验证。
时间消耗:完整的扫描可能需要较长时间,尤其是大型复杂应用。
覆盖不足:无法检测应用的所有路径和状态变化,可能漏报某些内部逻辑漏洞。
无法理解代码逻辑:DAST 无法深入理解代码逻辑,因此可能漏掉一些编码错误。
使用场景:
生产环境:定期对运行中的应用进行安全检测,确保上线后的安全性。也可以在测试环境下用。
安全评估:作为安全评估的一部分,验证应用的实际防御能力。
IAST
(Interactive Application Security Testing)(交互式应用安全测试)
IAST 结合了 SAST 和 DAST 的优点,通过在应用程序内部植入探针,在运行时动态地监测和报告安全漏洞。比如将IAST代理JAR文件放置在Java应用程序的根目录或者指定目录下,并且在启动应用程序时,通过-javaagent参数指定代理JAR文件的路径。
IAST 可以像 SAST 一样看到源代码,也可以像 DAST 一样看到应用程序运行时的执行流。IAST 工具在应用程序运行时工作,通过代理和传感器收集关于其功能和性能的信息,以实时识别漏洞 。
工作原理:
嵌入式代理:IAST工具通过在应用服务器上部署代理,嵌入到应用的运行环境中。代理可以监控和分析应用的执行流程。
实时分析:在应用运行时,IAST工具会实时监控输入、输出、数据流和控制流,分析这些信息以发现潜在的安全漏洞。
组合检测:IAST结合了SAST和DAST的优点,可以在运行时分析源代码和应用行为,提供更全面的检测。
技术细节:
数据流分析:IAST工具能够追踪用户输入的数据流,识别跨越多个函数和模块的潜在漏洞。
行为监控:实时监控应用的行为,识别异常的操作或不安全的行为,如SQL注入、命令注入等。
优点:
上下文感知:能够了解应用的内部状态和运行环境,因此提供的漏洞信息更准确和详细。
实时反馈:开发人员可以在开发和测试阶段实时获得安全反馈,及时修复漏洞。
低误报率:结合了静态和动态分析的信息,通常比单独使用SAST或DAST的误报率更低。
缺点:
性能开销:嵌入代理可能会增加应用的运行开销,影响性能。
依赖环境:需要在特定的运行环境中才能发挥作用,可能不适用于所有开发流程。
使用场景:
开发和测试阶段:特别适合在CI/CD流水线中集成,进行持续监控和检测。
高敏感度应用:对安全性要求高的应用,如金融、医疗等领域。