
Reprodutor para CVE-2022-0853: um vazamento de memória no jboss-client ao usar repetidamente UserTransaction, demonstrado com um caso de teste de cliente remoto Java EJB.
Um vazamento de memória no lado do cliente jboss, ao usar UserTransaction repetidamente.
Tal como:
private void testTransaction() throws Exception {
for(int i=1; i< 500000; i++) {
System.out.println("Starting process " + i);
// get the UserTransaction and EJB Proxy
Context ctx = getInitialContext(host, port, username, password);
UserTransaction tx = getUserTransaction(ctx);
ControllerRemote cr = (ControllerRemote)
ctx.lookup("Controller/Controller" + "!com.test.usertransaction.ControllerRemote");
try {
tx.begin();
}
catch(Exception ex1) {
ex1.printStackTrace();
}
//System.out.println("user transaction started");
cr.mainCall();
try {
tx.commit();;
}
catch(Exception ex1) {
ex1.printStackTrace();
throw ex1;
}
//System.out.println("commited user transaction");
if(ctx != null)
ctx.close();
}
}
A transação é executada por um cliente remoto em um EJB implantado no EAP 7.3. A transação é iterada 50000 vezes. No final das iterações, observa-se vazamento de memória. 32% da memória é ocupada por org.wildfly.transaction.client.provider.remoting.TransactionClientChannel.