Lỗ hổng điều khiển các thiết bị SmartHome Lumi

Lỗ hổng điều khiển các thiết bị SmartHome Lumi

Mục tiêu của tôi lần này là hướng tới các thiết bị smarthome, tôi chọn target theo tiêu chí là công ty top đầu cung cấp phát triển các giải pháp, thiết bị cho nhà thông minh, các thiết bị thông minh hoặc được sử dụng tại công ty hoặc gia đình tôi. Một đơn vị khá có tiếng trong lĩnh vực này. Công ty phát triển các thiết bị như bộ điều khiển trung tâm (Home Controller), Công tắc, Rèm, Hệ thống chiếu sáng và các mạch tích hợp vào khoá cửa, các trợ lý ảo tích hợp của Lumi.

Trong quá trình đánh giá đã tìm ra được một số lỗ hổng bảo mật có ảnh hưởng tới hệ thống, thiết bị và khách hàng như hardcode credential, upload file, access VPN.

Trong đó có lỗ hổng được đánh giá nghiêm trọng nhất liên quan tới giao thức MQTT được sử dụng trao đổi thông tin và ra lệnh cho các thiết bị.

Phân Tích Hướng Tấn Công

●       Trường hợp 1: Thiết bị Smartphone cùng mạng (local) với HC như mạng wifi
Hệ thống smarthome sử dụng điện thoại thông minh publish message (turn on light) thông qua mạng wifi local tới thiết bị Home Controller có dịch vụ MQTT port 1883 với topic /user/livingroom/light.

Các bóng đèn subscribe topic /user/livingroom/light sẽ nhận được message, chương trình client sẽ xử lý message và thực hiện lệnh tương ứng. Hoặc HC tự mình subscribe topic khi nhận được message sẽ gửi lệnh tới thiết được định danh trong HC thông qua mạng zigbee, zwave.

Sau đó các thiết bị client sẽ cập nhật trạng thái để đồng bộ với hệ thống cloud.

●       Trường hợp  2:  Khác nếu bạn không kết nối với mạng wifi tại nhà. Mà bạn đang ở ngoài đường muốn bật nóng lạnh trước khi về nhà hoặc mở cửa cho người nhà lên chơi.

Khi đó app smartphone sẽ publish lệnh lên cloud với topic mình ví dụ /id_apartment/user/bathroom/hotcold phía HC subscribe topic đó và nhận message xử lý gửi lệnh tới các thiết bị được định danh tới HC.

Từ phân tích hoạt động ở trên tôi chia làm 2 attack vector:

1.    Thông qua mạng WiFi local tấn công vào dịch vụ của Home Controller
Ảnh hưởng có thể xảy ra đối với tính huống này là cho phép điều khiển các thiết bị kết nối tới mạng local.

2.    Thông qua mang internet tấn công vào dịch phía Cloud.
Ảnh hưởng có thể điều khiển tất cả các thiết bị có kết nối tới Cloud.

Thực Hiện Tấn Công

Reverse Firmware

Đầu tiên cần có thông tin tài khoản để truy cập vào dịch vụ MQTT ở phía Home Controller và Cloud. Dịch vụ có cài TLS bảo vệ đường truyền.

Thông tin này được hardcode trong firmware

●      Username, password sẽ cho phép bạn truy cập vào dịch vụ.

●       Certificate sẽ xác minh bạn có đáng tin cậy để truy cập vào dịch vụ hay không, Ngoài ra có còn có tác dụng mã hóa packet tránh trường hợp mạng bị nghe lén hay các tấn công mạng.

Chỉ cần tìm tới hàm mosquitto_username_pw_setlà ta có thể thấy username=local và password = d0....58mosquitto_tls_setcertificate được lưu trong filesystem có đường dẫn file cert

Có thể đoán được đây là thông tin truy cập MQTT local được cài trong Home Controller nhớ local.

Thế thông tin truy cập phía cloud cũng tương tự như vậy

Nhìn là thấy thông tin khác rồi chứ cách lập trình vẫn thế.

DOS thông qua Duplicate Client ID

Lỗi này ở mức có khả năng xảy ra. Cliend ID được lấy từ phía server cloud. Sau khi có client id bạn có thể thực hiện reconnect liên tục để chiếm phiên làm việc dẫn tới không thể ra lệnh do liên tục bị chiếm phiên.

Spoof Client lấy Sensitive Information

DOS thì không có hứng thú lắm bây giờ xem xét hệ thống có thông tin khác như cá nhân hoặc thông tin truy cập tới các hệ thống khác.
Hãy tận dụng những gì đã học đó là sử dụng wildcard +, #, $..để đọc nội dung mà các thiết bị giao tiếp với nhau. Hãy nhớ đây là môi trường mạng internet chứ không đơn thuần là local.

Điều gì xảy ra nếu attacker giả mạo client và subscribe topic "#".

Hãy xem ví dụ sau:

Attacker sẽ thu thập thông điệp các dựa vào subscribe # và filter theo topic /hcv1/config chờ người dùng cấu hình hoặc sửa đổi cấu hình làm lộ  thông tin truy cập của của thiết bị  và được tôi ví dụ như sau:

●       ip: 192.168.1.1 - port 80, 8888

●       user: admin

●       password: 12345678

Từ những thông tin này attacker có thể theo dõi bạn bằng thiết bị được cài đặt.

Ngoài ra con nhiều thông tin khác thu thập được như hình minh hoạ dưới đây.

Truy cập và Điều Khiển Thiết Bị

Để điều khiển bất kỳ thiết bị có kết nối lên cloud cần các dữ kiện sau:

Đầu tiên attacker sẽ thu thập số điện thoại và email đăng ký trên cloud thông tin này có thể dễ dàng biết được thông qua internet hoặc bạn bè.

Từ đó truy cập các bản ghi thu thập được từ việc lắng nghe trên giao thức từ đó suy ra được địa chỉ MAC.

Từ địa chỉ MAC sử dụng link để lấy ID Client , Topic và ID thiết bị khoá.

●       Client_ID có thể lấy bất kỳ thông qua MAC lrn:.../thing/[ID] ID được tạo ra theo số thứ tự tăng dần khi đăng ký điều đó cho biết tại thời điểm đăng ký hãng đã bán được 10924 bộ sản phẩm.

●       Topic được map với thiết bị nào và ai sở hữu.
có dạng như sau:
lrn:.../thing/[ID]/hc/control

●       Cấu trúc thông điệp chứa lệnh có thể reverse hoặc bắt lại có cấu trúc như sau:
{"reqid":"ID","set": "devid":"1", "net":1, "type":"1","val":{"state":"on"}}

●       state=on Trạng thái là bật thiết bị.

●       devid=1 id là định danh số thiết bị cho căn hộ.

Minh hoạ lỗi bằng turn on bóng đèn từ xa.

Từ các lỗ hổng trên có thể thấy các thiết bị thông minh tại Việt nam tiềm ẩn một số nguy cơ cho phép tin tặc lợi dụng đánh cắp các thông tin và điều khiển thiết thiết bị  và thấy rằng các sản phẩm IoT chưa được chú trọng nhiều về an toàn thông tin.

Phản Hồi

Sau khi Report các lỗ hổng tới đại diện của công ty Lumi đã có những phản hồi tích cực tiếp nhận lỗ hổng, thực tế không nhiều đơn vị ở Việt Nam cởi mở về việc tiếp nhận thông tin lỗ hổng bảo mật. Tới nay lỗi đã được ghi nhận, khắc phục, cập nhật và nhận được Thư cảm ơn từ phía công ty Lumi.

Timeline Disclosure

24/11/2020: Thông báo các lỗ hổng và kèm PoC .docx qua email.

24/11/2020: Nhận được phải hồi từ phía công ty LUMI.

14/12/2020: Thông báo lỗ hổng mới liên quan tới VPN và kèm PoC .docx qua email.

28/04/2021: Cập nhật tình trạng Fix bug và thông báo công bố lỗ hổng cộng đồng.

28/04/2021: Nhận phản hồi rời lịch công bố lỗ hổng phục vụ vá lỗ hổng.

02/07/2021: Nhận được phản hồi lỗ hổng trong thiết bị, cloud, apps đã được vá.

Tác giả: Hà Văn Toàn