源码分析 首先我们来看一下 ENGINEENTRYPOINTCLASS 即 com.secnium.iast.core.AgentEngine这个类。 install方法通过反射被调用,入参里的Instrumentation inst对AOP功能的实现十分重要,我们继续跟着inst看下去。agentEngine.init(mode, propertiesFilePath, inst);方法分别调用了各个引擎的init方法,其中的TransformEngine明显...
源码分析 首先我们来看一下 ENGINEENTRYPOINTCLASS 即 com.secnium.iast.core.AgentEngine这个类。 install方法通过反射被调用,入参里的Instrumentation inst对AOP功能的实现十分重要,我们继续跟着inst看下去。agentEngine.init(mode, propertiesFilePath, inst);方法分别调用了各个引擎的init方法,其中的TransformEngine明显和...
例如Java提供了一个instrumentation 接口。通过该接口,可以以一种标准的方式,在启动应用时添加javaagent参数来加载插桩探针,从而实现动态数据流污点追踪。大致流程如下: 图:Java实现动态数据流污点追踪流程 如图所示,通过红色的JVM Agent路径,就可以获取到Hello类中的方法何时被调用、接受到了哪些参数等信息。更进一步,就...
例如Java提供了一个instrumentation 接口。通过该接口,可以以一种标准的方式,在启动应用时添加javaagent参数来加载插桩探针,从而实现动态数据流污点追踪。大致流程如下: 如图所示,通过红色的JVM Agent路径,就可以获取到Hello类中的方法何时被调用、接受到了哪些参数等信息。更进一步,就可以阻断它的执行(RASP的功能),甚至...
如图所示,通过红色的JVM Agent路径,就可以获取到Hello类中的方法何时被调用、接受到了哪些参数等信息。更进一步,就可以阻断它的执行(RASP的功能),甚至修改它的执行逻辑。当然,即便官方已经提供了标准做法让插桩探针的研究少走弯路,但是构建成熟的Java探针并非易事。
首先看一下整个的代码逻辑,项目总共分为 3 个模块,分别是 iast-agent、iast-core、iast-inject。iast-agent 入口类是 com.secnium.iast.agent.Agent,与任何一家使用 java agent 技术的产品一样,洞态也是使用了 Sun JVM Attach API 将 agent 附加到指定的 Java 进程上。com.secnium.iast.agent.IAST...
如果语言本身提供了插桩的接口,那么探针开发的难度将会大大降低。例如Java提供了一个instrumentation 接口。通过该接口,可以以一种标准的方式,在启动应用时添加javaagent参数来加载插桩探针,从而实现动态数据流污点追踪。大致流程如下: 图:Java实现动态数据流污点追踪流程 ...
如图所示,通过红色的JVM Agent路径,就可以获取到Hello类中的方法何时被调用、接受到了哪些参数等信息。更进一步,就可以阻断它的执行(RASP的功能),甚至修改它的执行逻辑。当然,即便官方已经提供了标准做法让插桩探针的研究少走弯路,但是构建成熟的Java探针并非易事。
9. Python Agent增加 str.__new__, bytes.__new__, bytearray.__init__ 方法改写 相关 PR:https://github.com/HXSecurity/DongTai-agent-python/pull/78 10. Python Agent 增加 pickle.load, pickle.loads 策略规则以检测不安全的反序列化漏洞, 增加 str 相关的方法策略规则以完善污点链路收集 相关 PR:h...
创建&部署 注入 Agent 的 demo 服务 在Zadig 中复制待测试服务配置,修改 K8s resource name 以及 label&selector 等,避免和现有服务冲突。 配置中添加 initContainer,提前将 agent 下载到服务所在容器中。 修改服务启动命令,添加 -javaagent:/path/to/agent.jar ...