Según el análisis del equipo de seguridad de Beosin, la causa principal del ataque al proyecto JPEG fue un ataque de reentrada, que resultó en pérdidas de al menos aproximadamente 10 millones de dólares. Cuando el atacante llama a la función remove_liquidity para eliminar liquidez, agrega liquidez reingresando la función add_liquidity. Dado que el saldo se actualiza antes de volver a ingresar la función add_liquidity, se produce un error en el cálculo del precio.