Cảnh báo chiến dịch khai thác lỗ hổng CVE-2022-1388 trên các hệ thống sử dụng F5 BIG-IP - Phần I

F5 BIG-IP

BIG-IP là một sản phẩm của hãng F5, là sự kết hợp giữa phần mềm và phần cứng nhằm cung cấp cho người dùng khả năng kiểm soát lưu lượng truy cập qua mạng. Đây là một sản phẩm được sử dụng phổ biến trên thế giới cũng như ở Việt Nam.

Phần I: CVE-2022-1388

Đầu tháng 5, hãng F5 đã công bố thông tin Advisory về CVE-2022-1388 – Lỗ hổng bỏ qua xác thực trên BIG-IP iControl REST. Tin tặc có thể khai thác lỗ hổng để thực thi mã từ xa, tạo hoặc xóa tệp và tạm ngừng dịch vụ mà không cần xác thực. Lỗ hổng có điểm CVSS 9.8.

Ngay khi ghi nhận thông tin về lỗ hổng, Viettel Threat Intelligence đánh giá nguy cơ ở mức Nghiêm Trọng và đã cảnh báo sớm tới các khách hàng.

Viettel Cyber Security cũng là một trong những đơn vị sớm nhất phân tích và đưa ra PoC khai thác thành công lỗ hổng CVE-2022-1388.

Hình 1. VCSLab khai thác thành công lỗ hổng vào ngày 8/5 (Nguồn: https://twitter.com/vcslab/status/1523259088259346432)

Điều kiện khai thác

· Hệ thống sử dụng BIG-IP (tất cả mô-đun) các phiên bản:

o   16.1.0 - 16.1.2

o   15.1.0 - 15.1.5

o   14.1.0 - 14.1.4

o   14.1.0 - 14.1.4

o   12.1.0 - 12.1.6

o   11.6.1 - 11.6.5

· Tin tặc có thể truy cập mạng tới giao diện quản lí BIG-IP mục tiêu.

Thông tin chi tiết về lỗ hổng

Lỗ hổng xảy ra do BIG-IP sử dụng iControl REST tồn tại lỗ hổng, cho phép tin tặc bỏ qua xác thực. iControl REST API có 2 cơ chế xác thực: token-basedHTTP Basic. HTTP Basic được sử dụng cho Administrator, người dùng bình thường được chuyển sang cơ chế token-based.

Các kết nối tới iControl REST qua HTTP do máy chủ web frontend Apache ở port 443 xử lí. Để sử dụng dịch vụ iControl REST, một đường dẫn bắt buộc phải bắt đầu bằng /mgmt. Điều này sẽ thông báo cho Apache để chuyển tiếp thông điệp (message) đến máy chủ web Jetty hoạt động cục bộ ở cổng 8100.

Máy chủ web Jetty này sẽ xác thực các truy vấn xuất phát từ bên ngoài và cung cấp token ở dạng header X-F5-Auth-Token khi xác thực thành công. Header này phải được sử dụng trong tất cả các giao tiếp tiếp theo. Nếu máy chủ Apache nhận được truy vấn này, Apache sẽ giả định rằng Jetty sẽ xác minh giá trị token và chuyển tiếp theo header.

Nếu truy vấn không có X-F5-Auth-Token thì truy vấn này được coi là của administrator và chỉ usernamecủa HTTP Basic header được xác minh để khớp với admin hoặc root.

Ngoài ra, Jetty cũng theo dõi nguồn của truy vấn dựa trên các header X-Forwarded-For và X-Forwarded-Host. Bằng cách thêm X-Forwarded-Host vào Connection header, tin tặc có thể bỏ qua X-Forwarded-Host header.

- Connection: X-F5-Auth-Token, X-Forwarded-Host

Kịch bản khai thác lỗ hổng

1. Đặt Connection header thành X-F5-Auth-Token để bỏ qua xác thực của mô-đun apache mod_auth_pam.

2. Đặt Authentication header thành admin:…. (chuỗi bất kì)

3. Ở một số phiên bản, cần đặt Host header thành localhosthoặc 127.0.01 để bỏ qua xác thực trong setIdentityFromBasicAuth.

4. Jetty sẽ thấy truy vấn không có X-F5-Auth-Token nhưng lại có Authentication header.

5. Phần usernametrong Authentication header sẽ giúp xác thực thành công.

Ví dụ về truy vấn HTTP khai thác lỗ hổng:

Tin tặc có thể thay câu lệnh “-c id” bằng bất cứ câu lệnh nào theo ý tin tặc, có thể là 'rm -rf /*' để xóa toàn bộ tệp có trên hệ thống.

Biện pháp khắc phục

Viettel Threat Intelligence khuyến nghị khách hàng cập nhật BIG-IP lên các phiên bản đã bao gồm bản vá cho lỗ hổng.

· 16.1.2.2

· 15.1.5.1

· 14.1.4.6

· 13.1.5

Trong trường hợp chưa thể cập nhật phiên bản, quản trị viên có thể thực hiện theo khuyến nghị của hãng:

· Chặn quyền truy cập iControl REST thông qua địa chỉ IP.

o Sửa đổi Port Lockdown thành Allow None cho mỗi địa chỉ IP riêng trên hệ thống.

o Trong trường hợp phải mở cổng, sử dụng tùy chọn Allow Custom.

o Theo cấu hình mặc định, iControl REST hoạt động trên cổng TCP 443 hoặc cổng TCP 8443 trên các phiên bản Single NIC BIG-IP VE. Nếu đã thay đổi cổng mặc định, quản trị viên cần đảm bảo không cho phép truy cập vào cổng thay thế đã định cấu hình.

· Chặn quyền truy cập iControl REST thông qua giao diện quản lý.

o Chỉ cấp quyền truy cập giao diện quản lý cho những người dùng và thiết bị đáng tin cậy.

· Sửa đổi cấu hình BIG-IP httpd.

o Đối với BIG-IP phiên bản ≥ 14.1.0

1. Đăng nhập TMOS Shell (tmsh) bằng lệnh tmsh

2. Mở cấu hình httpd:

edit /sys httpd all-properties

3. Xác định vị trí dòng bắt đầu bằng include none và thay thế none bằng:

"<If \"%{HTTP:connection} =~ /close/i \">

RequestHeader set connection close

</If>

<ElseIf \"%{HTTP:connection} =~ /keep-alive/i \">

RequestHeader set connection keep-alive

</ElseIf>

<Else>

RequestHeader set connection close

</Else>"

Lưu ý: Nếu câu lệnh include hiện tại chứa cấu hình khác với cấu hình none, hãy thêm cấu hình trên vào cuối cấu hình hiện tại.

4. Ấn ESC và lưu bằng lệnh :wq

5. Chọn y strong Save changes (y/n/e)

6. Lưu cấu hình:

save /sys config

o Đối với BIG-IP phiên bản ≤ 14.0.0

1. Đăng nhập TMOS Shell (tmsh) bằng lệnh tmsh

2. Mở cấu hình httpd:

edit /sys httpd all-properties

3. Xác định vị trí dòng bắt đầu bằng include none và thay thế none bằng:

"RequestHeader set connection close"

Lưu ý: Nếu câu lệnh include hiện tại chứa cấu hình khác với cấu hình none, hãy thêm cấu hình trên vào cuối cấu hình hiện tại.

4. Ấn ESC và lưu bằng lệnh :wq

5. Chọn y strong Save changes (y/n/e)

6. Lưu cấu hình:

save /sys config