|
Trong vài ngày qua (từ ngày 15/6 - 18/6/2009), một vụ việc gây xôn xao cộng đồng Joomla Việt nam đã xảy ra khi diễn đàn Joomla lớn nhất dành cho người Việt (Joomlaviet.org) - nơi Vinaora từng là thành viên Ban quản trị đã bị một hacker tự xưng là Mrxxx liên tiếp tấn công. Nguyên nhân cụ thể cho đến nay chưa được làm rõ tuy nhiên điều đó đã làm cho nhiều người, đặc biệt là các fan của Joomla băn khoăn tự hỏi "Liệu Joomla có thực sự an toàn hay không?". Và để trả lời câu hỏi này, các bạn hãy cùng Vinaora xem xét danh sách hơn 100 lỗ hổng bảo mật (security vulnerability) liên quan đến Joomla được công bố trong suốt một năm qua (từ tháng 7/2008 - 6/2009) và kiểm nghiệm xem liệu có đúng như vậy không và liệu chúng ta có thể triển khai những biện pháp bảo vệ nào.
Đầu tiên là danh sách các lỗ hổng, chúng ta có thể tham khảo từ các nguồn uy tín sau: Như chúng ta thấy, có rất nhiều lỗi đã được công bố, khoảng 100-130 lỗi, nghĩa là trung bình cứ mỗi tháng có 9-11 lỗi được phát hiện, tuy nhiên nếu xem xét kỹ thì những lỗi do chính Joomla! gây ra lại rất nhỏ (chỉ có 1 lỗi thực sự nghiêm trọng), còn phần lớn các lỗi còn lại đều do các thành phần mở rộng được cung cấp bởi các hãng thứ ba gây ra. Bây giờ chúng ta sẽ lần lượt xem xét các lỗi này. 1. Lỗi Joomla! Password Reset VulnerabilityMô tả: Lỗi này rất nguy hiểm khi cho phép các hacker có thể thay mật khẩu admin. Lỗi này được công bố vào tháng 8/2008 và ảnh hưởng lên các phiên bản từ 1.5.5 trở về trước. Giải pháp phòng chống: Tuyệt đối không sử dụng tài khoản mặc định ban đầu có username=admin. Bạn hãy tạo một tài khoản Super Administrator mới (chẳng hạn vinaora), đăng nhập bằng tài khoản mới này, sau đó vô hiệu hóa (disable) hoặc xóa tài khoản có tên admin. 2. Lỗi SQL Injection
Tỷ lệ: Đây là lỗi phổ biến nhất, chiếm khoảng 70% số lỗi được công bố. Mô tả: Tất cả các lỗi này đều do các component của các hãng thứ ba gây ra. Lỗi SQL Injection là lỗi nguy hiểm khi cho phép các hacker có thể truy vấn vào cơ sở dữ liệu, đặc biệt là bảng "jos_user" nơi chứa thông tin về tài khoản của người dùng. Giải pháp phòng chống: Mặc dù những lỗi này đều nguy hiểm, tuy nhiên mã khai thác lỗi này đều có thể bị vô hiệu hóa hoàn toàn khi chúng ta thay đổi phần tiền tố của các bảng trong cơ sở dữ liệu, nghĩa là thay đổi phần tiền tố mặc định "jos_" bằng một tiền tố bất kỳ. Khi đó hacker hầu như sẽ không còn khả năng tiếp cận với các bảng trong cơ sở dữ liệu và không thể tiến hành các truy vấn ác ý. 3. Lỗi RFI (Remote File Include)
Tỷ lệ: Lỗi này nhiều thứ hai sau lỗi SQL Injection khi chiếm tới 13%. Mô tả: Lỗi RFI cho phép các hacker có thể include một file từ server khác. Tuy nhiên tất cả những ai đang dùng Joomla! 1.5 native (không bật chế độ tương thích ngược - Legacy) đều có thể yên tâm vì các lỗi này chỉ bị khai thác trên Joomla! 1.0. Giải pháp phòng chống: Do lỗi này sử dụng các biến $mosConfig_absolute_path hoặc $mosConfig_live_site nên chỉ cần dùng file .htaccess (được cung cấp kèm theo Joomla!) để chặn các truy vấn nguy hiểm này. File .htaccess cần có các dòng sau: # Block out any script trying to set a mosConfig value through the URL RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to set a PHP GLOBALS variable via URL RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] 4. Lỗi LFI (Local File Include)Tỷ lệ: Lỗi này chiếm khoảng 5%. Mô tả: Lỗi này cho phép hacker include một file từ một vị trí bất kỳ trên cùng host (chẳng hạn file /etc/passwd - nơi chứa thông tin về các tài khoản của host). Giải pháp phòng chống: Sử dụng file .htaccess để chặn tất cả các xử lý include tới một vị trí nằm ngoài thư mục web của bạn, bạn có thể thử thêm dòng sau vào file .htaccess php_value open_basedir /path/to/your/site/ Trong đó /path/to/your/site/ là đường dẫn tới thư mục chứa website của bạn (chẳng hạn /home/vinaora.com/public_html). Sau đó mở trang quản trị và chuyển tới menu Help >> System Info >> tab PHP Information và tìm mục open_basedir để xem nó đã được gán với đường dẫn nói trên hay chưa. Nếu không thành công, hãy yêu cầu Hosting xử lý giúp bạn. 5. Lỗi XSS (Cross-site scripting)
Tỷ lệ: Lỗi này chiếm khoảng 4%. Mô tả: Cho phép hacker thực thi các đoạn mã script trên website và trong trường hợp hacker dụ được một tài khoản có quyền administror / super administrator mở đường dẫn có chứa đoạn mã script trên, hacker có thể lấy được tài khoản admin cũng như tiến hành cài đặt tự động một thành phần mở rộng bất kỳ. Giải pháp phòng chống: Sử dụng file .htaccess (file này được cung cấp kèm theo Joomla!) để chặn tất cả các đường dẫn có chứa thẻ "<script>" hoặc "%3Cscript%3E" . File này cần có dòng sau: # Block out any script that includes a <script> tag in URL RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] 6. Lỗi Directory TraversalTỷ lệ: Lỗi này chiếm khoảng 3%. Mô tả: Cho phép hacker "soi" toàn bộ cấu trúc thư mục website của bạn trên server. Mặc dù lỗi này không cho phép hacker trực tiếp can thiệp vào website của bạn nhưng hacker có thể lợi dụng lỗ hổng này để làm bàn đạp cho các tấn công tiếp theo. Giải pháp phòng chống: Không có giải pháp phòng chống hoàn hảo do vậy bạn cần luôn theo dõi và cập nhật các phiên bản mới nhất của Joomla! và các thành phần mở rộng khác mà bạn đã cài đặt. 7. Các lỗi khác:
Tỷ lệ: Khoảng 3% Mô tả: Một số lỗi có mức nguy hiểm cao khi cho phép hacker thực thi các đoạn mã từ xa hoặc download một file bất kỳ trên hosting... Tuy nhiên rất may là những lỗi này chỉ xảy ra với các component ít tên tuổi hoặc đang ở giai đoạn thử nghiệm alpha/beta. Giải pháp phòng chống: Không cài đặt các thành phần mở rộng đang ở giai đoạn thử nghiệm alpha/beta, thậm chí là RC (Release Candiate) và chỉ lựa chọn các thành phần mở rộng được cung cấp bởi các công ty có uy tín. Kết luận:Ngoài một lỗi nguy hiểm do chính Joomla! gây ra thì phần lớn những lỗi còn lại đến từ các thành phần mở rộng do các hãng thứ ba cung cấp. Do vậy khó có thể nói "Joomla không an toàn" mà cần phải đặt câu hỏi "Liệu chúng ta có nên cài đặt một cách vô tội vạ các thành phần mở rộng mà không kiểm tra chúng một cách kỹ lưỡng hay không". Trả lời được câu hỏi đó tức là chúng ta đã tự bảo vệ được chính mình. Keyword:- joomla, hacker,website, script, component, .htaccess, joomla 1.5, joomla 1.0
- lỗi, giải pháp, phòng chống, thành phần, mở rộng, nguy hiểm, an toàn, giải pháp phòng chống, thực sự an toàn
|