TL;DR: Docling can execute arbitrary Python code during YAML parsing when unsafe PyYAML deserialization is triggered, creating CVE-2026-24009 and a shadow vulnerability pattern that can reach downstream systems at runtime, according to Oligo Security. The real issue is not parsing itself, but the assumption that document ingestion is safe enough to trust by default.
Editorial analysis by NHI Mgmt Group, based on content published by Oligo Security: “Docling RCE: A Shadow Vulnerability Introduced via PyYAML (CVE-2026-24009)”.
Key questions
Q: What breaks when a document parser uses unsafe YAML deserialization?
A: The parser stops being a passive data handler and becomes an execution surface.
Q: Why are shadow vulnerabilities hard to catch before deployment?
A: They often live in transitive dependencies or hidden helper layers, so the dangerous code is not obvious in the repository.
Q: How should teams evaluate whether a parsing flow is safe enough for production?
A: Teams should validate the actual runtime path, not just the library version or dependency manifest.
Practitioner guidance
- Constrain deserialization loaders Replace unsafe YAML loaders in parsing pipelines with safe equivalents and prohibit object construction from untrusted documents.
- Map document ingestion to execution boundaries Classify every document parsing workflow that can invoke code, create processes, or instantiate objects as a high-risk execution path.
- Test transitive parser behaviour in production-like paths Exercise the actual document ingestion route with malicious YAML samples to verify whether hidden dependencies can trigger execution.
Bottom line: Unsafe YAML deserialization can convert a routine parsing step into arbitrary code execution inside the application process.
Explore further
View Full Forum → | NHI Foundation Course → | Our Services → | Read the full analysis →
Shadow vulnerability is now a runtime governance problem, not a code-review problem. This issue exists because the dangerous behaviour is inherited through a dependency chain and only materialises when the parser is exercised with attacker-controlled input. Security teams cannot rely on source inspection alone when the true execution path sits behind helper libraries and transitive packages. The practical conclusion is that runtime behaviour, not repository appearance, must define exposure.
A few things that frame the scale:
- Only 44% of developers are reported to follow security best practices for secrets management, exposing a significant developer behaviour gap, according to the State of Secrets in AppSec.
A question worth separating out:
Q: When does a document parser become part of the trusted computing base?
A: It becomes part of the trusted computing base when the parser can influence execution, access sensitive data, or interact with adjacent systems using application privileges. At that point, the parser is no longer just handling content. It is a security-sensitive runtime component that needs the same scrutiny as code execution paths.
👉 Read our full editorial: Docling RCE exposes shadow vulnerability risk in AI parsing flows