ป้ายกำกับ: relay

Trivy: ตัวสแกนหาช่องโหว่ความปลอดภัยTrivy: ตัวสแกนหาช่องโหว่ความปลอดภัย

เป็นเครื่องมือประเภท Vulnerability Scanner (ตัวสแกนหาช่องโหว่ความปลอดภัย) แบบ Open Source ที่ฮิตที่สุดตัวหนึ่งในยุคนี้เลยครับ เพราะมันทำงานเร็ว แม่นยำ และใช้งานง่ายมาก สามารถสแกนหาช่องโหว่ได้ตั้งแต่ Container Images, File Systems, Git Repositories ไปจนถึง Infrastructure as Code (IaC) อย่างพวก Terraform หรือ Kubernetes configuration บทความนี้จะพาทุกคนไปลุยตั้งแต่ขั้นตอนการติดตั้งไปจนถึงคำสั่งสแกนที่ต้องใช้จริงในชีวิตประจำวันครับ


วิธีติดตั้ง Trivy (Installation)

เราสามารถติดตั้ง Trivy ได้หลายวิธีตามระบบปฏิบัติการที่ใช้งานอยู่ครับ เลือกวิธีที่สะดวกได้เลย


สำหรับ Linux (Ubuntu/Debian)

ให้รันชุดคำสั่งนี้เพื่อเพิ่ม Repository และติดตั้งผ่าน apt

sudo apt-get install wget apt-transport-https gnupg lsb-release
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | gpg --dearmor | sudo tee /usr/share/keyrings/trivy.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/trivy.gpg] https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/trivy.list
sudo apt-get update
sudo apt-get install trivy

สำหรับ macOS (ผ่าน Homebrew)

brew install aquasecurity/trivy/trivy


สำหรับ Windows (ผ่าน Scoop)

scoop bucket add trivy https://github.com/aquasecurity/scoop-trivy.git
scoop install trivy

เช็คว่าพร้อมใช้งานหรือยัง? ลองพิมพ์คำสั่ง trivy --version ถ้ามีเลขเวอร์ชันขึ้นมา แสดงว่าติดตั้งเรียบร้อยแล้วครับ!


วิธีใช้งาน Trivy สแกนในรูปแบบต่าง ๆ (How to Use)

จุดเด่นของ Trivy คือพิมพ์คำสั่งสั้นมาก รูปแบบหลักๆ คือ trivy [ชนิดของสิ่งที่จะสแกน] [เป้าหมาย] มาดูเคสที่ใช้บ่อยกันครับ


สแกน Container Image (ที่นิยมที่สุด)

ถ้าต้องการเช็คว่า Docker Image ของเรามีช่องโหว่ (CVEs) ซ่อนอยู่ไหม ให้ใช้คำสั่ง image
trivy image python:3.9-alpine
Trivy จะดาวน์โหลดฐานข้อมูลช่องโหว่มาแป๊บหนึ่ง แล้วจะพ่นตารางสรุปออกมาให้เห็นเลยว่าเจอช่องโหว่ระดับ Critical, High, Medium, Low กี่จุด


สแกนโปรเจกต์/ซอร์สโค้ดในเครื่อง (File System)

ถ้าเราเปิดโฟลเดอร์โปรเจกต์ค้างไว้ แล้วอยากรู้ว่า Package หรือ Dependencies (เช่นใน package.json, go.mod, requirements.txt) มีช่องโหว่ไหม ให้ใช้คำสั่ง fs (Filesystem)
trivy fs /path/to/your/project


สแกนหาความเสี่ยงในโค้ด Infra (IaC Scanning)

Trivy สามารถตรวจ Configuration ที่ไม่ปลอดภัยได้ด้วย เช่น เปิดบอร์ดสาธารณะใน Kubernetes หรือตั้งค่า Security Group ของ Terraform หลวมเกินไป
trivy config /path/to/terraform/or/k8s/files


ทริคเด็ด: เทคนิคการกรองผลลัพธ์ (Advanced Tips)

เวลาสแกนจริง บางครั้งผลลัพธ์มันยาวจนล้นหน้าจอ หรือเราอยากจะเอาไปต่อยอดทำระบบอัตโนมัติ (CI/CD Pipeline) นี่คือคำสั่งเสริมที่ช่วยได้เยอะครับ

  • กรองเอาเฉพาะช่องโหว่ร้ายแรง (Critical และ High)
    trivy image --severity HIGH,CRITICAL nginx:latest
  • ส่งผลลัพธ์ออกเป็นไฟล์ JSON (เผื่อนำไปใช้ต่อในระบบอื่น)
    trivy image -f json -o result.json node:lts
  • กรองเอาเฉพาะช่องโหว่ที่มีตัวอัปเดตแก้แล้ว (Ignore Unfixed)
    บางช่องโหว่ถูกค้นพบแต่ยังไม่มี Patch ออกมาแก้ ถ้าเราไม่อยากให้มันโชว์ให้รกตา ให้ใส่ flag นี้
    trivy image --ignore-unfixed ubuntu:22.04

สรุป

Trivy เป็นเครื่องมือประเภท “Snyk หรือ Dependency-Check ตัวเล็กที่ทำงานไว” เหมาะมากสำหรับการใส่ไว้ใน CI/CD Pipeline (เช่น GitHub Actions, GitLab CI) เพื่อสั่งให้มันสแกน Docker Image ทุกครั้งก่อนที่เราจะกด Deploy ขึ้น Production ครับ ช่วยบล็อกโค้ดหรืออิมเมจที่มีช่องโหว่ไม่ให้หลุดออกไปข้างนอกได้เป็นอย่างดี


อ่านเพิ่มเติม