Một lỗ hổng trong MySQL và MariaDB vừa được công bố (CVE-2012-2122) cho phép tin tặc có thể chiếm toàn quyền hệ thống một cách dễ dàng bằng cách nhập mật khẩu nhiều lần.
Cuối tuần vừa qua, ông Sergei Golubchik, điều phối bảo mật của MariaDB đã thông báo về một lỗ hổng bảo mật cực kì nghiêm trọng trong hệ cơ sở dữ liệu mã nguồn mở nổi tiếng nhất thế giới, được các công ty công nghệ hàng đầu thế giới như Facebook, Google sử dụng.
Khi người dùng nhập mật khẩu, mã băm của nó được tính và so sánh với giá trị được lưu sẵn. Tuy nhiên, một lỗi ép kiểu trong hàm strcmp()
đã khiến cho MySQL và MariaDB vẫn chấp nhận mật khẩu cho dù dữ liệu nhập vào là sai, với xác xuất là 1/256 (khoảng 0,4%). Nghĩa là bạn chỉ cần biết tên đăng nhập một tài khoản nào đó (tài khoản "root" thường có mặt trong hầu hết các cấu hình), kết nối với CSDL và thử mật khẩu khoảng vài trăm lần, bạn sẽ tự động đăng nhập vào hệ thống. Với cầu hình hiện tại, việc này chỉ mất không đến một giây, do đó việc đặt mật khẩu trở nên vô ích.
Vào tháng 4/2012, MariaDB cung cấp hàng loạt bản nâng cấp cho các phiên bản 5.1, 5.2, 5.3 và 5.5 vì "có một lỗ hổng bảo mật cực kì nghiêm trọng trong mọi phiên bản MariaDB" - có lẽ đây là lỗ hổng đã được đề cập đến. Việc hàng loạt website lớn bị lộ CSDL gần đây như LinkedIn, eHarmony, Last.fm có lẽ cũng liên quan đến lỗ hổng này.
Rất may là không phải hệ thống nào cũng vướng phải lỗ hổng bảo mật này. Tại thời điểm công bố (ngày 9/6/2012), người dùng sử dụng phiên bản chính thức của MySQL và MariaDB (gồm cả Windows), RHEL 4, 5, 6, CentOS, Ubuntu 32 bit, Debian 5.0, 6.0 đều không gặp lỗi này. Người dùng MySQL tích hợp trong các HĐH sau chưa được khắc phục:
- Ubuntu 64 bit (10.04, 10.10, 11.04, 11.10, 12.04)
- OpenSuSE 12.1 64 bit
- Debian unstable 64 bit (bản tiền thử nghiệm)
- Fedora mọi phiên bản
Người sử dụng các HĐH trên nên liên tục kiểm tra bản cập nhật mới nhất để vá lỗi, hoặc thay thế phiên bản MySQL đang sử dụng bằng phiên bản chính thức do Oracle/MySQL và MariaDB cung cấp.