Step 1: Payload Delivery: The attacker crafts a malicious XML file containing a recursive entity definition. This definition can be direct (e.g., <!ENTITY x "&x;">) or indirect (e.g., <!ENTITY a "&b;"> <!ENTITY b "&a;">).
Step 2: File Ingestion: The vulnerable application, using ezXML, attempts to parse the malicious XML file.
Step 3: Entity Resolution: The ezxml_parse_* functions begin to resolve the entities. Due to the recursive nature, the parser enters a loop.
Step 4: Memory Exhaustion: Within the loop, the parser repeatedly allocates memory to resolve the entity, but the resolution never completes. This leads to a rapid depletion of available memory.
Step 5: Denial of Service: The application either crashes due to memory exhaustion or becomes unresponsive, effectively resulting in a denial-of-service condition.