iT邦幫忙

1

利用osv-scanner掃描docker image

  • 分享至 

  • xImage
  •  

利用google釋出的osv-scanner來檢視docker images的安全

實作環境:

CentOS ubuntu皆可。

環境需求:

  1. 已經有docker環境
  2. go 1.18+(流程有簡易設置方式)
  3. git (非必要,有比較方便)

實作

下載go套件

    curl -OL https://go.dev/dl/go1.19.4.linux-amd64.tar.gz
    tar -C /usr/local -xvf go1.19.4.linux-amd64.tar.gz
    

設置 PATH

  • ubuntu的環境

          nano ~/.profile  
          追加一行最後,將現有PATH加入go的bin  
          export PATH=$PATH:/usr/local/go/bin  
          #直接使用或重新登出登入  
          source  ~/.profile  
          #會有版本號代表設置成功  
          go version  
    
  • CentOS的環境

          #追加一行最後,將現有PATH加入go的bin  
          vi ~/.bash_profile  
          export PATH=$PATH:/usr/local/go/bin  
          #直接使用或重新登出登入
          source ~/.bash_profile  
          #會有版本號代表設置成功  
          go version  
    

下載osv-scanner專案

沒git也沒關係,從另外一台git專案下來打包好,傳到這台解壓使用也行

      git clone https://github.com/google/osv-scanner
      cd osv-scanner
      go install github.com/google/osv-scanner/cmd/osv-scanner@v1

開始掃描

拿新舊nginx來驗證

docker pull nginx:latest
docker pull nginx:1.19

go run ./cmd/osv-scanner --docker nginx:latest
Scanned docker image with 142 packages

以上是通常最新的,很容易安全的結果 返回碼是 0
如果最新的也有被掃出,代表官方最新的也還沒來的及更新。(個人看法)

我們來試試舊的來比較...(排版差 大概把顯示內容貼上 真的執行的表格是漂亮的 )

    go run ./cmd/osv-scanner --docker nginx:1.19
    Scanned docker image with 135 packages

    │ nginx:1.19 │ Debian    │ curl             │ 7.64.0-4+deb10u2      │ https://osv.dev/vulnerability/DLA-3085-1 │  
    │ nginx:1.19 │ Debian    │ dpkg             │ 1.19.7                │ https://osv.dev/vulnerability/DSA-5147-1 │  
    │ nginx:1.19 │ Debian    │ gzip             │ 1.9-3                 │ https://osv.dev/vulnerability/DSA-5122-1 │  
    │ nginx:1.19 │ Debian    │ libxml2          │ 2.9.4+dfsg1-7+deb10u1 │ https://osv.dev/vulnerability/DLA-3172-1 │  
    │ nginx:1.19 │ Debian    │ libxml2          │ 2.9.4+dfsg1-7+deb10u1 │ https://osv.dev/vulnerability/DSA-5142-1 │  
    │ nginx:1.19 │ Debian    │ openssl          │ 1.1.1d-0+deb10u6      │ https://osv.dev/vulnerability/DSA-4963-1 │  
    │ nginx:1.19 │ Debian    │ openssl          │ 1.1.1d-0+deb10u6      │ https://osv.dev/vulnerability/DSA-5103-1 │  
    │ nginx:1.19 │ Debian    │ openssl          │ 1.1.1d-0+deb10u6      │ https://osv.dev/vulnerability/DSA-5139-1 │  
    │ nginx:1.19 │ Debian    │ openssl          │ 1.1.1d-0+deb10u6      │ https://osv.dev/vulnerability/DSA-5169-1 │  
    │ nginx:1.19 │ Debian    │ tzdata           │ 2021a-0+deb10u1       │ https://osv.dev/vulnerability/DLA-3134-1 │  
    │ nginx:1.19 │ Debian    │ tzdata           │ 2021a-0+deb10u1       │ https://osv.dev/vulnerability/DLA-3161-1 │ 
    exit status 1

就會列出,並且返回碼是 1

平常使用

使用重點是被掃目標是否存在在docker images清單內
本篇操作範例在 osv-scanner 專案目錄下執行操作

    git pull  
    go run ./cmd/osv-scanner --docker 目標image:版本  

用在針對自己使用的官方image或自製image來做掃描
有返回碼設計,
所以可以稍微自行設計自動化的script排程透過返回碼來定期檢查通報自己的創作或採用的image是不是該更新了。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言