-
27/04/2017
-
30
-
76 bài viết
Làm thế nào để kiểm tra các lỗ hổng bảo mật cho một docker image
Các bạn đã từng đặt câu hỏi là làm sao có thể quét một file docker image xem nó có tồn tại những lỗ hỗng nào hay không? Mình làm code review thì từng được hỏi rất nhiều về các tài liệu và các công cụ hỗ trợ cho việc quét lỗ hổng bảo mật của một docker image. Và bài viết hôm nay mình xin giới thiệu công cụ để rà quét lỗ hổng trên docker file và image mà mình thấy hữu ích, có tính sử dụng cao vì nó cho ra kết quả rất dễ đọc, dễ hiểu.
Và công cụ ngày hôm nay mình muốn giới thiệu là công cụ grype của Anchore. Như các bài viết cũ của mình thì mình luôn xoay quanh những câu hỏi để trình bày. Vậy câu hỏi ở đây là gì?
Bây giờ thì let’s go babeeeeeeeee.....
Grype là gì?
Grype là một mã nguồn mở hỗ trợ việc rà quét và tìm kiếm lỗ hổng bảo mật cho file hệ thống và docker image hoặc là docker file.
Grype quét được những gì?
Như nó được liệt trên tài liệu của thì Grype có thể quét được rất nhiều nhưng, trong bài, mình chỉ liệt kê ra những ý chính mà mọi người hay dùng:
Hiện tại thì mình thấy Grype có hỗ trợ cho hệ điều hành Linux, MacOS và cả Windows.
Với Windows, chỉ cần vào trang release rồi down về chạy thôi.
Còn Ubuntu thì:
MacOS: dùng homebrew là xong.
Giờ thì hãy để Grype chạy và chờ nó cài cho mình thôi.
Công cụ này lấy dữ liệu ở đâu về để thực hiện scan và kết quả ra sao?
Hiện thì tấn công chuỗi cung ứng đang hot và tràn lan trên mạng nên việc công cụ kéo dữ liệu ở đâu về để quét thì hết sức quan trọng. Theo tài liệu chính thức được cung cấp thì có những trang để lấy dữ liệu về hết sức uy tín dưới đây.
Về kết quả thì mình cũng nhau xem ở dưới demo nhá.
Vậy private docker image thì có scan được hay không?
Câu trả lời ở đây là có.
Nó có hỗ trợ rà quét private docker image và hơn thế nữa Grype là công cụ chạy mà không cần kết nối internet. Chỉ cần kết nối cho lần quét đầu tiên để tải nguồn dữ liệu về.
Vậy kết quả trả về của Grype có khác nhau giữa quét lỗ hổng trên public và private docker image có khác nhau không?
Ở đây kết quả nó không khác gì nhau. Nguyên nhân là vì trước khi scan thì nguồn dữ liệu sẽ được tải xuống dưới máy rồi mới thực hiện quét nên yên tâm nhé.
Để chứng minh cho điều đó thì mình có demo nho nhỏ dưới đây về công cụ này. Image mình dùng ở đây là Mongo trên docker hub cho nó tiện vì nó public. Còn cái private thì các bạn thử đi nhé. Nếu có gì không làm được thì hộp kín cho mình để blame và có cơ hội trao dồi thêm kinh nghiệm với nhau.
Câu lệnh thực hiện vô cùng đơn giản.
Nó còn hỗ trợ xuất file cho anh em nữa nha. Chỉ đơn giản vậy thôi, anh em hãy thử quét xem nhé, biết đâu lại tìm ra bug nào đó thì sao nhỉ.
Nào rảnh mình sexd viết bài dùng nó để kiếm bug bounty Ae còn công cụ nào nữa không nhỉ? Ai biết thì bình luận dưới bài nhé.
Link của công cụ https://github.com/anchore/grype
Và công cụ ngày hôm nay mình muốn giới thiệu là công cụ grype của Anchore. Như các bài viết cũ của mình thì mình luôn xoay quanh những câu hỏi để trình bày. Vậy câu hỏi ở đây là gì?
- Grype là gì
- Grype quét được những gì?
- Cài nó có dễ dàng hay không?
- Công cụ này lấy dữ liệu ở đâu về để thực hiện scan và kết quả ra sao?
- Đặc biệt nếu như private docker image thì có scan được hay không?
- Vậy kết quả trả về của có khác nhau giữa quét lỗ hổng trên public và private docker image có khác nhau không?
Bây giờ thì let’s go babeeeeeeeee.....
Grype là gì?
Grype là một mã nguồn mở hỗ trợ việc rà quét và tìm kiếm lỗ hổng bảo mật cho file hệ thống và docker image hoặc là docker file.
Grype quét được những gì?
Như nó được liệt trên tài liệu của thì Grype có thể quét được rất nhiều nhưng, trong bài, mình chỉ liệt kê ra những ý chính mà mọi người hay dùng:
- Quét được các lỗ hổng tồn tại trong base docker image. Base docker image là gì? Chính là cái dòng mà sau cái chữ FROM trong docker file đó
- Tìm lỗ hổng hệ điều hành chính dùng trong image. Ví dụ nếu docker file mình dùng ubuntu thì nó có khả năng quét được hết các lỗ hổng của các chương trình có trong ubuntu
- Grype nó có thể quét được docker image mà không cần đến docker file
- Tìm kiếm các lỗ hổng cho các packages của các ngôn ngữ.
Hiện tại thì mình thấy Grype có hỗ trợ cho hệ điều hành Linux, MacOS và cả Windows.
Với Windows, chỉ cần vào trang release rồi down về chạy thôi.
Còn Ubuntu thì:
Mã:
curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin
MacOS: dùng homebrew là xong.
Mã:
brew tap anchore/grype
brew install grype
Giờ thì hãy để Grype chạy và chờ nó cài cho mình thôi.
Công cụ này lấy dữ liệu ở đâu về để thực hiện scan và kết quả ra sao?
Hiện thì tấn công chuỗi cung ứng đang hot và tràn lan trên mạng nên việc công cụ kéo dữ liệu ở đâu về để quét thì hết sức quan trọng. Theo tài liệu chính thức được cung cấp thì có những trang để lấy dữ liệu về hết sức uy tín dưới đây.
Vậy private docker image thì có scan được hay không?
Câu trả lời ở đây là có.
Nó có hỗ trợ rà quét private docker image và hơn thế nữa Grype là công cụ chạy mà không cần kết nối internet. Chỉ cần kết nối cho lần quét đầu tiên để tải nguồn dữ liệu về.
Vậy kết quả trả về của Grype có khác nhau giữa quét lỗ hổng trên public và private docker image có khác nhau không?
Ở đây kết quả nó không khác gì nhau. Nguyên nhân là vì trước khi scan thì nguồn dữ liệu sẽ được tải xuống dưới máy rồi mới thực hiện quét nên yên tâm nhé.
Để chứng minh cho điều đó thì mình có demo nho nhỏ dưới đây về công cụ này. Image mình dùng ở đây là Mongo trên docker hub cho nó tiện vì nó public. Còn cái private thì các bạn thử đi nhé. Nếu có gì không làm được thì hộp kín cho mình để blame và có cơ hội trao dồi thêm kinh nghiệm với nhau.
Câu lệnh thực hiện vô cùng đơn giản.
Mã:
grype mongo
Nó còn hỗ trợ xuất file cho anh em nữa nha. Chỉ đơn giản vậy thôi, anh em hãy thử quét xem nhé, biết đâu lại tìm ra bug nào đó thì sao nhỉ.
Nào rảnh mình sexd viết bài dùng nó để kiếm bug bounty Ae còn công cụ nào nữa không nhỉ? Ai biết thì bình luận dưới bài nhé.
Link của công cụ https://github.com/anchore/grype
Happy hacking!!!
Chỉnh sửa lần cuối bởi người điều hành: