<div dir="ltr"><div>Hi!</div><div><br></div><div>Is there a reason not to port this to JDK25? Because if there ain't, I want to port it.</div><div><br></div><div>Cheers!</div><div>María.</div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Sun, Feb 15, 2026 at 6:45 AM <<a href="mailto:ioi.lam@oracle.com">ioi.lam@oracle.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u>
<div>
<p>Hi Aman,</p>
<p><br>
</p>
<p>Thanks for the bug report. I have created a PR to fix this issue:</p>
<p><br>
</p>
<p><a href="https://github.com/openjdk/jdk/pull/29728" target="_blank">https://github.com/openjdk/jdk/pull/29728</a></p>
<p><br>
</p>
<p>- Ioi</p>
<p><br>
</p>
<div>On 1/30/26 2:53 AM, Aman Sharma wrote:<br>
</div>
<blockquote type="cite">
<div id="m_5158190864462757391divtagdefaultwrapper" dir="ltr" style="font-size:12pt;color:rgb(0,0,0);font-family:Garamond,Georgia,serif,"EmojiFont","Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<p><font face="Garamond,Georgia,serif,EmojiFont,Apple Color Emoji,Segoe UI Emoji,NotoColorEmoji,Segoe UI Symbol,Android Emoji,EmojiSymbols" size="3" color="black"><span id="m_5158190864462757391divtagdefaultwrapper" style="font-size:12pt"><font face="Garamond,Georgia,serif,EmojiFont,Apple Color Emoji,Segoe UI Emoji,NotoColorEmoji,Segoe UI Symbol,Android Emoji,EmojiSymbols" size="3" color="black"><span id="m_5158190864462757391divtagdefaultwrapper" style="font-size:12pt"></span></font></span></font></p>
<font face="Garamond,Georgia,serif,EmojiFont,Apple Color Emoji,Segoe UI Emoji,NotoColorEmoji,Segoe UI Symbol,Android Emoji,EmojiSymbols" size="3" color="black"><font face="Garamond,Georgia,serif,EmojiFont,Apple Color Emoji,Segoe UI Emoji,NotoColorEmoji,Segoe UI Symbol,Android Emoji,EmojiSymbols" size="3" color="black">
<div style="margin-top:0px;margin-bottom:0px">Hi all,</div>
<div style="margin-top:0px;margin-bottom:0px"><br>
</div>
<div style="margin-top:0px;margin-bottom:0px">I have been
playing around with AOTCache and I tried a small with
it experiment whose idea was to shadow a class using
AOTCache. By class shadowing, I mean loading a different
class than intended but they both share the same fully
qualified name. We also explored this concept in
the paper: <a href="https://arxiv.org/abs/2407.18760v4" target="_blank"><span>Maven-Hijack:
Software Supply Chain Attack Exploiting Packaging
Order</span></a>, and now I am trying to extend it to
AOTCache.</div>
<div style="margin-top:0px;margin-bottom:0px"><br>
</div>
<div style="margin-top:0px;margin-bottom:0px">The steps in the
experiment are based on
<a href="https://github.com/chains-project/maven-hijack-poc" rel="noopener noreferrer" target="_blank">
POC</a> from the same paper and are written briefly
below. The exact commands are documented
<a href="https://github.com/chains-project/maven-hijack-poc/blob/main/java/maven/abstract-project/AOTCache.md" target="_blank">
here</a>.</div>
<ol style="margin-top:0px;margin-bottom:0px">
<li>Build the application with one of the dependencies
having malicious class. The malicious class has the same
name as one of the other classes, say
`org.postrgresql.Driver` but
<a href="https://github.com/chains-project/maven-hijack-poc/blob/0310de24103a55d1f51f70ef625933a40a7a55b3/java/maven/abstract-project/install-me-first/D11/src/main/java/org/postgresql/Driver.java#L8-L23" target="_blank">
has malicious contents</a>.</li>
<li>Create an AOTCache using these dependencies in jar. <i>This
creates a "polluted AOTCache".</i></li>
<li>Now using the polluted cache, run the application that
is packaged with genuine dependencies. Apparently, the
JVM initializes the malicious class from AOTCache
instead of loading it from classpath. In other words, `<span style="font-family:"Courier New",monospace">java
-XX:AOTCache=maven.aot -jar target/victim-1.0.jar</span>`
and `<span style="font-family:"Courier New",monospace">java
-jar target/victim-1.0.jar</span>` give different
outputs.</li>
</ol>
<div><br>
</div>
<div>I see this as a weakness if the poisoned AOTCache is
distributed as an artifact for consumers to be
used because maybe it is not expected from consumers to
perform a training run themselves. I believe there should
be some sort of integrity checks before a class is
initialized from AOTCache. I noticed there are <a href="https://github.com/openjdk/jdk/blob/e3b5b261af6acbe7ab074f301c70283b06c17d39/src/hotspot/share/code/aotCodeCache.cpp#L435" target="_blank">
already some</a> (please share if there are more, and I
have missed them), but none of them relate to what I am
mentioning. I am happy to listen to some thoughts on this.</div>
</font></font>
<p><br>
</p>
<div id="m_5158190864462757391Signature">
<div id="m_5158190864462757391divtagdefaultwrapper" dir="ltr" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif,"EmojiFont","Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<div id="m_5158190864462757391m_4935352394101912768Signature">
<div name="divtagdefaultwrapper"><font size="2" color="#808080"><span style="font-family:Arial,"Helvetica Neue",helvetica,sans-serif;background-color:rgb(255,255,255)"><span id="m_5158190864462757391divtagdefaultwrapper" style="font-size:12pt">
<div style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(0,0,0);font-family:Garamond,Georgia,serif">Regards,</span></div>
<span style="font-family:Garamond,Georgia,serif"></span><span style="font-family:Garamond,Georgia,serif"></span><span style="color:rgb(0,0,0)"></span><span style="font-family:Garamond,Georgia,serif"></span><span style="font-family:Garamond,Georgia,serif"></span>
<div style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(0,0,0);font-family:Garamond,Georgia,serif">Aman Sharma</span></div>
</span><br>
</span></font></div>
<div name="divtagdefaultwrapper"><font size="2" color="#808080"><span style="font-family:Arial,"Helvetica Neue",helvetica,sans-serif;background-color:rgb(255,255,255)"></span><span>PhD Student<br style="font-family:Arial,"Helvetica Neue",helvetica,sans-serif">
<span style="font-family:Arial,"Helvetica Neue",helvetica,sans-serif;background-color:rgb(255,255,255)">KTH
Royal Institute of Technology</span><br style="font-family:Arial,"Helvetica Neue",helvetica,sans-serif">
</span><span style="font-family:Arial,"Helvetica Neue",helvetica,sans-serif;background-color:rgb(255,255,255)">School
of Electrical Engineering and Computer Science
(EECS)</span><br style="font-family:Arial,"Helvetica Neue",helvetica,sans-serif">
<span style="font-family:Arial,"Helvetica Neue",helvetica,sans-serif;background-color:rgb(255,255,255)">Department
of Theoretical Computer Science (TCS)</span><br style="font-family:Arial,"Helvetica Neue",helvetica,sans-serif">
<span style="font-family:Arial,"Helvetica Neue",helvetica,sans-serif;background-color:rgb(255,255,255)"></span></font></div>
</div>
<a href="https://www.kth.se/profile/amansha" id="m_5158190864462757391LPNoLP" target="_blank"><span style="font-size:10pt"></span></a><a href="https://algomaster99.github.io/" id="m_5158190864462757391LPNoLP" target="_blank">https://algomaster99.github.io/</a><br>
</div>
</div>
</div>
</blockquote>
</div>
</blockquote></div>