Hơn một nửa các trang web bận rộn nhất của Internet bao gồm Airbnb, Box, Instagram, Netflix, Pinterest, SoundCloud và Zappos dựa vào NGINX. Tội phạm mạng thường nhắm vào máy chủ web và họ liên tục tìm cách khai thác lỗ hổng nhỏ nhất để đánh cắp thông tin nhạy cảm. NGINX không phải là ngoại lệ – nó đã chứng kiến các cuộc tấn công mạng và lộ lỗ hổng thời và lại.
Trong bài viết này, chúng tôi nói về 5 lỗ hổng NGINX nghiêm trọng nhất được tìm thấy cho đến nay, và cách bạn có thể bảo mật máy chủ web của mình. Tuy nhiên, hãy nhớ rằng để bảo mật hoàn toàn trang web của bạn, việc bảo mật các ứng dụng trên máy chủ của bạn là thiết yếu.
1. NGINX SPDY heap buffer overflow (2014)
Triển khai SPDY trong NGINX 1.3.15 trước 1.4.7, và 1.5.x trước 1.5.12 dễ bị tổn thương trước tràn bộ đệm dựa trên heap. Điều này cho phép kẻ tấn công thực thi mã tùy ý thông qua yêu cầu được chế tác. Vấn đề ảnh hưởng đến NGINX được biên dịch với mô-đun ngx_http_spdy_module (mặc định không được biên dịch) và không có tùy chọn cấu hình –with-debug, nếu tùy chọn "spdy" của chỉ thị "listen" được sử dụng trong tệp cấu hình.
Để khai thác lỗ hổng này, kẻ tấn công có thể thực thi mã tùy ý bằng cách chế tác đặc biệt một yêu cầu để gây tràn bộ đệm heap. Điều này sẽ ảnh hưởng nghiêm trọng đến máy chủ web.
Biện pháp khắc phục được khuyến nghị cho lỗ hổng này là nâng cấp lên phiên bản mới nhất. Hãy chắc chắn cũng áp dụng các bản vá cần thiết do nhà cung cấp cung cấp.
2. Lỗ hổng Leo quyền Root của NGINX (2016)
Lỗ hổng Leo quyền Root của NGINX được coi là mức độ nghiêm trọng cao. Nó có thể dẫn đến việc tạo thư mục log với quyền không an toàn. Những thư mục này, lần lượt, có thể bị kẻ tấn công cục bộ độc hại khai thác để leo đặc quyền từ user NGINX/web (www-data) lên root, xâm phạm bất kỳ ứng dụng web nào được lưu trữ trên máy chủ NGINX. Lỗ hổng leo quyền root ảnh hưởng đến gói máy chủ web trên các bản phân phối dựa trên Debian như Debian hoặc Ubuntu.
Lỗ hổng này xuất phát từ quy trình sau: khi NGINX được cài đặt từ kho mặc định trên hệ thống dựa trên Debian, nó tạo thư mục log NGINX tại vị trí sau và với quyền sau:
admin@wsxdn.com:~# ls -ld /var/log/nginx/
drwxr-x--- 2 www-data adm 4096 Nov 12 22:32 /var/log/nginx/
admin@wsxdn.com:~# ls -ld /var/log/nginx/*
-rw-r----- 1 www-data adm 0 Nov 12 22:31 /var/log/nginx/access.log
-rw-r--r-- 1 root root 0 Nov 12 22:47 /var/log/nginx/error.log
Vì thư mục /var/log/nginx thuộc sở hữu www-data, kẻ tấn công có thể thay thế các tệp log bằng symlink tới tệp tùy ý khi chiếm được quyền truy cập hệ thống. Khi khởi động lại, log sẽ được ghi vào tệp được trỏ tới bởi symlink, cho phép kẻ tấn công leo đặc quyền lên root.
Lỗ hổng đã được khắc phục trong gói NGINX 1.6.2-5+deb8u3 trên Debian và NGINX 1.10.0-0ubuntu0.16.04.3 trên Ubuntu (16.04 LTS).
3. Lỗ hổng Tràn số nguyên từ xa (2017)
Lỗ hổng Tràn số nguyên từ xa của NGINX là lỗ hổng loại Lỗi Điều kiện Biên (Boundary Condition Error). Lỗ hổng này xuất phát từ sự không thể của NGINX trong việc thực hiện kiểm tra biên đầy đủ trên dữ liệu do người dùng cung cấp. Khai thác điều này, kẻ tấn công có thể truy cập thông tin nhạy cảm hoặc làm crash ứng dụng, dẫn đến trạng thái từ chối dịch vụ (DoS).
Các phiên bản NGINX từ 0.5.6 đến 1.13.2 đều dễ bị tổn thương trước lỗ hổng tràn số nguyên – vì vậy, để giảm thiểu vấn đề này, hãy cập nhật lên phiên bản NGINX mới nhất và kiểm tra avis cụ thể của nhà cung cấp để biết thêm thông tin.
4. Lỗ hổng NGINX Controller (2020)
Trong các phiên bản NGINX Controller trước 3.2.0, kẻ tấn công có quyền truy cập mạng vào Controller API có thể tạo tài khoản người dùng không đặc quyền. Người dùng được tạo như vậy có thể tải lên giấy phép mới cho hệ thống nhưng không thể xem hoặc sửa đổi bất kỳ thành phần nào khác của hệ thống. Điều này có nghĩa là kẻ tấn công có thể khai thác lỗ hổng này để tạo tài khoản người dùng nhằm tạo ra kịch bản từ chối dịch vụ (DoS) trên NGINX Controller.
Để giảm thiểu lỗ hổng này, bạn có thể cập nhật lên phiên bản mới hơn, hoặc hạn chế truy cập mạng vào cổng API NGINX Controller (TCP 443) bằng cách cấu hình phần mềm tường lửa của host NGINX Controller hoặc thiết bị lọc gói bên ngoài để chỉ cho phép mạng tin cậy truy cập API NGINX Controller.
5. Lỗ hổng Thực thi mã từ xa PHP (2020)
Một trong những lỗ hổng NGINX mới nhất là một số phiên bản PHP 7 chạy trên NGINX với php-fpm được bật dễ bị tổn thương trước thực thi mã từ xa. Lỗ hổng này, nếu không được giảm thiểu, có thể dẫn đến tiết lộ thông tin nhạy cảm, thêm hoặc sửa đổi dữ liệu, hoặc tấn công Từ chối dịch vụ (DoS).
Để giảm thiểu lỗ hổng này, hãy ngay lập tức cập nhật lên phiên bản PHP không bị tổn thương.
Không dùng NGINX? Xem bài viết blog và video của chúng tôi về các lỗ hổng Apache nghiêm trọng.
Về Astra Pentest
Astra Pentest là bộ bảo mật mạng và ứng dụng thiết yếu giúp bạn ngăn chặn bất kỳ hack nào do khai thác lỗ hổng bởi hacker. Giải pháp được gói gọn với trình quét lỗ hổng tự động, quản lý lỗ hổng và dịch vụ kiểm thâm nhập.
Chúng tôi hy vọng bài viết này giúp bạn giảm thiểu các lỗ hổng và vấn đề bảo mật trong máy chủ web của bạn! Tuy nhiên, để làm cho trang web/ứng dụng web của bạn hoàn toàn an toàn, bạn cũng cần bảo mật các ứng dụng bạn đã cài đặt trên máy chủ, và CMS bạn đang sử dụng. Lỗ hổng trong những thứ này cũng có thể dẫn đến xâm phạm máy chủ web! Xem bài viết của chúng tôi về bảo mật WordPress, Magento, Joomla, PrestaShop và OpenCart.