Từ Code đến System

Kubernetes

Hướng dẫn phát hiện vấn đề bảo mật trong Docker Image với Trivy

Tổng quan

Khi tạo ra 1 Container trong Docker hay 1 Pod trong Kubernetes, thường chúng ta sẽ sử dụng các Image có sẵn trong các tài liệu hướng dẫn. Tuy nhiên, đây không phải là cách hay nhất bởi các Image cũ có thể ẩn chừa các lỗ hổng bảo mật (CVE – Common Vulnerabilities and Exposures).

Vậy có cách nào, hoặc công cụ nào để phát hiện các vấn đề, rủi ro an ninh bảo mật trong Image sử dụng? Câu trả lời có, công cụ trong bài mình sẽ giới thiệu cho các bạn có tên là Trivy.

Trivy là một công cụ quét bảo mật toàn diện và linh hoạt. Trivy có các bộ quét để tìm kiếm các vấn đề liên quan đến bảo mật với nhiều loại như Container ImageFilesystemGit Repository (remote)Virtual Machine ImageKubernetesAWS

Trong bài viết này mình sẽ tập trung vào tính năng quét các vấn đề bảo mật trong Container Image với Trivy

Chuẩn bị

  • Cài đặt Ubuntu version 20.04
  • Cấu hình 2 CPU, 2 GB Ram, 50 GB Disk
  • Trong bài, server của mình có IP 192.168.0.113

Bước 1: Cài đặt công cụ

Cấu hình thư viện

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 -a /etc/apt/sources.list.d/trivy.list

Cài đặt Trivy

sudo apt-get update
sudo apt-get install trivy

Kiểm tra

trivy version

Bước 2: Thực hiện quét Container Image

Quét Image cơ bản

trivy image nginx:1.16

Dễ thấy, Image có 420 vấn đề (UNKNOWN: 7, LOW: 135, MEDIUM: 130, HIGH: 108, CRITICAL: 40)

Quét và chỉ hiển thị các lỗ hổng mức HIGH, CRITICAL

trivy image --severity CRITICAL nginx:1.16
trivy image --severity HIGH,CRITICAL nginx:1.19.2

Tham khảo thêm:

https://aquasecurity.github.io/trivy/v0.36/getting-started/installation/

Xử lý vấn đề bảo mật trong Container Image

Để xử lý vấn đề bảo mật, các đơn giản nhất chúng ta sẽ sử dụng Image version mới nhất, bản rút gọn, ví dụ với Image Nginx thay vì dùng image nginx:1.16 chúng ta sẽ sử dụng Image nginx:1.25.3-alpine-slim

trivy image nginx:1.25.3-alpine-slim

Sử dụng nginx:1.25.3-alpine-slim sẽ chỉ chứa duy nhất 2 CVE mức medium

Ngoài ra, các bạn có thể tích hợp công cụ Trivy vào các qui trình CI/CD để nâng cao an ninh bảo mật trong quá trình phát triển và phát hành sản phẩm.

Tới đây đã kết thúc bài chia sẻ của mình, cám ơn các bạn đã theo dõi

Tham khảo

https://medium.com/how-tos/how-to-check-your-docker-images-for-vulnerabilities-287bd61aacc6

https://aquasecurity.github.io/trivy/v0.36/getting-started/installation/

https://aquasecurity.github.io/trivy/v0.19.2/getting-started/quickstart/

https://medium.com/@maheshwar.ramkrushna/scanning-docker-images-for-vulnerabilities-using-trivy-for-effective-security-analysis-fa3e2844db22

Leave a Reply