- Sản phẩm & Dịch vụSản phẩm & Dịch vụ
- Giải phápGiải pháp
- Bảng giáBảng giá
- Công tyCông ty
- Tài liệuTài liệu
vi
vi
vnth4nhnt
Đọc bài viết tiếng Anh tại đây (Read the English version here)

Joomla CMS là một trong những hệ quản trị nội dung mã nguồn mở phổ biến nhất, hiện đang vận hành hàng triệu website trên toàn cầu. Kể từ phiên bản 4.0, Joomla đã bổ sung một lớp REST API native, cho phép các ứng dụng bên ngoài – từ headless frontend, mobile backend đến các tích hợp bên thứ ba – tương tác trực tiếp với dữ liệu của hệ thống mà không cần thông qua giao diện quản trị.
Lớp REST API này chia sẻ cùng hệ MVC với giao diện quản trị, song được thiết kế với bộ controller, dispatcher và cơ chế phân quyền độc lập. Sự tách biệt đó dễ tạo ra bất đối xứng về mức độ bảo vệ: cùng một resource được kiểm soát chặt chẽ ở giao diện quản trị nhưng lại bị bỏ sót ở lớp API. Cả hai lỗ hổng mà CyStack phát hiện đều là biểu hiện của mô hình này.
Trong quá trình nghiên cứu REST API của Joomla CMS, CyStack đã phát hiện hai lỗ hổng độc lập ở các webservice endpoint. Cả hai đã được báo cáo cho Joomla Security Strike Team và được vá trong Joomla 5.4.4 và 6.0.4, phát hành ngày 31/03/2026.
| CVE | Loại hình lỗ hổng | Phạm vi | Phiên bản bị ảnh hưởng | Phiên bản vá |
|---|---|---|---|---|
| CVE-2026-21630 | SQL Injection (CWE-89) | com_content articles endpoint |
4.0.0 – 5.4.3 6.0.0 – 6.0.3 |
5.4.4, 6.0.4 |
| CVE-2026-23899 | Improper Access Control (CWE-284) | com_config endpoints |
4.0.0 – 5.4.3 6.0.0 – 6.0.3 |
5.4.4, 6.0.4 |
Chuyên gia từ CyStack khuyến nghị quản trị viên đang vận hành Joomla nâng cấp sớm nhất có thể.
Endpoint GET /api/index.php/v1/content/articles nhận hai parameter list[ordering] và list[direction] từ client nhưng không kiểm tra giá trị theo whitelist của model. Các giá trị này sau đó được đưa vào mệnh đề ORDER BY của query qua một hàm escape chỉ an toàn với quoted string literal – không an toàn khi dùng cho identifier hoặc expression như trong ORDER BY.
Bất kỳ người dùng nào có quyền gọi API đều có thể chèn SQL expression tùy ý vào query để truy xuất dữ liệu từ database – bao gồm password hash của tài khoản admin và active session token. CyStack đã xác nhận khai thác bằng cả time-based và boolean-based blind injection trên instance Joomla 6.0.3.
Lỗ hổng là regression của CVE-2025-22207 – cùng pattern đã được vá ở một component khác, nhưng bản vá khi đó chưa được mở rộng sang toàn bộ API surface. Đây cũng là lý do Joomla đưa bản vá CVE-2026-21630 vào base controller của API (ApiController) thay vì chỉ sửa riêng com_content.
com_content API để truy xuất toàn bộ dữ liệu từ database Joomla, bao gồm các bảng #__users, #__session, configuration và dữ liệu của mọi extension dùng chung database.#__session có thể lấy trực tiếp, cho phép chiếm phiên administrator mà không cần crack password.core.login.api) dẫn tới full site takeover.Credit: Antonio Morales (GitHub Security Lab Taskflow Agent) và vnth4nhnt (CyStack).
Controller API của com_config không check authorization core.admin trước khi trả về hoặc cho phép sửa đổi global configuration. Trong khi giao diện administrator yêu cầu permission này ở cả hai tầng dispatcher và controller, lớp API chỉ kế thừa check core.edit mặc định từ base controller.
Hệ quả là bất kỳ người dùng nào có quyền truy cập API đều có thể đọc toàn bộ configuration của Joomla – bao gồm database credentials, secret key phục vụ session và token integrity, SMTP credentials, và các component-level token như update token của com_joomlaupdate. Endpoint cập nhật configuration cũng chỉ yêu cầu core.edit, cho phép người dùng từ nhóm Editor trở lên sửa đổi global configuration.
Mặc định, Joomla chỉ cấp quyền core.login.api cho nhóm Super User, nên attack surface ban đầu khá hạn chế. Tuy nhiên, các deployment thực tế thường mở quyền API cho user group cấp thấp hơn để phục vụ headless CMS, mobile backend và third-party integration – trong những môi trường này, lỗ hổng cho phép rò rỉ toàn bộ thông tin nhạy cảm từ một tài khoản không có đặc quyền administrator.
secret key: Khóa HMAC dùng cho session và authentication token bị lộ, cho phép attacker forge API bearer token hợp lệ cho bất kỳ tài khoản nào có Joomla Token được cấu hình, kể cả Super User.sendmail path (dẫn đến Remote Code Execution khi chain với vector khác), bật debug mode làm lộ stack trace, hoặc chỉnh sửa CORS/session settings.com_joomlaupdate bị lộ, có khả năng thao túng quy trình tự cập nhật Joomla (auto-update endpoint).Credit: vnth4nhnt (CyStack).
secret key, database credentials và SMTP credentials.core.login.api về mức tối thiểu cần thiết.| Ngày | Sự kiện |
|---|---|
| 05/03/2026 | Lỗ hổng SQL Injection được báo cáo bởi Antonio Morales (GitHub Security Lab Taskflow Agent) |
| 09/03/2026 | Lỗ hổng SQL Injection được báo cáo độc lập bởi vnth4nhnt (CyStack) |
| 09/03/2026 | Lỗ hổng Improper Access Check được báo cáo bởi vnth4nhnt (CyStack) |
| 31/03/2026 | Joomla 5.4.4 và 6.0.4 phát hành, vá cả hai lỗ hổng. Advisory được công bố. |

Reading Time: 2 minutes CyStack Advisory ID CSA-2025-01 CVE IDs CVE-2025-59837 Severity High CVSS v3 Base 7.2 Recently, I analyzed a security […]

Reading Time: 2 minutesCyStack Advisory ID CSA-2022-01 CVE IDs CVE-2022-41938 Severity Critical CVSS v3 Base 9.0 Synopsis CyStack’s researchers recently discovered a Stored […]

Reading Time: 3 minutesCyStack Advisory ID CSA-2021-01 CVE IDs CVE-2021-44832 Severity Critical CVSS v3 Base 10.0 Synopsis Cyclos is a payment software created […]