打开网易新闻 查看精彩图片

基于运行时证据链的应用内生防护实践

打开网易新闻 查看精彩图片

一、应用攻击为什么越来越难判断

Web 应用始终处于业务流量与攻击流量交汇的位置。一次数据库查询,可能是正常的数据检索,也可能是 SQL 注入;一次系统命令调用,可能属于运维功能,也可能正在执行攻击者提交的指令;文件访问、网络连接和表达式求值,同样可能由正常业务触发,也可能成为攻击链中的关键环节。

面对这些行为,只分析HTTP 请求并不总能得到准确结论。编码、序列化和框架转换可能改变输入形态,使边界侧看到的内容与应用最终执行的内容并不完全一致;正常业务也可能包含 SQL 关键字、特殊字符和复杂表达式。若仅依据单一特征判断,容易在攻击绕过与业务误报之间反复拉扯。

真正关键的问题不是“这个请求看起来是否可疑”,而是“外部输入进入应用后,最终触发了什么行为”。运行时应用自我保护技术 RASP(Runtime Application Self-Protection)正是从应用内部回答这个问题。

打开网易新闻 查看精彩图片

图注:边界检测与运行时检测的观察视角

打开网易新闻 查看精彩图片

二、从请求到执行,构建运行时证据链

RASP 将安全观测点部署在应用进程内部。当请求进入应用后,探针持续关联请求参数、业务调用和关键执行行为,在攻击真正抵达数据库、命令解释器、表达式引擎、文件系统或网络组件时完成检测。

运行时判断主要回答三个问题:第一,行为由谁触发,即危险数据是否来自当前外部请求;第二,应用最终执行了什么,即关键方法接收到的真实参数和目标对象;第三,外部输入与内部执行是否存在真实关联。请求中出现特殊字符不代表攻击一定成立,应用调用高风险接口也不代表业务行为一定恶意。只有外部可控数据进入关键执行位置并形成危险语义时,证据链才真正闭合。

打开网易新闻 查看精彩图片

图注:从请求来源到关键执行行为的证据关联

以数据库访问为例,单独出现SELECT、引号或注释符,并不足以直接判定 SQL 注入。更可靠的方式,是结合请求输入、最终 SQL 结构、参数化情况和执行上下文,判断外部数据是否改变了原有查询语义。这种“请求来源 - 执行参数 - 行为语义”的关联,使安全判断从静态特征匹配走向对真实执行过程的理解。

打开网易新闻 查看精彩图片

三、Java RASP 如何进入应用内部

Java 应用拥有成熟但复杂的运行时生态。Spring、Tomcat、Jetty 以及不同数据库和网络组件形成大量调用层级。要在尽量减少业务代码改造的情况下获得运行时视野,需要深入 JVM 的真实执行过程。

Java RASP 通过 Java Agent 接入目标 JVM,并利用字节码增强技术在关键类和方法中建立安全观测点。对于已经运行的应用,也可通过动态附加方式加载探针,降低因安全能力部署而改造业务系统的成本。目标方法被调用时,探针获取必要的执行参数,并与当前请求上下文、调用路径和检测策略进行关联。加载、观测和检测模块相互分工,并与业务类加载环境保持隔离。

打开网易新闻 查看精彩图片

图注:Java RASP 加载、观测与检测机制

整个过程可概括为三个环节:首先接入运行环境,将探针加载到目标JVM;其次观察数据库、命令、表达式、网络、文件等关键行为;最后关联请求来源、执行参数与行为语义,根据策略执行放行、告警或阻断。RASP 因而不需要猜测应用接下来可能做什么,而是在行为真正发生的位置作出判断。

打开网易新闻 查看精彩图片

四、一套运行时机制覆盖多类应用风险

不同攻击最终会落到不同执行位置,但其检测基础具有共性:观察应用实际执行参数,并判断这些参数是否受到外部输入影响。现有Java RASP 能力可归纳为四类。

  • 数据进入执行边界:针对SQL 注入、命令执行和表达式注入等风险,判断请求输入是否进入查询、命令或表达式求值过程,并产生危险执行语义。

  • 应用发起外部访问:针对SSRF、JNDI 和 XXE 等风险,关注访问目标、协议、解析过程及调用上下文,识别由外部输入驱动的异常网络行为。

  • 应用操作关键资源:针对文件读取、写入、上传、删除、重命名、包含和路径穿越等风险,结合请求来源、目标路径与操作类型,判断资源访问是否偏离正常业务边界。

  • 对象与响应处理:针对反序列化和反射型XSS 等风险,在对象恢复或响应输出阶段观察真实处理结果,确认危险对象链或请求载荷是否实际进入后续执行与响应过程。

这些能力并非为每个攻击载荷维护一份孤立黑名单,而是围绕应用运行时关键行为建立统一观测与检测框架。风险类型可以持续扩展,来源、执行和语义之间的关联方法保持一致。

打开网易新闻 查看精彩图片

五、检测之后,还要保障业务稳定

应用安全不仅需要发现攻击,也必须控制防护能力对正常业务的影响。面对证据充分的攻击行为,RASP 可根据策略在执行位置阻断;对于需要进一步研判或证据不足的行为,可以仅生成告警,并保留请求、执行参数和调用路径等信息。

针对业务自身的特殊调用,可通过白名单进行收敛;检测超时保护避免安全判断长时间占用业务线程;请求级事件去重减少同一攻击链产生的大量重复告警。因此,运行时防护不是简单地“看到危险接口就拦截”,而是在检测强度、处置动作和业务连续性之间建立可配置的平衡。

打开网易新闻 查看精彩图片

六、从单个 JVM 到云铠应用防护闭环

单个Java 探针解决应用进程内部“如何看见、如何判断、如何处置”的问题。对于拥有数千乃至数万台主机和容器节点的企业环境,还需解决资产发现、探针部署、策略管理和事件运营问题。

山石云铠CWPP 通过Controller 对大规模 Agent 进行统一管理。Agent 持续发现主机或容器中的 Web 资产,并结合运行环境、应用类型和注入条件判断目标是否具备防护条件。对于符合条件的 Java 应用,云铠应用防护完成 RASP 探针推送与注入。探针进入应用后,在关键执行位置开展运行时检测,根据策略执行告警或阻断,并将安全事件回传到管理侧,支持统一查看和运营。

打开网易新闻 查看精彩图片

图注:云铠应用防护的资产、注入、检测与运营闭环

由此形成“Web 资产发现 - 注入条件判断 - 探针推送与注入 - 运行时检测与阻断 - 事件回传与统一运营”的完整闭环。其中,云铠负责大规模环境中的资产与策略编排,Java RASP 负责应用进程内部的行为观测与安全处置。两者结合,将单个 JVM 内部的检测能力转化为可集中管理、可持续运营的应用防护能力。

打开网易新闻 查看精彩图片

七、结语

应用攻击的复杂之处,在于危险行为往往与正常业务共享相同接口。只看请求特征,可能无法还原应用最终执行的真实语义;只看单个系统行为,又难以判断它是否受到外部输入控制。

Java RASP 将安全观测点推进应用内部,通过关联请求上下文、执行参数、调用路径与行为语义,构建从请求到执行的运行时证据链,使检测结果更具依据,使阻断动作更接近攻击真正发生的位置。在此基础上,云铠 CWPP 进一步打通Web 资产发现、探针推送、运行时防护和统一运营流程,让应用内生防护能力在大规模业务环境中持续落地。

山石网科是中国网络安全行业的技术创新领导厂商,由一批知名网络安全技术骨干于2007年创立,并以首批网络安全企业的身份,于2019年9月登陆科创板(股票简称:山石网科,股票代码:688030)。

现阶段,山石网科掌握30项自主研发核心技术,申请540多项国内外专利。山石网科于2019年起,积极布局信创领域,致力于推动国内信息技术创新,并于2021年正式启动安全芯片战略。2023年进行自研ASIC安全芯片的技术研发,旨在通过自主创新,为用户提供更高效、更安全的网络安全保障。目前,山石网科已形成了具备“全息、量化、智能、协同”四大技术特点的涉及基础设施安全、云安全、数据安全、应用安全、安全运营、工业互联网安全、信息技术应用创新、AI安全、安全服务、安全教育等10大类产品及服务,50余个行业和场景的完整解决方案。