<div dir="ltr">We track untrusted data moving to different threads. Oversimplified example:<br><br>```<br>final String param = httpRequest.getParam("foo");<br><br>new Thread(() -> {<br> // Vulnerable to SQL Injection.<br> sqlConnection.prepareCall("SELECT * FROM foo WHERE bar='" + param + "'");<br><br> // ...<br>}).start();<br><br>Thread.startVirtualThread(() -> {<br> // Vulnerable to SQL Injection.<br> sqlConnection.prepareCall("SELECT * FROM foo WHERE bar='" + param + "'");<br><br> // ...<br>});<br>```<div><br>We need to detect both of these cases of SQL Injection so we store a context of untrusted data to keep track of how that data moves between threads.</div><div><br></div><div>- Kyle</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Oct 24, 2024 at 5:49 AM Alan Bateman <<a href="mailto:alan.bateman@oracle.com">alan.bateman@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"><br>
<br>
On 23/10/2024 18:51, Kyle Stiemann wrote:<br>
> Hello,<br>
> I work on the Java Agent team at Contrast Security. Our agent has to <br>
> track security-relevant data/contexts across threads (including <br>
> virtual threads).<br>
Reading your mail again, I'm puzzled as to why you are doing this. A <br>
virtual thread and its carrier are separate threads. What security <br>
relevant data are you tracking?<br>
<br>
-Alan<br>
</blockquote></div>