写点什么

Zadig + 洞态 IAST:让安全溶于持续交付

作者:KodeRover
  • 2022 年 6 月 28 日
  • 本文字数:2282 字

    阅读完需:约 7 分钟

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 两种语言的应用漏洞检测。

❗️注意:主要用于 开发环境测试环境,即只需单次访问即可实行安全检测,并不适用在并发量高的生产环境 (性能测试报告)。

准备工作

  1. Zadig 中待开启 IAST 功能的服务,下面提供一个示例服务,服务名:demo ,服务 YAML 配置如下(Zadig 新建服务):

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
复制代码
  1. 获取 DongTai backend 服务,有以下两种方式:使用洞态官方提供的 SaaS 版本使用Docker-Compose或者 Kubernetes完成私有化安装 安装文档

  2. 我们以第一种方式为例,使用动态官方提供的 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 脚本:

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 服务

  1. 在 Zadig 中复制待测试服务配置,修改 K8s resource name 以及 label&selector 等,避免和现有服务冲突。

  2. 配置中添加 initContainer,提前将 agent 下载到服务所在容器中。

  3. 修改服务启动命令,添加 -javaagent:/path/to/agent.jar

  4. 新建服务,服务名: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"
复制代码
  1. 将新建服务 demo-with-iast 部署到环境中(Zadig 创建环境),查看对应环境中服务的日志,出现如下日志则意味着 agent 注入成功。

  1. 基于新部署的 demo-with-iast服务,运行服务的自动化测试 &功能测试,触发内部函数/服务的调用,agent 会自动的对运行过程中的漏洞信息进行采集与上报。

至此,漏洞信息已完成采集上报,可以在刚才获取的 Dongtai backend 中查看当前服务漏洞相关信息。

配置自动化工作流

我们如果想要实时跟踪服务中的漏洞信息,需要我们将 IAST 融入我们的 DevOps 流程中。下面我们假设 demo 服务已经拥有 Zadig 工作流 &构建的配置(Zadig 工作流配置),这时我们只需要两步就轻松能将 IAST 加入我们现有流程中。

  1. 将我们刚才配置的服务 demo-with-iastdemo 服务的构建绑定。

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

运行效果

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

至此我们已将 IAST 检测与 Zadig 交付流程无缝结合起来,工程师可以随时对业务服务的更新进行漏洞检测,更加安全可靠的迭代产品。


Zadig,让工程师更专注创造!欢迎加入 开源吐槽群🔥


Zadig on Github https://github.com/koderover/zadig

Zadig on Gitee https://gitee.com/koderover/zadig

发布于: 刚刚阅读数: 3
用户头像

KodeRover

关注

软件交付更丝滑~ 2022.04.06 加入

Zadig 是 KodeRover 团队基于 K8s 自主研发的开源分布式持续交付产品,重点解决企业级软件交付验证的痛点,并且 100% 开放源代码

评论

发布
暂无评论
Zadig + 洞态 IAST:让安全溶于持续交付_DevSecOps_KodeRover_InfoQ写作社区