Bài viết dưới đây phân tích chi tiết cách các chuyên gia bảo mật từ Claroty Team82 thực hiện chiến dịch tấn công theo hướng lai giữa mạng WAN (Internet) và LAN để chiếm quyền kiểm soát thiết bị IoT – cụ thể là camera IP Synology BC500 — qua hai giai đoạn chính: khai thác router tại đầu WAN và sau đó tấn công camera trong mạng nội bộ.
🔐 Phần 1: Khai thác TP-Link ER605 từ phía WAN
Team82 mở đầu bằng việc tấn công router TP-Link ER605 – thiết bị kết nối mạng rộng – bằng chuỗi ba lỗ hổng trong tiến trình DDNS của router:
-
Giả mạo server DDNS (CVE-2024-5242)
Do sử dụng mã hóa 3DES với khóa cố định cùng kênh UDP chưa xác thực, kẻ tấn công có thể giả dạng server để thực thi tấn công Man‑in‑the‑Middle. -
Tràn bộ đệm stack dẫn đến RCE (CVE-2024-5243)
Thao tácstrncpykhông kiểm tra độ dài với tham sốerrorCode, cho phép ghi vượt bộ đệm trên stack và chiếm quyền điều khiển chương trình. -
Rò rỉ bộ nhớ để vượt ASLR (CVE-2024-5244)
Tràn bộ đệm trong hàmsndDnsQuerycho phép đọc vượt bộ đệm từ heap/stack → rò rỉ địa chỉ → tính toán lại địa chỉ base sau khi bật ASLR.
Chuỗi tấn công:
Giả mạo DDNS → tràn bộ đệm để rò rỉ địa chỉ → dùng RCE qua errorCode → thiết lập reverse-shell trên router
Sau khi chiếm quyền root trên router, họ mở firewall và thiết lập proxy đến camera Synology BC500 qua socat, tạo điều kiện cho bước tấn công tiếp theo trong LAN.
🎯 Phần 2: Tấn công Synology BC500 IP Camera trong LAN
Mô tả thiết bị
- Synology BC500: camera 5 MP, chuẩn IP67, chạy Linux trên kiến trúc ARMv7; firmware chứa kernel, UBI rootfs và CGI chưa mã hóa.
- Giao diện web dùng civetweb, với CGI tại
/www/camera-cgi/synocm_param.cgi, nhận PUT tại/syno-api/activate, dùng libjansson để parse JSON.
Lỗ hổng tràn bộ đệm (ZDI-24-833)
Trong quá trình parse JSON, sscanf được dùng để tách key thành hai chuỗi (32 byte và 12 byte), không kiểm tra độ dài → dễ gây tràn stack. Đáng lo là lỗ hổng không yêu cầu xác thực.
Vượt qua các biện pháp bảo vệ
- CGI có RELRO, NX; nhưng libjansson không có stack canary, OS bật ASLR (~8 bit randomness), heap random ~12 bit.
- Team82 sử dụng bruteforce: exploit đa luồng (10 threads) do máy chủ civetweb hỗ trợ đồng thời đến 10 kết nối.
Chuỗi tấn công
- Overflow struct
stream_tđể ghi đè function pointerget_funcnhằm hướng đến hàmsystem(). - Xịt heap với payload chứa padding + shell command, xác định vị trí pointer vào vùng chứa command.
- Chèn null byte nhờ
sscanf("%s %s"), tạo điều kiện ghi pointer hợp lệ. - Mã hóa payload bằng cách tận dụng ký tự UTF‑8 (ví dụ: emoji 🍦) để chèn byte không ASCII.
- Khi exploit thành công, ta có reverse‑shell và toàn quyền trên camera. Synology đã khắc phục trong firmware phiên bản 1.0.7‑0298.
🧠 Tổng kết chiến lược WAN → LAN
| Giai đoạn | Mục tiêu | Phương thức thực hiện |
|---|---|---|
| 1. WAN | Khai thác router ER605 | Dùng lỗ hổng DDNS: giả mạo, tràn buffer, rò rỉ địa chỉ để thực thi mã |
| 2. LAN | Tấn công camera BC500 | Gửi request exploit HTTP không xác thực để giành quyền hệ điều hành |
Chiến lược này chứng minh khả năng liên kết các lỗ hổng từ router đến thiết bị IoT trong mạng nội bộ, gây hậu quả nghiêm trọng nếu không vá kịp thời.
✍️ Kết luận
- Tấn công phối hợp WAN → LAN là mối đe dọa lớn với hệ thống SOHO, đặc biệt khi các thiết bị IoT dễ bị khai thác.
- Nhà sản xuất nên:
- Cập nhật firmware định kỳ (router: ER605 v22.2.4‑20240119; camera: BC500 v1.0.7‑0298)
- Tắt DDNS không cần thiết, lập mạng nội bộ an toàn, hạn chế truy cập trực tiếp từ Internet.
- Kiểm tra bảo mật thường xuyên với các lỗ hổng như buffer overflow, bảo vệ ASLR.
Source link: Pwn2Own: Pivoting from WAN to LAN to Attack a Synology BC500 IP Camera






