docker scan ตอน 2 ... ยังมีข้อสงสัยอีกนิดหน่อย !!!
Tags: docker, devsecops
Published: 2021-06-02 04:51:46

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i2kfjzidbw9jbb3das2r.jpg)
หลังจากที่เขียนเรื่อง docker scan เสร็จแล้ว ก็ยังนั่งเล่นเพิ่มเติมอีกนิดหน่อย เพราะว่ายังมีข้อสงสัยที่ยังหาเหตุผลและคำตอบไม่ได้ 

## ประเด็นแรก docker scan จะตรวจสอบ application ให้ด้วยไหม
ถ้าลองนั่งเล่นดู จะสังเกตุได้ว่าวิธีที่ docker scan ทำก็คือจะเข้าไปกวาดดูใน container image ดูว่ามีไฟล์อะไรอยู่บ้าง แล้วนำไปเปรียบเทียบกับฐานข้อมูลที่ตัวเองมีอยู่ สิ่งที่สงสัยคือ Snyk ที่ docker scan ใช้เป็นเครื่องมือในการหาช่องโหว่จะรู้จักหรือตรวจสอบ application อื่น ๆ ที่เพิ่มเติมจาก base image ที่เป็น OS ด้วยไหม 

Damn Vulnerable Web Application (DVWA) น่าจะเป็นตัวทดสอบที่ดี เป็นที่รู้จักในวงกว้าง DVWA เป็น web application ที่ถูกสร้างให้มีช่องโหว่อยู่มากมาย ใช้เพื่อการเรียนรู้ด้าน Web Application Security ถ้า docker scan ทราบช่องโหว่ของ DVWA ได้ จะได้ทดสอบในมุมอื่น ๆ ต่อไป จึงทดสอบด้วย container image ที่  vulnerables/web-dvwa ใน Docker Hub
```shell
> docker scan vulnerables/web-dvwa --json --group-issues
```
> คำตอบที่ได้ก็คือ ผลการ scan ไม่รู้ข้อมูลของ DVWA เลย พบแต่ช่องโหว่ของไฟล์ที่ base image ที่เป็น OS [สามารถดูผลทดสอบได้ที่นี่ครับ](https://gist.githubusercontent.com/rdamrong/5c6f3b82c0d7935ff6924ef4ab2e980b/raw/ee09d18e23d8085a7f22aa6556a7bbc01dda9a4b/dvwa.json)

## ประเด็นที่ 2 เจอ option --file <DOCKER_FILE>
พบว่า เมื่อเปรียบเทียบการใช้ --file และ ไม่ใช้ --file ผลของการรายงานช่องโหว่ไม่ต่างกัน เพราะว่าเป็นรายงานที่ได้จากข้อมูลใน Container Image แต่สิ่งที่ต่างกันจะอยู่ในช่วงท้ายของรายงาน พบว่าการใส่ --file มีคำแนะนำเพิ่มเติมถ้าในกรณีที่ base image ที่ใช้อยู่มีช่องโหว่ จากตัวอย่างในช่วงท้ายรายงานจะแนะนำให้ใช้ base image alpine:3 ซึ่งไม่มีรายงานช่องโหว่ แทนตัวเดิมที่ใช้ alpine:3.11.0

```shell
> docker scan -f .\Dockerfile ws-fac

Testing ws-fac...

✗ Low severity vulnerability found in openssl/libcrypto1.1
  Description: Inadequate Encryption Strength
  Info: https://snyk.io/vuln/SNYK-ALPINE311-OPENSSL-1075739
  Introduced through: openssl/libcrypto1.1@1.1.1d-r2, openssl/libssl1.1@1.1.1d-r2, apk-tools/apk-tools@2.10.4-r3, libtls-standalone/libtls-standalone@2.9.1-r0
  From: openssl/libcrypto1.1@1.1.1d-r2
  From: openssl/libssl1.1@1.1.1d-r2 > openssl/libcrypto1.1@1.1.1d-r2
  From: apk-tools/apk-tools@2.10.4-r3 > openssl/libcrypto1.1@1.1.1d-r2
  and 4 more...
  Image layer: Introduced by your base image (alpine:3.11.0)
  Fixed in: 1.1.1j-r0
[...]
✗ High severity vulnerability found in apk-tools/apk-tools
  Description: Out-of-bounds Read
  Info: https://snyk.io/vuln/SNYK-ALPINE311-APKTOOLS-1246343
  Introduced through: apk-tools/apk-tools@2.10.4-r3
  Image layer: Introduced by your base image (alpine:3.11.0)
  Fixed in: 2.10.6-r0



Organization:      damrongsak
Package manager:   apk
Target file:       .\Dockerfile
Project name:      docker-image|ws-fac
Docker image:      ws-fac
Platform:          linux/amd64
Base image:        alpine:3.11.0
Licenses:          enabled

Tested 14 dependencies for known issues, found 11 issues.

Base Image     Vulnerabilities  Severity
alpine:3.11.0  11               5 high, 5 medium, 1 low

Recommendations for base image upgrade:

Minor upgrades
Base Image  Vulnerabilities  Severity
alpine:3    0                0 high, 0 medium, 0 low
```

### ผลรายงานในกรณีที่ไม่ใส่ --file <DOCKER_FILE> เพื่อเปรียบเทียบกัน

```
> docker scan  ws-fac

Testing ws-fac...

✗ Low severity vulnerability found in openssl/libcrypto1.1
  Description: Inadequate Encryption Strength
  Info: https://snyk.io/vuln/SNYK-ALPINE311-OPENSSL-1075739
  Introduced through: openssl/libcrypto1.1@1.1.1d-r2, openssl/libssl1.1@1.1.1d-r2, apk-tools/apk-tools@2.10.4-r3, libtls-standalone/libtls-standalone@2.9.1-r0
  From: openssl/libcrypto1.1@1.1.1d-r2
  From: openssl/libssl1.1@1.1.1d-r2 > openssl/libcrypto1.1@1.1.1d-r2
  From: apk-tools/apk-tools@2.10.4-r3 > openssl/libcrypto1.1@1.1.1d-r2
  and 4 more...
  Fixed in: 1.1.1j-r0
[...]
✗ High severity vulnerability found in apk-tools/apk-tools
  Description: Out-of-bounds Read
  Info: https://snyk.io/vuln/SNYK-ALPINE311-APKTOOLS-1246343
  Introduced through: apk-tools/apk-tools@2.10.4-r3
  From: apk-tools/apk-tools@2.10.4-r3
  Fixed in: 2.10.6-r0



Organization:      damrongsak
Package manager:   apk
Project name:      docker-image|ws-fac
Docker image:      ws-fac
Platform:          linux/amd64
Licenses:          enabled

Tested 14 dependencies for known issues, found 11 issues.
```
### มูลค่าความสุข