Lỗ hổng Log4Shell (CVE-2021-44228) được nhiều chuyên gia an ninh mạng mô tả là lỗ hổng zero-day nghiêm trọng nhất mọi thời đại. Nó ảnh hưởng đến tiện ích Java phổ biến tên Log4j, tồn tại từ năm 2001 để ghi log và truyền thông sự kiện như hoạt động hệ thống thông thường và lỗi phần mềm. Bài viết này hướng dẫn cách bảo vệ hệ thống Linux trước nó.
Lỗ Hổng Log4Shell Hoạt Động Như Thế Nào?
Về cơ bản, lỗ hổng do xác thực đầu vào không đúng cách. Điều này xảy ra khi phần mềm không xác thực đúng dữ liệu nhận được, dẫn đến lỗ hổng tiềm ẩn, vì đầu vào không được xác thực đúng có thể khiến chương trình thực hiện hành động không mong muốn.
Log4Shell khai thác cụ thể các yêu cầu Log4j gửi đến máy chủ, sử dụng LDAP và JNDI. Bằng cách tận dụng các yêu cầu này, kẻ tấn công có thể thực thi mã trên bất kỳ hệ thống dễ bị tấn công nào, dẫn đến việc kiểm soát hoàn toàn hệ thống và khả năng cài ransomware hoặc đánh cắp dữ liệu.
Log4Shell Ảnh Hưởng Đến Gì?
Vì Java là ngôn ngữ lập trình cực kỳ phổ biến, rất nhiều phần mềm viết bằng Java sử dụng Log4j cho chức năng ghi log đều bị ảnh hưởng. Một số phần mềm nổi tiếng và thường dùng bị ảnh hưởng bao gồm Apache và trò chơi video Minecraft.
Cách Biết Phần Mềm Nào Bị Ảnh Hưởng?
Log4Shell, như mọi lỗ hổng an ninh mạng khác, được khắc phục bằng cách vá phần mềm bị ảnh hưởng. Tuy nhiên, trường hợp Log4Shell hơi đặc biệt, vì nó ảnh hưởng đến nhiều phần mềm, và khó giữ danh sách gì bị ảnh hưởng gì không.
May mắn thay, Trung tâm An ninh Mạng Quốc gia Hà Lan đã công bố danh sách toàn diện trên GitHub, bao gồm tên phần mềm do các tổ chức khác nhau phát triển, thông báo xem chúng có dễ bị Log4Shell tấn công hay không.
Cách Quét Máy Chủ Apache Để Tìm Lỗ Hổng
Vì lỗ hổng này ảnh hưởng lớn đến cộng đồng an ninh mạng và phần mềm, không ngạc nhiên khi có công cụ cho quản trị viên quét máy chủ của họ.
Một trình quét như vậy là Log4j-RCE-Scanner, cho phép quét lỗ hổng thực thi lệnh từ xa trên Apache Log4j tại nhiều địa chỉ.
Cài Đặt Log4j-RCE-Scanner
Trước khi bắt đầu, cần cài đặt các phụ thuộc: httpx và curl.
Curl dễ dàng cài trên Ubuntu và Debian bằng lệnh apt:
sudo apt install curl
Trên Arch Linux dùng pacman:
sudo pacman -Sy curl
Trên CentOS và Fedora dùng yum:
sudo yum install curl
Cài httpx bằng các lệnh sau:
git clone https://github.com/projectdiscovery/httpx cd httpx/cmd/httpx && go build . sudo mv httpx /usr/local/bin/
Sau khi cài xong phụ thuộc, clone kho Log4j-RCE-Scanner:
git clone https://github.com/adilsoybali/Log4j-RCE-Scanner
Truy cập thư mục mới tạo:
cd Log4j-RCE-Scanner/
Cuối cùng, cấp quyền thực thi cho script Bash:
chmod +x log4j-rce-scanner.sh
Sử Dụng Log4j-RCE-Scanner
Sau khi cài đặt trình quét, bạn có thể bắt đầu sử dụng nó.
Đọc phần trợ giúp của script bằng lệnh:
bash log4j-rce-scanner.sh -h
Bây giờ, bạn có thể quét máy chủ Apache của mình cho lỗ hổng Log4shell.
bash log4j-rce-scanner.sh -d [domain] -b [Burp collaborator]
Bạn có thể chỉ định domain và Burp Collaborator bằng cờ -d và -b. Nếu domain của bạn dễ bị tấn công, các cuộc gọi lại DNS với tên domain dễ bị tấn công sẽ được gửi đến Burp Collaborator.
Thay vào đó, cờ -l cũng có thể dùng để chỉ định danh sách domain.
Cài Đặt Và Sử Dụng Trình Quét Dựa Trên Python
Nếu bạn thích dùng script Python, có thể dùng log4-scanner, do Cơ quan An ninh Hạ tầng An ninh Mạng (CISA) của Mỹ phát triển.
Để cài đặt:
git clone https://github.com/cisagov/log4j-scanner/
Truy cập thư mục:
cd log4j-scanner/log4-scanner/
Bạn có thể cài các phụ thuộc bắt buộc bằng lệnh pip3:
pip3 install -r requirements.txt
Bạn có thể xem "trợ giúp" của script bằng cờ -h:
python3 log4j-scan.py -h
Quét một URL đơn giản bằng cờ -u:
python3 log4j-scan.py -u example.com
Bạn cũng có thể quét danh sách URL bằng cờ -l:
python3 log4j-scan.py -l list.txt
Cách Vá Apache
Để chống lại lỗ hổng này, cực kỳ quan trọng phải giữ cấu hình Apache cập nhật.
Kiểm tra phiên bản Apache có thể làm theo nhiều cách: từ bảng điều khiển quản trị như CPanel, hay WebHost Manager. Bạn cũng có thể kiểm tra phiên bản bằng lệnh httpd với cờ -v:
httpd -v
Apache có thể cập nhật lên phiên bản mới nhất, an toàn nhất bằng lệnh apt trên Debian và Ubuntu:
sudo apt update && sudo apt upgrade apache2
Kết quả tương tự trên CentOS dùng lệnh yum:
sudo yum install httpd
Câu Hỏi Thường Gặp
1. Phiên bản nào của Log4j bị ảnh hưởng bởi lỗ hổng?
Các phiên bản dưới 2.1.7.1 dễ bị khai thác. Phiên bản 2.15.0 sửa các yếu tố dễ khai thác nhất, với 2.17.1 sửa lỗ hổng thực thi mã từ xa khó khai thác.
2. Tôi có cần tiện ích Burp Collaborator để nhận cuộc gọi lại DNS với tên domain dễ bị tấn công không?
Theo nhà phát triển trình quét Bash, Burp Collaborator được dùng cùng script để nhận cuộc gọi lại DNS với tên domain dễ bị tấn công. Thay vào đó, địa chỉ Interact.sh có thể dùng.
3. Tôi có cần phụ thuộc khác để dùng trình quét dựa trên Bash không?
Đối với sử dụng cơ bản, bạn chỉ cần cài httpx và Curl trên hệ thống. Tuy nhiên, để mở khóa một số chức năng, bạn cũng cần cài Subfinder, Assetfinder và Amass.