CVE-2020-8515: lỗ hổng nghiêm trọng trong thiết bị DrayTek

11:50 | 27/11/2020

CVE-2020-8515 là một trong 4 lỗ hổng được phát hiện tồn tại trong các sản phẩm của Nhà sản xuất thiết bị mạng và hệ thống quản lý DrayTek trong năm 2020.

DrayTek là nhà sản xuất thiết bị mạng và hệ thống quản lý có trụ sở tại Đài Loan. Hiện tại, nhà sản xuất này đang cung cấp thiết bị cho nhiều doanh nghiệp vừa và nhỏ ở Việt Nam và cả trên thế giới. Theo thống kê, Việt Nam có khoảng 2.500 thiết bị định tuyến DrayTek Vigor đang kết nối Internet. Mặc dù, DrayTek đã phát hành bản cập nhật firmware cho các sản phẩm tồn tại lỗ hổng bảo mật. Nhưng việc nâng cấp cũng không dễ dàng với nhiều tổ chức, đơn vị nhỏ và nếu không xử lý, khắc phục kịp thời thì sẽ trở thành mục tiêu tấn công của tội phạm mạng.

Lỗ hổng CVE-2020-8515

Mã lỗi CVE-2020-8515 được mô tả là một lỗ hổng nghiêm trọng và ảnh hưởng đến các thiết bị DrayTek Vigor. Lỗ hổng cho phép kẻ tấn công thực thi các mã lệnh từ xa trên các thiết bị ảnh hưởng mà không cần xác thực với quyền cao nhất (tài khoản root). Từ đó, kẻ tấn công có thể nghe lén lưu lượng mạng hay cài các phần mềm độc hại trên thiết bị, gây nguy hiểm nghiêm trọng cho chính thiết bị và cả hệ thống mạng của cá nhân và tổ chức, doanh nghiệp.

Lỗ hổng này bắt nguồn từ mã nguồn nằm tại đường dẫn /www/cgi-bin/mainfunction.cgi. Bởi mã nguồn không thực hiện lọc biến keypath trong quá trình xác thực, dẫn tới kẻ tấn công có thể thêm vào các ký tự đặc biệt như “%27%0A” để vượt qua việc kiểm tra và khai thác lỗi thực thi lệnh tiền xác thực.

Thiết bị mạng DrayTek Vigor hỗ trợ 2 phương thức truyền mật khẩu tài khoản khi đăng nhập: truyền bản rõ và truyền mã hóa RSA. Khi sử dụng truyền mật khẩu bằng phương thức sử dụng RSA, các bước thực hiện được mô tả như sau:

Bước 1: Tại giao diện người dùng web, sử dụng khóa công khai RSA để mã hóa tên người dùng và mật khẩu, đồng thời sử dụng biến keyPath để chỉ định hậu tố của tệp khóa bí mật RSA để bắt đầu yêu cầu đăng nhập.

Bước 2: Khi hàm formLogin() trong chương trình (/www/cgi-bin/mainfunction.cgi) phát hiện rằng biến keyPath không trống, nó sẽ bắt đầu hoạt động giải mã.

Bước 3: Theo biến keyPath, hàm formLogin() sẽ sử dụng tập tin tại đường dẫn /tmp/rsa/private_key_<keyPath> làm khóa bí mật RSA.

Bước 4: Hàm  formLogin()  thực hiện giải mã Base64 các trường tên người dùng và mật khẩu tương ứng, rồi ghi chúng vào /tmp/rsa/binary_loginfile. Sau đó nối các lệnh sau và giải mã chúng thông qua lệnh openssl: “openssl rsautl -inkey '/tmp/rsa/private_key_<keyPath>' -decrypt -in /tmp/rsa/binary_login”

Bước 5: Hàm formLogin() sử dụng tên và mật khẩu đã được giải mã để xác thực.

Trong quá trình xác thực, dễ nhận thấy giá trị của biến keyPath được sử dụng trong lệnh giải mã tài khoản và mật khẩu. Điều này dẫn đến việc kẻ tấn công có thể khai thác được lỗi thực thi lệnh tiền xác thực khi không có bộ lọc ký tự đặc biệt.

Hiện tại, Draytek đã vá lỗ hổng này bằng cách giới hạn độ dài của biến keypath xuống 30 và được định dạng hex.

Hình 1: Mã nguồn sau khi được vá bởi Draytek

Kịch bản tấn công khai thác lỗ hổng CVE-2020-8515

Ngay khi lỗ hổng CVE-2020-8515 được công bố, các hacker mũ đen đã đưa mã khai thác vào các bot để thưc hiện tấn công tự động trên phạm vi toàn thế giới. Dưới đây là một kịch bản được sử dụng phổ biến được theo dõi bởi netlab.

Bước 1: Tấn công sử dụng lỗ hổng CVE 2020-8515 để tải về và thực thi các tập tin độc hại đặt tại đường dẫn:

  • http://103[.]82[.]143[.]51:58172/vig/tcpst1
  • http://103[.]82[.]143[.]51:58172/vi1
  • http://103[.]82[.]143[.]51:58172/vig/mailsend.sh1

Bước 2: Sau khi thành công, kẻ tấn công có thể chèn vào một script để chặn bắt gói tin đi/đến trên các cổng 21, 25, 143 và 110. Sau đó, kẻ tấn công tải gói tin lên máy chủ tại đường dẫn https://103[.]82[.]143[.]51:58443/uploLSkciajUS.php.

Lưu lượng qua các cổng 21, 25, 143, 110 không được mã hoá, nên kẻ tấn công có thể dễ dàng thu thập mật khẩu FPT, email và các thông tin quan trọng khác được gửi qua email. Đây là tiền đề để kẻ tấn công có thể thực hiện tiếp các cuộc tấn công sâu hơn vào hệ thống.

Hình 2: Số lượng các thiết bị DrayTek Vigor có thể thống kê trên thế giới

Các firmware bị ảnh hưởng bởi lỗ hổng CVE-2020-8515

Theo thống kê từ nhà sản xuất, các thiết bị đang sử dụng firmware sau sẽ bị ảnh hưởng bởi lỗ hổng và sẽ cần nâng cấp bản vá sớm nhất có thể để tránh bị khi thác:

STT

Tên thiết bị

Tên bản firmware

1

Vigor2960

<  v1.5.1

2

Vigor300B

<  v1.5.1

3

Vigor3900

<  v1.5.1

4

VigorSwitch20P2121

<= v2.3.2

5

VigorSwitch20G1280

<= v2.3.2

6

VigorSwitch20P1280

<= v2.3.2

7

VigorSwitch20G2280

<= v2.3.2

8

VigorSwitch20P2280

<= v2.3.2

 

Khuyến cáo của chuyên gia

Các chuyên gia khuyên người dùng DrayTek Vigor nên kiểm tra và cập nhật hệ thống phần mềm kịp thời. Đồng thời, cần kiểm tra sự tồn tại của tiến trình tcpdump, tài khoản SSH lạ,... Nếu có phát hiện tồn tại các tiến trình này, người dùng phải đổi mật khẩu liên quan đến FPT, email và bất kỳ tài khoản nào được gửi qua email.