Langroid Allows XXE Injection via XMLToolMessage
Description
Published by the National Vulnerability Database
May 5, 2025
Published to the GitHub Advisory Database
May 5, 2025
Reviewed
May 5, 2025
Last updated
May 5, 2025
Summary
A LLM application leveraging
XMLToolMessageclass may be exposed to untrusted XML input that could result in DoS and/or exposing local files with sensitive information.Details
XMLToolMessageuseslxmlwithout safeguards:https://github.com/langroid/langroid/blob/df6227e6c079ec22bb2768498423148d6685acff/langroid/agent/xml_tool_message.py#L51-L52
lxmlis vulnerable to quadratic blowup attacks and processes external entity declarations for local files by default.Check here: https://pypi.org/project/defusedxml/#python-xml-libraries
PoC
A typical Quadratic blowup XML payload looks like this:
Here, &a; expands to 10 characters, &b; expands to 100, and &c; expands to 1000, causing exponential memory usage and potentially crashing the application.
Fix
Langroid 0.53.4 initializes
XMLParserwith flags to prevent XML External Entity (XXE), billion laughs, and external DTD attacks by disabling entity resolution, DTD loading, and network access.langroid/langroid@36e7e7d
References