{"items":[{"id":"NVI-00017587","kind":"vulnerability","title":"Apache MINA: Critical Deserialization Allow-list Bypass via resolveProxyClass","revision":1,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-v3pr-hxpr-mfm8","CVE-2026-47065"],"plain_summary":"GitHub lists this reviewed advisory for org.apache.mina:mina-core, org.apache.mina:mina-core, org.apache.mina:mina-core. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-276d95b6d5f0e341fcbd6b23f8ab3401"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-07-13T17:24:48.000Z","value":"9.8 critical","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-276d95b6d5f0e341fcbd6b23f8ab3401"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-276d95b6d5f0e341fcbd6b23f8ab3401","url":"https://github.com/advisories/GHSA-v3pr-hxpr-mfm8","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-v3pr-hxpr-mfm8","publisher":"GitHub Advisory Database","observed_at":"2026-11-04T23:34:12.429Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-276d95b6d5f0e341fcbd6b23f8ab3401"],"technology":"org.apache.mina:mina-core","known_exclusions":[],"conditions_summary":"ZDRES-232: resolveProxyClass Not Overridden - acceptMatchers Filter Bypass via java.lang.reflect.Proxy\n\n\nAssessment: Fully addressed.\n\n\nWhen the serialised stream contains a TC_PROXYCLASSDESC (the marker for a java.lang.reflect.Proxy ), JDK’s ObjectInputStream.readProxyDesc() is dispatched. JDK then calls the default  ObjectInputStream.resolveProxyClass(interfaces) implementation, which performs Class.forName(intf, false, latestUserDefinedLoader()) for EACH interface name and constructs the proxy class â€” bypassing the accepted classes list .\n\n\nZDRES-233: Class.forName(name, initialize=true, classLoader) in readClassDescriptor Triggers Static Initialiser of Allow-Listed Classes\n\n\nAssessment: Fully addressed.\n\n\nFor ANY class on the allow-list, deserialising a stream that names it triggers the class’s (static initialiser) BEFORE any instance is constructed. This means an attacker who supplies a class name on the allow-list (e.g., the developer wrote accept(“com.myapp.*\") , attacker supplies com.myapp.SomeClass ) causes  of SomeClass â€” and many real-world classes have side-effecting static initialisers\n\n\nBoth issues have been fixed.","public_affected_ranges":[">= 2.2.0, < 2.2.8"]},{"certainty":"source_listed","source_ids":["sr-276d95b6d5f0e341fcbd6b23f8ab3401"],"technology":"org.apache.mina:mina-core","known_exclusions":[],"conditions_summary":"ZDRES-232: resolveProxyClass Not Overridden - acceptMatchers Filter Bypass via java.lang.reflect.Proxy\n\n\nAssessment: Fully addressed.\n\n\nWhen the serialised stream contains a TC_PROXYCLASSDESC (the marker for a java.lang.reflect.Proxy ), JDK’s ObjectInputStream.readProxyDesc() is dispatched. JDK then calls the default  ObjectInputStream.resolveProxyClass(interfaces) implementation, which performs Class.forName(intf, false, latestUserDefinedLoader()) for EACH interface name and constructs the proxy class â€” bypassing the accepted classes list .\n\n\nZDRES-233: Class.forName(name, initialize=true, classLoader) in readClassDescriptor Triggers Static Initialiser of Allow-Listed Classes\n\n\nAssessment: Fully addressed.\n\n\nFor ANY class on the allow-list, deserialising a stream that names it triggers the class’s (static initialiser) BEFORE any instance is constructed. This means an attacker who supplies a class name on the allow-list (e.g., the developer wrote accept(“com.myapp.*\") , attacker supplies com.myapp.SomeClass ) causes  of SomeClass â€” and many real-world classes have side-effecting static initialisers\n\n\nBoth issues have been fixed.","public_affected_ranges":[">= 2.1.0, < 2.1.13"]},{"certainty":"source_listed","source_ids":["sr-276d95b6d5f0e341fcbd6b23f8ab3401"],"technology":"org.apache.mina:mina-core","known_exclusions":[],"conditions_summary":"ZDRES-232: resolveProxyClass Not Overridden - acceptMatchers Filter Bypass via java.lang.reflect.Proxy\n\n\nAssessment: Fully addressed.\n\n\nWhen the serialised stream contains a TC_PROXYCLASSDESC (the marker for a java.lang.reflect.Proxy ), JDK’s ObjectInputStream.readProxyDesc() is dispatched. JDK then calls the default  ObjectInputStream.resolveProxyClass(interfaces) implementation, which performs Class.forName(intf, false, latestUserDefinedLoader()) for EACH interface name and constructs the proxy class â€” bypassing the accepted classes list .\n\n\nZDRES-233: Class.forName(name, initialize=true, classLoader) in readClassDescriptor Triggers Static Initialiser of Allow-Listed Classes\n\n\nAssessment: Fully addressed.\n\n\nFor ANY class on the allow-list, deserialising a stream that names it triggers the class’s (static initialiser) BEFORE any instance is constructed. This means an attacker who supplies a class name on the allow-list (e.g., the developer wrote accept(“com.myapp.*\") , attacker supplies com.myapp.SomeClass ) causes  of SomeClass â€” and many real-world classes have side-effecting static initialisers\n\n\nBoth issues have been fixed.","public_affected_ranges":["< 2.0.29"]}],"null_published_at":"2026-11-05T19:10:21.423Z","source_updated_at":"2026-07-13T17:24:48.000Z","source_disclosed_at":"2026-06-03T12:30:26.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"First indexed by Null; source disclosure date is shown separately.","null_first_observed_at":"2026-11-04T23:34:12.429Z"}],"next_cursor":null,"snapshot_revision":"42594"}