Lỗ hổng CVE nghiêm trọng: PoC RCE Splunk Secure Gateway công khai

Lỗ hổng CVE nghiêm trọng: PoC RCE Splunk Secure Gateway công khai

Một PoC (Proof-of-Concept) exploit công khai đã được phát hành cho CVE-2026-20251, một lỗ hổng thực thi mã từ xa (RCE) nghiêm trọng ảnh hưởng đến Splunk Secure Gateway (SSG).

Chi tiết Lỗ hổng CVE-2026-20251

Lỗ hổng này, với điểm CVSS là 8.8, cho phép kẻ tấn công đã được xác thực ở mức đặc quyền thấp thực thi mã tùy ý trên máy chủ Splunk mà không cần quyền quản trị hoặc quyền cấp cao.

CVE-2026-20251 tồn tại trong quy trình xử lý cảnh báo của Splunk Secure Gateway. Thành phần này đọc các tài liệu do kẻ tấn công kiểm soát từ App Key Value Store (KV Store) của Splunk, cụ thể là bộ sưu tập mobile_alerts.

Sau đó, các tài liệu này được truyền trực tiếp đến jsonpickle.decode(), một thư viện giải mã Python có khả năng tái tạo các đối tượng Python tùy ý từ dữ liệu JSON được chế tạo.

Mặc dù lời gọi hàm có tham số safe=True, nhưng cờ này chỉ chặn luồng đánh giá py/repr cũ. Các gadget quan trọng bao gồm py/reduce, py/object, py/type, py/functionpy/module vẫn hoàn toàn có thể bị khai thác.

Cơ chế Vượt qua Trình xác thực

Một trình xác thực phụ (check_alert_data_valid_json), được thiết kế để chặn các thẻ nguy hiểm, sẽ dừng lại ở khóa được nhận dạng đầu tiên. Nếu khóa cấp cao nhất đầu tiên là một giá trị py/object được phép bắt đầu bằng spacebridgeapp, hàm sẽ trả về True ngay lập tức và không kiểm tra các khóa anh em, bao gồm bất kỳ gadget py/reduce nào được nhúng.

Khai thác chỉ yêu cầu một tài khoản Splunk có đặc quyền thấp hợp lệ. Kẻ tấn công ghi một tài liệu vượt qua được chế tạo đặc biệt vào bộ sưu tập mobile_alerts KV Store thông qua Splunk REST API.

Khi SSG xử lý yêu cầu truy xuất cảnh báo, alerts_request_processor.py đọc tài liệu. Trình xác thực cho phép tài liệu (bị đánh lừa bởi khóa py/object làm mồi nhử) và jsonpickle.decode() tái tạo đối tượng độc hại, kích hoạt việc thực thi lệnh hệ điều hành tùy ý.

Cấu trúc tài liệu vượt qua khai thác lỗ hổng logic này:

Trình xác thực phê duyệt tài liệu dựa trên khóa py/object và không bao giờ xử lý payload thông báo độc hại.

Công khai Mã khai thác (Exploit)

Nghiên cứu viên Fady Oueslati từ ReactiveZero Security Research đã công khai PoC (poc_cve_2026_20251.py) vào ngày 26 tháng 6 năm 2026, dưới tham chiếu 2026FO-SPLUNK-20251.

PoC trình diễn hai điều kiện độc lập: vượt qua trình xác thực (trả về True cho tài liệu được chế tạo) và thực thi py/reduce dưới chế độ safe=True.

Payload được sử dụng cố tình là vô hại (uname -a). Việc kiểm thử được thực hiện trên SSG 3.9.19 chạy trên Splunk Enterprise 10.0.6.

Mã khai thác PoC (Minh họa)

# poc_cve_2026_20251.py

import requests
import jsonpickle

# ... (mã khai thác chi tiết sẽ được cung cấp tại nguồn tham khảo)

# Ví dụ về payload cơ bản:
payload = {
    'key': 'py/object', # Khóa này làm trình xác thực vượt qua
    'value': {
        'py/reduce': [
            'os.system',
            ['uname -a'] # Lệnh thực thi ví dụ
        ]
    }
}

# Dữ liệu được mã hóa và gửi qua API Splunk...

print("PoC exploit for CVE-2026-20251. Refer to the source for full details.")

Biện pháp Khắc phục & Giảm thiểu

Các tổ chức nên nâng cấp Splunk Secure Gateway lên các phiên bản 3.9.20, 3.10.6 hoặc 3.8.67, và Splunk Enterprise lên phiên bản 10.0.7, 10.2.4 hoặc 10.4.0+ ngay lập tức.

Nếu không thể vá lỗi ngay lập tức, hãy vô hiệu hóa hoặc gỡ bỏ hoàn toàn ứng dụng Splunk Secure Gateway làm biện pháp giảm thiểu tạm thời. Tuy nhiên, việc này sẽ vô hiệu hóa chức năng Splunk Mobile, Spacebridge và Mission Control.

Các nhóm bảo mật cũng nên thực thi nghiêm ngặt vai trò đặc quyền tối thiểu, hạn chế quyền ghi vào KV Store mobile_alerts, và thay thế jsonpickle.decode() trên các đường dẫn mã có thể truy cập bởi kẻ tấn công bằng các trình phân tích cú pháp được xác thực chặt chẽ theo lược đồ.

Để tăng cường khả năng phòng thủ, việc giám sát chặt chẽ các hoạt động ghi vào KV Store và các yêu cầu API Splunk có thể giúp phát hiện sớm các hoạt động bất thường, góp phần vào việc phát hiện tấn công hiệu quả.

Nguồn tham khảo: