Hướng dẫn khắc phục lỗ hổng zeroday trong MySQL
Các nhà nghiên cứu vừa mới công bố 02 lỗ hổng zeroday nguy hiểm trong MySQL – một hệ cơ sở dữ liệu lớn và được sử dụng rất phổ biến hiện nay trên các trang web. Lỗ hổng này cho phép tin tặc có thể vượt qua các cơ chế bảo mật của hệ thống và thực thi các mã độc từ xa. Trong đó, lỗ hổng có mã CVE là ...
Các nhà nghiên cứu vừa mới công bố 02 lỗ hổng zeroday nguy hiểm trong MySQL – một hệ cơ sở dữ liệu lớn và được sử dụng rất phổ biến hiện nay trên các trang web. Lỗ hổng này cho phép tin tặc có thể vượt qua các cơ chế bảo mật của hệ thống và thực thi các mã độc từ xa. Trong đó, lỗ hổng có mã CVE là CVE-2016-6662 hiện đã được công khai mã khai thác, tin tặc có thể bị tin tặc khai thác và chèn các đoạn mã nguy hiểm vào các tệp tin cấu hình của MySQL nhằm thay đổi các cài đặt của MySQL và thực thi các mã khai thác từ xa.
Lỗ hổng này vẫn có thể khai thác ngay cả khi các module bảo mật trong nhân Linux là SELinux or App Armor được kích hoạt (Hai cơ chế này thường sử dụng để ngăn chặn việc ghi tệp tin ra bên ngoài thông qua câu lệnh SQL sử dụng các hàm INTO OUTFILE, DUMPFILE).
Phân tích lỗ hổng Zeroday
Lỗ hổng sẽ được khai thác bằng việc chèn các đoạn mã tùy ý vào các tệp tin cấu hình của mysql thông qua truy vấn SQL. Khai thác có khả năng thành công nếu đảm bảo đủ 02 điều kiện:
- Tin tặc có quyền thực thi câu lệnh SQL tùy ý (có quyền SUPER privilege hoặc quyền SELECT/FILE). Có thể có 02 trường hợp
- Ứng dụng tồn tại lỗ hổng SQL Injection, cho phép tin tặc thực thi lệnh SQL tùy ý.
- Hệ thống tồn tại lỗ hổng cho phép tin tặc có thể truy cập và gửi câu lệnh truy vấn SQL trực tiếp vào MySQL hoặc thông qua một giao diện quản lý như Phpmyadmin.
- Quyền sở hữu (owner) của các tệp tin cấu hình của MySQL (/etc/my.cnf, /etc/mysql/my.cnf…) trùng với quyền mysql, ví dụ:
- drwx—— 4 mysql mysql 4096 Jul 28 06:41 /var/lib/mysql/ (Nhiều hướng dẫn trên Internet thường khuyên quản trị nên thiết lập quyền như thế này)
Nếu khai thác lỗ hổng thành công tin tặc có thể:
- Làm cho MySQL không thể khởi động (startup) do tệp tin cấu hình bị lỗi.
- Ngoài ra với việc phân quyền SELECT/FILE, tin tặc có thể tải các module trái phép này vào MySQL và có thể thực thi mã độc từ xa, module này hiện cũng đã được chia sẻ rộng rãi trên Internet, chi tiết có thể xem tại đây.
Cách thức khắc phục lỗ hổng Zeroday trong MySQL
Hiện tại, MariaDB và PerconaDB đã có bản vá, người dùng có thể cập nhật các bản vá này. Tuy nhiên với các phiên bản MySQL khác hoặc bạn không thể cập nhật bản vá mới này các bạn nên thực hiện các khuyến cáo sau để tránh bị khai thác:
- Chắc chắn rằng website của bạn không tồn tại các lỗ hổng SQL Injecion, hay các lỗ hổng cho phép thực thi câu lệnh SQL từ xa (ví dụ như Phpmyadmin – hãy sử dụng mật khẩu đủ mạnh nếu nhất thiết phải sử dụng) bằng cách dò quét hệ thống bằng các công cụ tự động hoặc liên hệ với các chuyên gia, đơn vị cung cấp dịch vụ này để được hỗ trợ.
- Kiểm tra quyền sở hữu với các tệp tin cấu hình my.cnf, không thiết lập chung chủ sở hữu với dịch vụ mysql.
- Nếu website của bạn đặt chung máy chủ với các website khác, hãy thận trọng vì với lỗ hổng này tin tặc có thể thực thi được lệnh với quyền root , do đó sẽ ảnh hưởng tới website của bạn, hãy liên lạc với các chủ quản của các máy chủ này để họ cập nhật bản vá hoặc có các biện pháp phòng tránh.