{"id":"CVE-2026-47065","aliases":["DEBIAN-CVE-2026-47065","EUVD-2026-34069","GHSA-v3pr-hxpr-mfm8","RHLW-2026-6e6e3b76edf3a10b","UBUNTU-CVE-2026-47065","USN-8465-1"],"status":"published","title":"Apache MINA: Critical Deserialization Allow-list Bypass via resolveProxyClass - ZDRES-232","description":"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 \nfor a java.lang.reflect.Proxy ), JDK’s ObjectInputStream.readProxyDesc()\n is\ndispatched. JDK then calls the default \nObjectInputStream.resolveProxyClass(interfaces) implementation, which \nperforms Class.forName(intf, false, latestUserDefinedLoader()) for EACH \ninterface name and constructs the proxy class â€” bypassing the accepted\n classes list .\n\n\nZDRES-233: Class.forName(name, initialize=true, classLoader) in \nreadClassDescriptor 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 \n (static initialiser) BEFORE any instance is constructed. This means an \nattacker who supplies a class name on the allow-list (e.g., the \ndeveloper wrote accept(“com.myapp.*\") , attacker supplies \ncom.myapp.SomeClass ) causes \u003cclinit\u003e of SomeClass â€” and many \nreal-world classes have side-effecting static initialisers\n\n\nBoth issues have been fixed.","severity":{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.00504,"percentile":0.4357,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-502"],"published":"2026-06-03T09:39:41Z","modified":"2026-11-11T09:39:56Z","fixes":[{"ecosystem":"Maven","package":"org.apache.mina:mina-core","fixed_in":["2.2.8","2.1.13","2.0.29"],"sources":["ghsa","osv"]},{"ecosystem":"Debian:14","package":"mina2","fixed_in":["2.2.9-1"],"sources":["osv"]},{"ecosystem":"Red Hat Lightwell:Maven","package":"org.apache.mina:mina-core","fixed_in":["2.2.5.rhlw-00009"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"Maven","package":"org.apache.mina:mina-core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.2.0"},{"fixed":"2.2.8"}]}]},{"source":"ghsa","ecosystem":"Maven","package":"org.apache.mina:mina-core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.1.0"},{"fixed":"2.1.13"}]}]},{"source":"ghsa","ecosystem":"Maven","package":"org.apache.mina:mina-core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.0.29"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"mina","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.1.7.dfsg-13","1.1.7.dfsg-14"]},{"source":"osv","ecosystem":"Debian:12","package":"mina2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.2.1-3","2.2.1-4","2.2.9-1"]},{"source":"osv","ecosystem":"Debian:13","package":"mina2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.2.1-4","2.2.9-1"]},{"source":"osv","ecosystem":"Debian:14","package":"mina2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.9-1"}]}],"versions":["2.2.1-4"]},{"source":"osv","ecosystem":"Maven","package":"org.apache.mina:mina-core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.2.0"},{"fixed":"2.2.8"}]}],"versions":["2.2.0","2.2.1","2.2.2","2.2.3","2.2.4","2.2.5","2.2.6","2.2.7"]},{"source":"osv","ecosystem":"Maven","package":"org.apache.mina:mina-core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.1.0"},{"fixed":"2.1.13"}]}],"versions":["2.1.0","2.1.1","2.1.10","2.1.11","2.1.12","2.1.2","2.1.3","2.1.4","2.1.5","2.1.6","2.1.7","2.1.8","2.1.9"]},{"source":"osv","ecosystem":"Maven","package":"org.apache.mina:mina-core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.0.29"}]}],"versions":["1.0.0","1.0.1","1.0.10","1.0.2","1.0.3","1.0.4","1.0.5","1.0.6","1.0.7","1.0.8","1.0.9","1.1.0","1.1.1","1.1.2","1.1.3","1.1.4","1.1.5","1.1.6","1.1.7","2.0.0","2.0.0-M1","2.0.0-M2","2.0.0-M3","2.0.0-M4","2.0.0-M5","2.0.0-M6","2.0.0-RC1","2.0.1","2.0.10","2.0.11","2.0.12","2.0.13","2.0.14","2.0.15","2.0.16","2.0.17","2.0.18","2.0.19","2.0.2","2.0.20","2.0.21","2.0.22","2.0.23","2.0.24","2.0.25","2.0.26","2.0.27","2.0.28","2.0.3","2.0.4","2.0.5","2.0.6","2.0.7","2.0.8","2.0.9"]},{"source":"osv","ecosystem":"Red Hat Lightwell:Maven","package":"org.apache.mina:mina-core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.5.rhlw-00009"}]}],"versions":["1.0.0","1.0.1","1.0.10","1.0.2","1.0.3","1.0.4","1.0.5","1.0.6","1.0.7","1.0.8","1.0.9","1.1.0","1.1.1","1.1.2","1.1.3","1.1.4","1.1.5","1.1.6","1.1.7","2.0.0","2.0.0-M1","2.0.0-M2","2.0.0-M3","2.0.0-M4","2.0.0-M5","2.0.0-M6","2.0.0-RC1","2.0.1","2.0.10","2.0.11","2.0.12","2.0.13","2.0.14","2.0.15","2.0.16","2.0.17","2.0.18","2.0.19","2.0.2","2.0.20","2.0.21","2.0.22","2.0.23","2.0.24","2.0.25","2.0.26","2.0.27","2.0.28","2.0.29","2.0.3","2.0.30","2.0.31","2.0.4","2.0.5","2.0.6","2.0.7","2.0.8","2.0.9","2.1.0","2.1.1","2.1.10","2.1.11","2.1.12","2.1.13","2.1.14","2.1.15","2.1.2","2.1.3","2.1.4","2.1.5","2.1.6","2.1.7","2.1.8","2.1.9","2.2.0","2.2.1","2.2.2","2.2.3","2.2.4","2.2.5"]},{"source":"osv","ecosystem":"Ubuntu:Pro:22.04:LTS","package":"mina2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.1.4-2","2.1.5-1","2.1.5-1ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"mina2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.2.1-3","2.2.1-4"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"mina2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.2.1-4","2.2.1-4ubuntu1","2.2.9-1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:22.04:LTS","package":"mina2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.1.5-1ubuntu0.1~esm1"}]}],"versions":["2.1.4-2","2.1.5-1"],"bundled":4},{"source":"osv","ecosystem":"Ubuntu:Pro:24.04:LTS","package":"mina2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.1-3ubuntu0.1~esm1"}]}],"versions":["2.2.1-3"],"bundled":4},{"source":"osv","ecosystem":"Ubuntu:Pro:26.04:LTS","package":"mina2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.1-4ubuntu0.1~esm1"}]}],"versions":["2.2.1-4"],"bundled":4}],"products":[{"vendor":"apache","product":"mina"},{"vendor":"apache software foundation","product":"apache mina"}],"references":[{"url":"https://lists.apache.org/thread/y7xj1bl8qo47p9bktb11hg5v6k1d4dyj","tags":["vendor-advisory","Mailing List","Vendor Advisory","advisory","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-47065","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-v3pr-hxpr-mfm8","tags":["advisory"]},{"url":"https://repo.maven.apache.org/maven2/org/apache/mina","tags":["web"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/47xxx/CVE-2026-47065.json","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-47065","tags":["advisory"]},{"url":"https://github.com/apache/mina","tags":["package"]},{"url":"https://ubuntu.com/security/CVE-2026-47065","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-47065","tags":["report"]},{"url":"https://ubuntu.com/security/notices/USN-8465-1","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2024-52046","tags":["report"]},{"url":"https://ubuntu.com/security/CVE-2026-42778","tags":["report"]},{"url":"https://ubuntu.com/security/CVE-2026-42779","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-47065","title":"Apache MINA: Critical Deserialization Allow-list Bypass via resolveProxyClass - ZDRES-232","description":"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 \nfor a java.lang.reflect.Proxy ), JDK’s ObjectInputStream.readProxyDesc()\n is\ndispatched. JDK then calls the default \nObjectInputStream.resolveProxyClass(interfaces) implementation, which \nperforms Class.forName(intf, false, latestUserDefinedLoader()) for EACH \ninterface name and constructs the proxy class â€” bypassing the accepted\n classes list .\n\n\nZDRES-233: Class.forName(name, initialize=true, classLoader) in \nreadClassDescriptor 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 \n (static initialiser) BEFORE any instance is constructed. This means an \nattacker who supplies a class name on the allow-list (e.g., the \ndeveloper wrote accept(“com.myapp.*\") , attacker supplies \ncom.myapp.SomeClass ) causes \u003cclinit\u003e of SomeClass â€” and many \nreal-world classes have side-effecting static initialisers\n\n\nBoth issues have been fixed.","status":"published","published":"2026-06-03T09:39:41.629Z","modified":"2026-06-04T03:55:48.44Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"cna"}],"cwes":["CWE-502"],"updated_at":"2026-11-02T13:36:40.478484Z"}],"euvd":[{"id":"EUVD-2026-34069","description":"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 \nfor a java.lang.reflect.Proxy ), JDK’s ObjectInputStream.readProxyDesc()\n is\ndispatched. JDK then calls the default \nObjectInputStream.resolveProxyClass(interfaces) implementation, which \nperforms Class.forName(intf, false, latestUserDefinedLoader()) for EACH \ninterface name and constructs the proxy class â€” bypassing the accepted\n classes list .\n\n\nZDRES-233: Class.forName(name, initialize=true, classLoader) in \nreadClassDescriptor 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 \n (static initialiser) BEFORE any instance is constructed. This means an \nattacker who supplies a class name on the allow-list (e.g., the \ndeveloper wrote accept(“com.myapp.*\") , attacker supplies \ncom.myapp.SomeClass ) causes \u003cclinit\u003e of SomeClass â€” and many \nreal-world classes have side-effecting static initialisers\n\n\nBoth issues have been fixed.","status":"published","published":"2026-06-03T09:39:41Z","modified":"2026-06-04T03:55:48Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T18:20:53.780241Z"}],"ghsa":[{"id":"GHSA-v3pr-hxpr-mfm8","title":"Apache MINA: Critical Deserialization Allow-list Bypass via resolveProxyClass","description":"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 \u003cclinit\u003e of SomeClass â€” and many real-world classes have side-effecting static initialisers\n\n\nBoth issues have been fixed.","status":"published","published":"2026-06-03T12:30:26Z","modified":"2026-07-13T17:24:48Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-502"],"updated_at":"2026-11-02T14:40:42.703776Z"}],"nvd":[{"id":"CVE-2026-47065","description":"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 \nfor a java.lang.reflect.Proxy ), JDK’s ObjectInputStream.readProxyDesc()\n is\ndispatched. JDK then calls the default \nObjectInputStream.resolveProxyClass(interfaces) implementation, which \nperforms Class.forName(intf, false, latestUserDefinedLoader()) for EACH \ninterface name and constructs the proxy class â€” bypassing the accepted\n classes list .\n\n\nZDRES-233: Class.forName(name, initialize=true, classLoader) in \nreadClassDescriptor 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 \n (static initialiser) BEFORE any instance is constructed. This means an \nattacker who supplies a class name on the allow-list (e.g., the \ndeveloper wrote accept(“com.myapp.*\") , attacker supplies \ncom.myapp.SomeClass ) causes \u003cclinit\u003e of SomeClass â€” and many \nreal-world classes have side-effecting static initialisers\n\n\nBoth issues have been fixed.","status":"published","published":"2026-06-03T11:16:19.8Z","modified":"2026-07-22T19:10:00.12Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"secondary"}],"cwes":["CWE-502"],"updated_at":"2026-11-02T14:12:22.022466Z"}],"osv":[{"id":"CVE-2026-47065","title":"Apache MINA: Critical Deserialization Allow-list Bypass via resolveProxyClass - ZDRES-232","description":"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 \nfor a java.lang.reflect.Proxy ), JDK’s ObjectInputStream.readProxyDesc()\n is\ndispatched. JDK then calls the default \nObjectInputStream.resolveProxyClass(interfaces) implementation, which \nperforms Class.forName(intf, false, latestUserDefinedLoader()) for EACH \ninterface name and constructs the proxy class â€” bypassing the accepted\n classes list .\n\n\nZDRES-233: Class.forName(name, initialize=true, classLoader) in \nreadClassDescriptor 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 \n (static initialiser) BEFORE any instance is constructed. This means an \nattacker who supplies a class name on the allow-list (e.g., the \ndeveloper wrote accept(“com.myapp.*\") , attacker supplies \ncom.myapp.SomeClass ) causes \u003cclinit\u003e of SomeClass â€” and many \nreal-world classes have side-effecting static initialisers\n\n\nBoth issues have been fixed.","status":"published","published":"2026-06-03T09:39:41.629Z","modified":"2026-10-28T02:30:37.098923517Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-502"],"updated_at":"2026-11-02T15:45:06.231145Z"},{"id":"DEBIAN-CVE-2026-47065","description":"ZDRES-232: resolveProxyClass Not Overridden - acceptMatchers Filter Bypass via java.lang.reflect.Proxy   Assessment: Fully addressed.   When 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 .   ZDRES-233: Class.forName(name, initialize=true, classLoader) in  readClassDescriptor Triggers Static Initialiser of Allow-Listed Classes   Assessment: Fully addressed.   For 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 \u003cclinit\u003e of SomeClass â€” and many  real-world classes have side-effecting static initialisers   Both issues have been fixed.","status":"published","published":"2026-06-03T11:16:19.8Z","modified":"2026-10-01T03:03:07.387305255Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T15:45:56.444225Z"},{"id":"GHSA-v3pr-hxpr-mfm8","title":"Apache MINA: Critical Deserialization Allow-list Bypass via resolveProxyClass","description":"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 \u003cclinit\u003e of SomeClass â€” and many real-world classes have side-effecting static initialisers\n\n\nBoth issues have been fixed.","status":"published","published":"2026-06-03T12:30:26Z","modified":"2026-09-10T03:51:09.571850654Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-502"],"updated_at":"2026-11-02T15:46:56.639206Z"},{"id":"RHLW-2026-6e6e3b76edf3a10b","title":"Lightwell Security Advisory: mina-core 2.2.5.rhlw-00009","description":"Red Hat Lightwell has released org.apache.mina:mina-core 2.2.5.rhlw-00009 with a backported security fix.\n\nCVE-2026-47065: Apache MINA: Critical Deserialization Allow-list Bypass via resolveProxyClass - ZDRES-232\n\nThis patched artifact is a drop-in replacement for org.apache.mina:mina-core 2.2.5 from Maven Central.","status":"published","published":"2026-10-23T14:41:57Z","modified":"2026-10-27T08:45:03.081326299Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T15:52:58.636919Z"},{"id":"UBUNTU-CVE-2026-47065","description":"ZDRES-232: resolveProxyClass Not Overridden - acceptMatchers Filter Bypass via java.lang.reflect.Proxy Assessment: Fully addressed. When 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 . ZDRES-233: Class.forName(name, initialize=true, classLoader) in readClassDescriptor Triggers Static Initialiser of Allow-Listed Classes Assessment: Fully addressed. For 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 \u003cclinit\u003e of SomeClass â€” and many real-world classes have side-effecting static initialisers Both issues have been fixed.","status":"published","published":"2026-06-03T11:16:00Z","modified":"2026-11-11T09:39:56.350291507Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-11T10:01:59.640958Z"},{"id":"USN-8465-1","title":"mina2 vulnerabilities","description":"It was discovered that Apache MINA lacked an acceptMatchers allowlist\nmechanism to restrict which classes could be deserialized. An attacker\ncould use this to execute arbitrary code. This issue only affected\nUbuntu 22.04 LTS and Ubuntu 24.04 LTS. (CVE-2024-52046)\n\nIt was discovered that Apache MINA's deserialization filter could be\nbypassed via multiple code paths. An attacker could use this to execute\narbitrary code by sending a specially crafted serialized object over the\nnetwork. (CVE-2026-42778, CVE-2026-42779, CVE-2026-47065)","status":"published","published":"2026-06-23T15:35:56Z","modified":"2026-06-24T02:19:26.340755018Z","updated_at":"2026-11-02T16:58:25.103481Z"}]}}
