当前位置:网站首页>Zadig + 洞态 IAST:让安全溶于持续交付
Zadig + 洞态 IAST:让安全溶于持续交付
2022-06-24 18:51:00 【Zadig云原生交付】

IAST 作为当下备受关注的一种安全测试技术,我们如何利用 Zadig 运行时环境管理能力,快速的将 IAST 能力集成到我们的日常工作流程中?
IAST 作为当下备受关注的一种安全测试技术,我们如何利用 Zadig 运行时环境管理能力,快速的将 IAST 能力集成到我们的日常工作流程中?本文中以 Zadig K8s 项目 + Java 服务为例,来了解在 Zadig 中如何为已有服务快速接入 IAST 监测服务漏洞信息,为服务安全保驾护航。
What is IAST & DongTai?
IAST:交互式应用程序安全测试(Interactive Application Security Testing),是近年来兴起的一项新技术,被 Gartner 公司列为信息安全领域的 Top 10 技术之一。它融合了 SAST 和 DAST 技术的优点,IAST 使用运行时代理方法在测试阶段分析&监控应用程序的行为。
DongTai 是一款开源的被动式交互式安全测试(IAST)产品,通过动态 Hook 和污点跟踪算法等实现通用漏洞检测、多请求关联漏洞检测(包括但不限于越权漏洞、未授权访问)、第三方组件漏洞检测等,目前支持 Java、Python 两种语言的应用漏洞检测。
️注意:主要用于 开发环境 和 测试环境,即只需单次访问即可实行安全检测,并不适用在并发量高的生产环境 (参考 IAST 性能测试报告 [1])
Zadig & IAST 运行原理图

准备工作
1. Zadig 中待开启 IAST 功能的服务,下面提供一个示例服务,服务名:demo ,服务 YAML 配置如下(Zadig 新建服务 [2]):
apiVersion: apps/v1kind: Deploymentmetadata: labels: app: dongtai-java-agent-demo name: dongtai-java-agent-demospec: selector: matchLabels: app: dongtai-java-agent-demo template: metadata: labels: app: dongtai-java-agent-demo spec: containers: - name: app-container image: dongtai/dongtai-java-agent-demo:0.0.1
2. 获取 DongTai backend 服务,有以下两种方式:
- 使用洞态官方提供的 SaaS 版本
- 使用 Docker-Compose 或者 Kubernetes 完成私有化安装 安装文档 [3]
我们以第一种方式为例,使用洞态官方提供的 SaaS 服务,注册登录账号,进入项目管理界面:
- 点击页面右上角 「+ Add Agent」
- 在「下载探针」部分可以直接下载或者获取下载链接

这里假设我们获取到的连接是:
AGENT_URL= http://192.168.2.169:8000/api/v1/agent/download?url=http://192.168.2.169:8000&language=javaAUTH_HEADER= 'Authorization: Token 88cab3057e199b95cb0780e2a8ab4771c8874acd'以下是图中 Shell 脚本:以下是图中 Shell 脚本:
curl -X GET "http://192.168.2.169:8000/api/v1/agent/download?url=http://192.168.2.169:8000&language=java" -H 'Authorization: Token 88cab3057e199b95cb0780e2a8ab4771c8874acd' -o agent.jar -k
创建&部署 注入 Agent 的 demo 服务
- 在 Zadig 中复制待测试服务配置,修改 K8s resource name 以及 label&selector 等,避免和现有服务冲突。
- 配置中添加 initContainer,提前将 agent 下载到服务所在容器中。
- 修改服务启动命令,添加 -javaagent:/path/to/agent.jar
- 新建服务,服务名:demo-with-iast,粘贴修改后的配置并保存,修改后的服务 YAML 配置如下:
apiVersion: apps/v1kind: Deploymentmetadata: labels: app: dongtai-java-agent-demo-iast name: dongtai-java-agent-demo-iastspec: selector: matchLabels: app: dongtai-java-agent-demo-iast template: metadata: labels: app: dongtai-java-agent-demo-iast spec: volumes: - name: dongtai-iast-agent emptyDir: {} initContainers: - name: agent-init-container image: curlimages/curl volumeMounts: - name: dongtai-iast-agent mountPath: /tmp args: - "-k" - "-X" - "GET" - ${AGENT_URL} # 替换成前面获取到的 AGENT_URL - "-H" - ${AUTH_HEADER} # 替换成前面获取到的 AUTH_HEADER - "-o" - "/tmp/agent.jar" containers: - name: app-container image: dongtai/dongtai-java-agent-demo:0.0.1 volumeMounts: - name: dongtai-iast-agent mountPath: /agent env: - name: JAVA_TOOL_OPTIONS value: "-javaagent:/agent/agent.jar"
5. 将新建服务 demo-with-iast 部署到环境中(Zadig 创建环境 [4]),查看对应环境中服务的日志,出现如下日志则意味着 agent 注入成功。

6. 基于新部署的 demo-with-iast 服务,运行服务的自动化测试&功能测试,触发内部函数/服务的调用,agent 会自动地对运行过程中的漏洞信息进行采集与上报。
至此,漏洞信息已完成采集上报,可以在刚才获取的 Dongtai backend 中查看当前服务漏洞相关信息。
配置自动化工作流
我们如果想要实时跟踪服务中的漏洞信息,需要我们将 IAST 融入我们的 DevOps 流程中。下面我们假设 demo 服务已经拥有 Zadig 工作流&构建的配置(Zadig 工作流配置 [5])),这时我们只需要两步就轻松能将 IAST 加入我们现有流程中。
- 将我们刚才配置的服务 demo-with-iast 与 demo 服务的构建绑定。

2. 启动工作流,选择服务 demo-with-iast,对我们最新的服务进行部署与验证。

运行效果
回到洞态 backend 界面,点击项目,就可以看到当前服务的漏洞情况分析:

至此我们已将 IAST 检测与 Zadig 交付流程无缝结合起来,工程师可以随时对业务服务的更新进行漏洞检测,更加安全可靠的迭代产品。
参考链接:
[2] https://docs.koderover.com/zadig/v1.12.0/project/service/k8s/#新建服务
[3] https://doc.dongtai.io/docs/category/server-部署指南
[4] https://docs.koderover.com/zadig/v1.12.0/project/env/k8s/#创建环境
[5] https://docs.koderover.com/zadig/v1.12.0/project/workflow/#配置工作流
Zadig,让工程师更专注创造!
欢迎加入 开源吐槽群
边栏推荐
- mysql binlog 数据源配置文档麻烦分享一下
- 论文解读(SR-GNN)《Shift-Robust GNNs: Overcoming the Limitations of Localized Graph Training Data》
- Introduction and tutorial of SAS planet software
- php OSS文件讀取和寫入文件,workerman生成臨時文件並輸出瀏覽器下載
- 敏捷之道 | 敏捷开发真的过时了么?
- Application scenarios of channel of go question bank · 11
- Volcano becomes spark default batch scheduler
- Sentry series satellite introduction and download tutorial
- The verifiable certificate of geoscience remote sensing industry
- Interprétation de la thèse (SR - gnn) Shift Robust GNNS: Overcoming the Limits of Localized Graph Training Data
猜你喜欢

Tkde2022: Dialogue recommendation system based on knowledge enhanced sampling

Set up your own website (8)

three. Basic framework created by JS

IBPS开源表单设计器有什么功能?

60 个神级 VS Code 插件!!

Introduction and tutorial of SAS planet software

特尔携手微软发挥边云协同势能,推动AI规模化部署

Freeswitch uses origin to dialplan

一文理解OpenStack网络

为什么生命科学企业都在陆续上云?
随机推荐
小滴课堂海量数据处理商用短链平台大课
工作6年,月薪3W,1名PM的奋斗史
Unity mobile game performance optimization spectrum CPU time-consuming optimization divided by engine modules
The verifiable certificate of geoscience remote sensing industry
Sentry series satellite introduction and download tutorial
请教一个问题。adbhi支持保留一个ID最新100条数据库,类似这样的操作吗
starring V6平台开发接出点流程
Experience of MDM master data project implementation for manufacturing projects
Microsoft planetary computer (MPC) platform introduction, registration and comparison
FROM_ GLC introduction and data download tutorial
Do you have all the basic embedded knowledge points that novices often ignore?
Use ado Net call stored procedure
一文理解OpenStack网络
请问一下2.2.0版本支持动态新增mysql同步表吗
为什么 useEvent 不够好
A detailed explanation of the implementation principle of go Distributed Link Tracking
cdc+mysql connector从维表中join的日期时间字段会被+8:00,请问阿里云托管的
建立自己的网站(8)
我链接mysql 报这个错 是啥意思呀?
How do programmers do we media?