Zadig + 洞态 IAST:让安全溶于持续交付
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/v1 kind: Deployment metadata: labels: app: dongtai-java-agent-demo name: dongtai-java-agent-demo spec: 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=java AUTH_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/v1 kind: Deployment metadata: labels: app: dongtai-java-agent-demo-iast name: dongtai-java-agent-demo-iast spec: 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,让工程师更专注创造!
欢迎加入 开源吐槽群🔥

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
聊一聊数据库的行存与列存
目录 存储方式比较 优缺点比较 行存与列存实验 选择建议 注意事项 好多人最开始学习数据库的时候,是关系数据库,数据以表格形式存储,一行表示一条记录。其实这种就是典型的行存储(Row-based store),将表按行存储到磁盘分区上。 而一些数据库还支持列存储(Column-based store),它将表按列存储到磁盘分区上。 存储方式比较 这两者的差异如下图: 从图上可以看出,行存的时候,一行记录的属性值存储在临近的空间,然后接着是下一条记录的属性值。 而列存的时候,单个属性所有的值存储在临近的的空间,即一列的所有数据连续存储的,每个属性有不同的空间。 这里,大家可以自行思考一下这两种那种更适合查询,那种更适合修改?在数据写入上的对比: 1)行存储的写入是一次完成。写入建立在操作系统的文件系统上,可以保证写入过程的成功或者失败,数据的完整性因此可以确定。 2)列存储由于需要把一行记录拆分成单列保存,写入次数明显比行存储多,再加上磁头需要在盘片上移动和定位花费的时间,实际时间消耗会更大。所以,行存储在写入上占有很大的优势。 3)还有数据修改,这实际也是一次写入过程。所以,数据修改也...
- 下一篇
钟珊珊:被爆锤后的工程师会起飞|OneFlow U
钟珊珊,一流科技工程师(实习),本科毕业于中山大学信息管理与信息系统专业,现在是中山大学计算机学院的准研究生。 大学期间,她担任多个项目的主要负责人,并在数据驱动创新研究等高校大赛斩获了一众奖项,积累了技术实践经验。毕业后,在师兄师姐的推荐下,她来到 OneFlow 实习。 她平时喜欢弹吉他,自称弹得并不怎么样,但嘈嘈切切错杂弹让她感觉很自由、快乐、且放松。她似乎还有点随性,大四时,她把 GPA 排名刷到了专业第一,但这时已经不评奖学金了;她选择保研本校的中山大学计算机学院,是因为这样搬宿舍不会太累…… 以下是钟珊珊自述。 中山大学的院系设置比较有趣,计算机学院、软件学院、电子与信息学院、智能工程学院、人工智能学院等都有 AI 方向的专业。其中,人工智能学院在珠海校区,所以读研我更倾向于在广州的计算机学院,这样的话,搬宿舍不用太累。 大四时,我把 GPA 排名刷到了第一,但这时我们已经不评选奖学金了呜呜呜……在学习上,我觉得多做笔记非常重要。当然,课本上的也不是都要一点不落地记下来,而是对课程中自己感兴趣的点深入挖掘,多在课堂分享,多找老师讨论。 对我来说,学一项东西最快的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案