CVE-2026-25481 json
Langroid has WAF Bypass Leading to RCE in TableChatAgent
published 9mo ago modified 3mo ago also EUVD-2026-5347 , GHSA-x34r-63hx-w57f , PYSEC-2026-383
- cvss
- 9.6
- version 3.1, NVD
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.7%
- EPSS 0.7% chance of exploitation in 30 days, percentile 54%
- public exploits
- 0
- none known
Summary
Langroid is a framework for building large-language-model-powered applications. Prior to version 0.59.32, there is a bypass to the fix for CVE-2025-46724. TableChatAgent can call pandas_eval tool to evaluate the expression. There is a WAF in langroid/utils/pandas_utils.py introduced to block code injection CVE-2025-46724. However it can be bypassed due to _literal_ok() returning False instead of raising UnsafeCommandError on invalid input, combined with unrestricted access to dangerous dunder attributes (__init__, __globals__, __builtins__). This allows chaining whitelisted DataFrame methods to leak the eval builtin and execute arbitrary code. This issue has been patched in version 0.59.32.
Patch / fix
Is CVE-2026-25481 in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerCISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- yes
- Technical impact
- total
- Assessed
- 9mo ago
Exploit prediction
0.73% chance of exploitation in the next 30 days, higher than 54% of all scored CVEs (FIRST EPSS, 2026-11-09).
Exploits and checks
- github.com https://github.com/langroid/langroid/security/advisories/GHSA-x34r-63hx-w57f referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 9.4 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H |
| CNA | 4.0 | 9.4 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
| NVD | 3.1 | 9.6 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | langroid | <0.59.32 |
0.59.32 |
Affected products
- langroid langroid
Classification
- Weakness
-
- CWE-94 Improper Control of Generation of Code
References
-
github.com
/langroid/langroid/commit/30abbc1a854dee22fbd2f8b2f575dfdabdb603ea
web, patch
-
github.com
/langroid/langroid/security/advisories/GHSA-x34r-63hx-w57f
web, exploit, vendor-advisory
-
github.com
/langroid/langroid/security/advisories/GHSA-jqq5-wc57-f8hj
web, vendor-advisory
-
nvd.nist.gov
/vuln/detail/CVE-2026-25481
advisory
-
github.com
/langroid/langroid
package
-
github.com
/pypa/advisory-database/tree/main/vulns/langroid/PYSEC-2026-383.yaml
web
-
pypi.org
/project/langroid
web, package
-
github.com
/advisories/GHSA-x34r-63hx-w57f
advisory
Sources
- CVE List CVE-2026-25481
- GitHub Advisory GHSA-x34r-63hx-w57f
- NVD CVE-2026-25481
- OSV PYSEC-2026-383
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.