{"id":"GHSA-v3pr-hxpr-mfm8","summary":"Apache MINA: Critical Deserialization Allow-list Bypass via resolveProxyClass","details":"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.","aliases":["CVE-2026-47065"],"modified":"2026-07-17T21:15:08.160863719Z","published":"2026-06-03T12:30:26Z","database_specific":{"nvd_published_at":"2026-06-03T11:16:19Z","cwe_ids":["CWE-502"],"severity":"CRITICAL","github_reviewed":true,"github_reviewed_at":"2026-07-13T17:24:46Z"},"references":[{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-47065"},{"type":"PACKAGE","url":"https://github.com/apache/mina"},{"type":"WEB","url":"https://lists.apache.org/thread/y7xj1bl8qo47p9bktb11hg5v6k1d4dyj"}],"affected":[{"package":{"name":"org.apache.mina:mina-core","ecosystem":"Maven","purl":"pkg:maven/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"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/06/GHSA-v3pr-hxpr-mfm8/GHSA-v3pr-hxpr-mfm8.json"}},{"package":{"name":"org.apache.mina:mina-core","ecosystem":"Maven","purl":"pkg:maven/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"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/06/GHSA-v3pr-hxpr-mfm8/GHSA-v3pr-hxpr-mfm8.json"}},{"package":{"name":"org.apache.mina:mina-core","ecosystem":"Maven","purl":"pkg:maven/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"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/06/GHSA-v3pr-hxpr-mfm8/GHSA-v3pr-hxpr-mfm8.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"}]}