Plugin WordPress AMP bị khai thác
Bài viết này sẽ thảo luận Lỗ hổng Chèn mã (Code Injection Vulnerability) trong các phiên bản cũ (Phiên bản 0.9.97.20 và cũ hơn) của Plugin WordPress AMP. Chúng tôi mô tả AMP là gì và plugin WordPress AMP chứa lỗ hổng có thể khai thác.
Accelerated Mobile Pages (AMP) – Giới thiệu ngắn gọn
AMP là công nghệ trang web dự án của Google ban đầu nhằm tăng đáng kể hiệu suất trang web cho người dùng di động. Theo trang dự án, AMP là thư viện mã nguồn mở cung cấp cách dễ dàng tạo trang web tải gần như tức thì cho người dùng. Trang AMP hoạt động như trang web bạn có thể liên kết và được kiểm soát bởi bạn.
Trang AMP bao gồm 3 thành phần:
- AMP HTML: HTML cho trang AMP hơi khác với một số hạn chế để không phải tải tất cả tính năng khi trang mở.
- AMP JS: Thành phần lõi này chịu trách nhiệm tải tất cả tài nguyên khi trang mở, bằng cách làm cho tất cả nội dung đến (inbound content) bất đồng bộ (asynchronous), để không nội dung nào chặn hiển thị nội dung bên ngoài.
- AMP Cache: Thành phần này là mạng phân phối nội dung (CDN) dựa trên proxy để phân phối tất cả tài liệu AMP hợp lệ. Tất cả tài liệu, file JS và hình ảnh tải từ cùng nguồn gốc dùng HTTP 2.0 đảm bảo hiệu quả tối đa.
Lỗ hổng Chèn mã trong Plugin AMP for WP
Plugin liên quan là "AMP for WP – Accelerated Mobile Pages". Plugin này giúp hiển thị trang thành định dạng Accelerated Mobile Pages cho thời gian tải nhanh trên nền tảng di động. Lỗ hổng cơ bản trong phiên bản cũ của plugin (Phiên bản 0.9.97.20 và cũ hơn) là Xác thực và Quản lý phiên bị lỗi (Broken Authentication and Session Management).
Các lỗ hổng này được phát hiện do có nhiều khai thác như chèn file, tải file backdoor (kể cả wp-config.php), lỗ hổng DDoS, nâng cấp database, ghi đè metadata bài viết và tùy chọn, khai thác băng thông (tải toàn bộ thư viện media WP), và chèn bài viết WordPress không được lọc tận dụng lỗ hổng. Lỗ hổng chèn mã chèn mã độc vào trang web qua các phương pháp như cookie và kịch bản phía trình duyệt. Điều này cho phép chúng đánh cắp thông tin nhạy cảm hoặc gây rò rỉ dữ liệu.
Tại sao điều này xảy ra?
Điều này xảy ra vì tài sản quản lý phiên của chúng ta không được bảo vệ đúng cách. Điều này xảy ra nếu:
- Thông tin xác thực người dùng không được bảo vệ khi lưu trữ bằng hashing hoặc mã hóa.
- Thông tin đăng nhập có thể đoán hoặc ghi đè qua chức năng quản lý tài khoản yếu (tạo tài khoản, đổi/khôi phục mật khẩu và session ID yếu).
- Session ID bị lộ trong URL (ví dụ: viết lại URL).
- Session ID dễ bị tấn công session fixation.
- Session ID hoặc phiên người dùng hoặc token xác thực, đặc biệt token đăng nhập đơn (SSO), không được vô hiệu hóa đúng cách khi đăng xuất.
- Session ID không được xoay vòng sau đăng nhập thành công.
- Mật khẩu, Session ID và thông tin đăng nhập khác được gửi qua kết nối không mã hóa
Lỗ hổng này được phân loại là CWE-287 trong Danh sách Lỗ hổng chung (Common Weakness Enumeration).
Hậu quả có thể của lỗ hổng này bao gồm phơi bày tài nguyên nhạy cảm hoặc chức năng cho người dùng không dự định. Do đó kẻ tấn công có quyền truy cập thông tin nhạy cảm và thậm chí thực thi mã tùy ý trên trang web. Cũng, lỗ hổng plugin cụ thể này là vấn đề nghiêm trọng cho trang web cho phép đăng ký người dùng.
Chiến lược giảm thiểu
Chiến lược giảm thiểu đơn giản nhất để an toàn trước lỗ hổng là:
- Cập nhật lên Plugin WordPress AMP mới nhất (Phát hành sau Phiên bản 0.9.97.20)
- Vô hiệu hóa plugin hiện tại cho đến khi lỗ hổng được khắc phục
Cuối cùng, nếu bạn muốn chúng tôi kiểm tra lỗ hổng cho trang web bật AMP, hãy cho chúng tôi biết bằng cách truy cập trang web của chúng tôi.
Lưu ý: Plugin bị ảnh hưởng gần đây đã bị gỡ bỏ tạm thời khỏi thư viện plugin WordPress do code dễ bị tấn công, nhưng không nhà phát triển cũng không nhóm WordPress tiết lộ vấn đề chính xác trong plugin.