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,讓工程師更專注創造!
歡迎加入 開源吐槽群🔥
- 極速 Zadig 構建效率是這樣煉成的
- 主機基礎設施如何使用 Zadig 做持續交付
- Zadig 環境負載均衡:0 人工干預,極速部署
- 打通了!Jira Zadig 實現需求與研發過程追蹤
- 雲原生 DevOps 現狀調研問卷徵集:KodeRover 聯合 OSCHINA 推出
- Zadig v1.13.0 相信開放的力量,工作流連通一切價值
- 飛書影片會議端到端整合測試工程實踐經驗總結 - Zadig 應用案例
- 在解決了 2961 個使用者反饋後,我做出了這樣的改變...
- 基於 Ingress Controller 在叢集外訪問 Zadig 自測環境(最佳實踐)
- iMile 利用 Zadig 多雲環境周部署千次,跨雲跨地域持續交付全球業務
- 穩!上千微服務接入 Zadig 的最佳姿勢(Helm Chart 篇)
- 穩!上千微服務接入 Zadig 的最佳姿勢(K8s YAML 篇)
- Zadig 洞態 IAST:讓安全溶於持續交付
- TT 語音落地 Zadig:開源共創 Helm 接入場景,環境治理搞得定!
- 00後雲工程師用 Zadig 為企業研發開源節流
- Zadig 構建究竟有何強大?一起來實踐
- 妙盈科技全面實施 Zadig 擁抱雲原生
- Zadig SonarQube,為開發過程安全保駕
- Zadig v1.12.0 推出 VS Code 外掛,全面支援 GitOps ,好工具就要到最後一公里
- 鈦動科技:我們的 Zadig 落地之路