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
XMLToolMessage
class may be exposed to untrusted XML input that could result in DoS and/or exposing local files with sensitive information.Details
XMLToolMessage
useslxml
without safeguards:https://github.com/langroid/langroid/blob/df6227e6c079ec22bb2768498423148d6685acff/langroid/agent/xml_tool_message.py#L51-L52
lxml
is 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
XMLParser
with 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