เป็นเครื่องมือประเภท 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) ซ่อนอยู่ไหม ให้ใช้คำสั่ง imagetrivy 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 ครับ ช่วยบล็อกโค้ดหรืออิมเมจที่มีช่องโหว่ไม่ให้หลุดออกไปข้างนอกได้เป็นอย่างดี
อ่านเพิ่มเติม