# Loạt lỗ hổng đang bị khai thác cho phép chiếm đoạt tài khoản admin WordPress

Vừa qua, các nhà nghiên cứu bảo mật tại Patchstack và DigitalOcean đã xác nhận hai lỗ hổng authentication bypass nghiêm trọng — CVE-2026-61979 và CVE-2026-15981 — trong plugin MiniOrange SAML 2.0 Single Sign-On (SSO) trên WordPress đang bị khai thác tích cực trong các cuộc tấn công opportunistic quy mô lớn. Cả hai lỗ hổng cho phép kẻ tấn công không cần xác thực giả mạo SAML authentication response và đăng nhập với tư cách bất kỳ người dùng nào trên website, bao gồm cả tài khoản administrator mà không cần password hay bất kỳ credential hợp lệ nào.

### **Thông tin chi tiết**

**CVE-2026-61979 — Signature Algorithm Confusion (Unauthenticated Privilege Escalation)**

*   *Định danh lỗ hổng:* **CVE-2026-61979**
    
*   *Điểm CVSS(3.1):* **8.1**
    
*   *Mức độ nghiêm trọng:* **HIGH** – Nghiêm trọng cao
    
*   *Mô tả:* CVE-2026-61979 là lỗ hổng signature algorithm confusion trong quá trình xử lý SAML response của MiniOrange SAML 2.0 SSO Plugin. Lỗ hổng phát sinh do plugin đọc thuật toán chữ ký (signature algorithm) trực tiếp từ SAML response do kẻ tấn công gửi đến thay vì enforce thuật toán đã được cấu hình bởi quản trị viên website. Đây là lớp lỗ hổng algorithm confusion (hay còn gọi là algorithm substitution attack) có lịch sử tấn công kéo dài từ các lỗ hổng JWT năm 2015 và sự cố SimpleSAMLphp năm 2018. Kẻ tấn công craft một SAML response sử dụng thuật toán chữ ký yếu hơn hoặc thuật toán mà plugin xử lý không đúng cách, từ đó qua mặt quá trình xác thực chữ ký và giả mạo thành công một phiên đăng nhập hợp lệ với tư cách bất kỳ user nào trên hệ thống.
    
*   *Phiên bản đã vá:* 17.0.5 (Standard edition)
    

**CVE-2026-15981 — Malformed Signature Accepted as Valid (Authentication Bypass)**

*   *Định danh lỗ hổng:* **CVE-2026-15981**
    
*   *Điểm CVSS(3.1):* **9.8**
    
*   *Mức độ nghiêm trọng:* **CRITICAL** – Cực kỳ nghiêm trọng
    
*   *Mô tả:* CVE-2026-15981 là lỗ hổng authentication bypass phát sinh từ một lỗi coding cơ bản nhưng cực kỳ nguy hiểm trong hàm `mo_saml_validate_signature()` của plugin. Hàm PHP `openssl_verify()` là hàm tri-state — trả về ba giá trị: `1` (chữ ký hợp lệ), `0` (chữ ký không hợp lệ), và `-1` (OpenSSL gặp lỗi nội bộ). Plugin thực hiện kiểm tra kết quả bằng loose boolean check thay vì strict equality check (`=== 1`). Trong PHP, giá trị `-1` được đánh giá là truthy (tương đương `true`). Kẻ tấn công gửi một chữ ký đã tuỳ chỉnh để kích hoạt lỗi nội bộ của OpenSSL, khiến `openssl_verify()` trả về `-1`. Plugin nhận `-1`, đánh giá là truthy và xử lý như thể chữ ký hợp lệ, cấp toàn quyền truy cập mà không thực sự xác thực được bất kỳ điều gì.
    
*   *Phiên bản đã vá:* 17.0.6 (Standard edition)
    

![](https://cdn.hashnode.com/uploads/covers/669e7a2f2c109ecd663148bd/0974491a-d98f-4a03-afee-027a01ffe3e6.png align="center")

**MiniOrange SAML 2.0 Single Sign-On (SSO) Plugin** (phát triển bởi Xecurify/miniOrange) là plugin WordPress cho phép tích hợp SAML 2.0 Single Sign-On, một cơ chế xác thực tập trung phổ biến trong môi trường doanh nghiệp. Thay vì người dùng phải nhớ nhiều tài khoản riêng biệt cho từng ứng dụng, SAML SSO cho phép đăng nhập một lần qua Identity Provider (IdP) tập trung (ví dụ: Microsoft Azure AD, Okta, OneLogin, Google Workspace) và tự động được xác thực vào tất cả các ứng dụng kết nối, bao gồm WordPress website của tổ chức. Plugin phiên bản free có hơn 10.000 cài đặt, nhưng phiên bản thương mại và enterprise phục vụ các tổ chức lớn hơn với số lượng cài đặt không được công bố công khai.

Điểm nguy hiểm cốt lõi của CVE-2026-61979 và CVE-2026-15981 nằm ở SAML protocol. SAML được xây dựng trên nền tảng tin tưởng chữ ký số: Identity Provider ký vào assertion "người dùng X đã được xác thực", và Service Provider (WordPress) tin tưởng assertion đó nếu chữ ký hợp lệ. Khi cơ chế xác thực chữ ký này bị bypass, toàn bộ mô hình tin tưởng của SAML sụp đổ, kẻ tấn công có thể tự mình viết assertion "tôi là admin" và WordPress sẽ chấp nhận hoàn toàn mà không hỏi thêm gì.

Lỗ hổng bắt nguồn từ hai lỗi kỹ thuật riêng biệt nhưng cùng hậu quả: CVE-2026-61979 phát sinh vì plugin không enforce thuật toán chữ ký phía server mà để kẻ tấn công tự chọn, vi phạm nguyên tắc cơ bản của cryptographic validation. CVE-2026-15981 phát sinh vì lập trình viên không đọc kỹ documentation của `openssl_verify()` hoặc không nhận ra rằng PHP's loose typing biến return value `-1` (lỗi) thành `true` (xác thực thành công). Đây là lỗi gần như là carbon copy của lỗ hổng JWT "algorithm:none" và SimpleSAMLphp signature bypass từ nhiều năm trước, cho thấy các lỗi tương tự vẫn tiếp tục xuất hiện trong các implementation mới.

Trong môi trường doanh nghiệp, nơi WordPress được dùng làm intranet, customer portal, hoặc internal knowledge base và tích hợp SAML SSO với Active Directory, một kẻ tấn công giả mạo thành công SAML assertion có thể không chỉ chiếm quyền admin WordPress mà còn tiếp cận toàn bộ nội dung nội bộ đang được host trên đó.

![](https://cdn.hashnode.com/uploads/covers/669e7a2f2c109ecd663148bd/5781866b-06b2-4e31-9f56-7393e129368e.png align="center")

### **Tổng quát quá trình khai thác CVE-2026-61979 + CVE-2026-15981**

Quá trình khai thác có thể được chia thành các giai đoạn sau:

1.  **Thu thập thông tin (Reconnaissance)**
    
    *   **Mục tiêu:** Xác định các WordPress website đang sử dụng MiniOrange SAML 2.0 SSO Plugin chưa được vá.
        
    *   **Hành động:** Kẻ tấn công quét Internet tìm các website WordPress có endpoint SAML (`/wp-login.php?action=sso` hoặc endpoint SAML callback tương đương). Xác định plugin qua HTTP response, HTML source, hoặc các công cụ fingerprint WordPress. Xác định version plugin nếu có thể. Khai thác mang tính opportunistic, kẻ tấn công không nhắm vào tổ chức cụ thể mà quét diện rộng và tấn công bất kỳ website nào còn vulnerable.
        
2.  **Craft SAML Response Độc hại — CVE-2026-61979 (Algorithm Confusion)**
    
    *   Kẻ tấn công khởi tạo một SAML authentication flow với website mục tiêu gửi AuthnRequest tới IdP.
        
    *   Thay vì đến IdP thật, kẻ tấn công intercept hoặc tạo trực tiếp một SAML Response giả mạo.
        
    *   Trong SAML Response giả mạo, kẻ tấn công tự đặt trường SignatureMethod thành một thuật toán yếu hoặc thuật toán mà plugin xử lý sai (ví dụ: RSA thay vì RSA-SHA256, hoặc HMAC thay vì RSA).
        
    *   Do plugin đọc algorithm từ response thay vì enforce cấu hình server, nó sử dụng thuật toán do kẻ tấn công chỉ định để verify dẫn đến xác thực sai hoặc bypass hoàn toàn.
        
3.  **Craft Chữ ký Lỗi — CVE-2026-15981 (PHP Type Confusion)**
    
    *   Song song hoặc thay thế, kẻ tấn công gửi SAML Response với chữ ký được craft để kích hoạt lỗi nội bộ của OpenSSL.
        
    *   `openssl_verify()` trả về `-1` (lỗi nội bộ) thay vì `1` (hợp lệ) hoặc `0` (không hợp lệ).
        
    *   Hàm `mo_saml_validate_signature()` thực hiện `if ($result)` thay vì `if ($result === 1)`.
        
    *   Trong PHP, `-1` là truthy → điều kiện đúng → plugin xử lý như chữ ký đã được verify thành công.
        
4.  **Giả mạo Assertion Admin (Admin Impersonation)**
    
    *   Trong SAML Response giả mạo, kẻ tấn công tự khai báo **NameID** (username) là tài khoản administrator của website mục tiêu.
        
    *   Do chữ ký đã được "verify" thành công (qua một trong hai bug trên), plugin tin tưởng assertion và tạo WordPress session tương ứng.
        
    *   Kẻ tấn công nhận được WordPress admin session cookie hợp lệ, đăng nhập thành công với tư cách admin.
        
5.  **Hậu khai thác (Post-Exploitation)**
    
    *   Với quyền admin WordPress, kẻ tấn công có toàn quyền kiểm soát website:
        
        *   Cài đặt plugin độc hại, triển khai webshell PHP để duy trì truy cập lâu dài.
            
        *   Tạo tài khoản admin backdoor mới (hidden account).
            
        *   Đánh cắp toàn bộ dữ liệu người dùng, nội dung private, credential từ database.
            
        *   Inject mã độc vào website để phát tán malware, phishing, hoặc cryptominer cho khách truy cập.
            
        *   Trong môi trường doanh nghiệp: truy cập nội dung intranet, tài liệu nội bộ, thông tin khách hàng.
            

### **Khuyến nghị & Khắc phục**

Bản vá đã có sẵn cho phiên bản Standard edition và các phiên bản trả phí được vá âm thầm. Đội ngũ FPT Threat Intelligence khuyến nghị người dùng và quản trị viên cần cân nhắc thực hiện ngay các hành động sau:

*   **Cập nhật bản vá khẩn cấp:** Cập nhật ngay MiniOrange SAML 2.0 SSO Plugin lên phiên bản mới nhất:
    
    *   Standard edition: cập nhật lên 17.0.6 hoặc cao hơn (vá cả CVE-2026-61979 tại 17.0.5 và CVE-2026-15981 tại 17.0.6).
        
    *   Phiên bản trả phí và enterprise: liên hệ trực tiếp MiniOrange/Xecurify để xác nhận phiên bản đã vá tương ứng, không dựa vào vulnerability scanner vì sáu phiên bản này không được ghi nhận trong database công khai.
        
*   **Biện pháp tạm thời nếu chưa vá kịp:** Deactivate và xóa plugin ngay lập tức nếu chưa có bản vá hoặc chưa xác nhận được phiên bản đã vá. Vì lỗ hổng không cần xác thực và dễ tự động hóa, deactivation là biện pháp duy nhất loại bỏ hoàn toàn rủi ro trong khi chờ vá.
    
*   **Kiểm tra dấu hiệu xâm phạm:** Vì khai thác đã diễn ra trước khi được công bố rộng rãi, cần rà soát ngay:
    
    *   Danh sách WordPress admin account, tìm tài khoản lạ hoặc được tạo gần đây không theo kế hoạch.
        
    *   Plugin list: kiểm tra plugin lạ được cài đặt không được phép.
        
    *   File PHP mới hoặc bị sửa đổi trong `wp-content/`, `wp-admin/`, `wp-includes/`.
        
    *   WordPress và server access log để tìm các SAML SSO login thành công từ IP không được nhận dạng.
        
    *   Database: kiểm tra bảng `wp_users` tìm tài khoản admin không được phép.
        
*   **Rotate Credential và Session:** Nếu phát hiện dấu hiệu xâm phạm, thực hiện ngay:
    
    *   Đổi mật khẩu tất cả tài khoản admin WordPress.
        
    *   Regenerate WordPress authentication keys và salts trong `wp-config.php` (vô hiệu hóa toàn bộ session hiện tại).
        
    *   Liên hệ Identity Provider để review SAML session log và phát hiện assertion giả mạo.
        
*   **Enforce Strict Signature Validation (cho developer):** Đây là cảnh báo cho toàn bộ developer triển khai SAML, JWT, hoặc OpenID Connect: luôn enforce thuật toán chữ ký phía server, không đọc từ dữ liệu đến. Khi sử dụng `openssl_verify()`, luôn kiểm tra `=== 1` thay vì loose boolean. Áp dụng cho cả JWT (`alg: none` attack), SAML, và bất kỳ cơ chế xác thực chữ ký nào.
    
*   **Giám sát SAML Authentication Flow:** Bật logging đầy đủ cho SAML SSO flow và cấu hình alert khi phát hiện:
    
    *   SAML assertion với `NameID` là admin account nhưng từ IP không phải trusted IdP.
        
    *   Thay đổi `SignatureMethod` trong SAML response so với cấu hình được phép.
        
    *   Đăng nhập admin thành công bên ngoài giờ làm việc hoặc từ địa lý bất thường.
        

### **Tham khảo**

*   [SecurityWeek – WordPress Websites Targeted via MiniOrange Plugin Vulnerabilities](https://www.securityweek.com/wordpress-websites-targeted-via-miniorange-plugin-vulnerabilities/)
    
*   [The Hacker News – Attackers Target miniOrange SAML Flaws That Can Grant WordPress Admin Access](https://thehackernews.com/2026/08/attackers-target-miniorange-saml-flaws.html)
    
*   [Patchstack – CVE-2026-61979 and CVE-2026-15981 Advisory](https://patchstack.com/database/wordpress/plugin/miniorange-saml-20-single-sign-on/)
    
*   [SecurityAffairs – Two CVSS 9.8 Auth Bypasses in miniOrange SAML WordPress Plugin Were Exploited Before Any Database Even Listed the Paid Editions as Vulnerable](https://securityaffairs.com/197815/security/two-cvss-9-8-auth-bypasses-in-miniorange-saml-wordpress-plugin-were-exploited-before-any-database-even-listed-the-paid-editions-as-vulnerable.html)
    
*   [TechTimes – Attackers Exploit WordPress SSO Plugin; Six Paid Editions Were Never in Any Vulnerability Database](https://www.techtimes.com/articles/325482/20260825/attackers-exploit-wordpress-sso-plugin-six-paid-editions-were-never-any-vulnerability-database.htm)
