<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:webfeeds="http://webfeeds.org/rss/1.0"><channel><title>Nltk - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/nltk/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Tue, 25 Aug 2026 04:05:30 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/nltk/feed.xml" rel="self" type="application/rss+xml"/><image><url>https://feed.craftedsignal.io/favicon-32x32.png</url><title>CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/</link><width>32</width><height>32</height></image><webfeeds:icon>https://feed.craftedsignal.io/favicon.svg</webfeeds:icon><item><title>Remote Code Execution in NLTK via Unsafe Pickle Deserialization</title><link>https://feed.craftedsignal.io/briefs/2026-08-nltk-pickle-rce/</link><pubDate>Tue, 25 Aug 2026 04:05:30 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-08-nltk-pickle-rce/</guid><description>The NLTK library versions up to 3.9.4 are vulnerable to arbitrary code execution when processing crafted model files due to unsafe pickle deserialization in the TransitionParser.parse() method.</description><content:encoded><![CDATA[<p>NLTK (Natural Language Toolkit) versions prior to 3.10.0 contain a critical vulnerability in the TransitionParser.parse() method, located within the nltk/parse/transitionparser.py file. This vulnerability arises because the library uses an insecure default setting for the pickle_load() function, specifically setting restricted=False. By default, this utilizes the standard WarningUnpickler which fails to restrict class resolution during the deserialization process.</p>
<p>When an application utilizing NLTK processes an attacker-controlled or malicious model file, the deserialization of that object allows for the execution of arbitrary Python code. This occurs because the library does not utilize the provided RestrictedUnpickler for production tasks, thereby allowing gadget chains to execute within the context of the running application. This vulnerability is patched in version 3.10.0 and carries a CVSS 3.1 base score of 9.6.</p>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability allows an attacker to execute arbitrary code with the full privileges of the user running the application. This could lead to full system compromise, data exfiltration, or the deployment of persistent threats depending on the service's environment. Applications that process untrusted NLTK model files are at the highest risk.</p>
<h2 id="recommendation">Recommendation</h2>
<ol>
<li>Upgrade the NLTK library to version 3.10.0 or later across all production and development environments.</li>
<li>Implement strict input validation or signing for all model files processed by applications to ensure they originate from a trusted source.</li>
<li>Audit applications using the TransitionParser module to ensure that user-supplied input is not directly passed to the parsing engine.</li>
<li>Restrict application service account permissions to the principle of least privilege to minimize the impact of a potential RCE event.</li>
</ol>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category><category>denial-of-service</category><category>xml-vulnerability</category><category>cve-2026-78681</category><category>deserialization</category><category>rce</category><category>nltk</category><category>python</category></item><item><title>Remote Code Execution in NLTK AllowlistUnpickler</title><link>https://feed.craftedsignal.io/briefs/2026-08-nltk-rce/</link><pubDate>Sat, 22 Aug 2026 15:31:03 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-08-nltk-rce/</guid><description>NLTK versions prior to 3.10.3 are vulnerable to remote code execution due to improper validation of dotted names during the unpickling of transition-parser models.</description><content:encoded><![CDATA[<p>NLTK (Natural Language Toolkit) versions before 3.10.3 contain a remote code execution vulnerability in the AllowlistUnpickler component. The vulnerability, tracked as CVE-2026-71513, stems from insufficient validation logic; while the component validates the pickle module string, it fails to validate the global name. This oversight allows an attacker to resolve dotted names via attribute traversal, successfully bypassing the allowlist.</p>
<p>By crafting and providing a malicious transition-parser model, an attacker can trigger arbitrary command execution when the <code>TransitionParser.parse</code> method invokes <code>allowlisted_pickle_load</code>. Because this involves the deserialization of untrusted data (CWE-502), any application utilizing NLTK to load untrusted transition-parser models is at risk. Defenders should prioritize updating NLTK to version 3.10.3 or later to remediate the flaw in the underlying pickle security logic.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker generates a malicious transition-parser model file using crafted pickle payloads.</li>
<li>Attacker leverages attribute traversal to reference callables outside the intended allowlisted namespace.</li>
<li>Attacker delivers the malicious model to a target application that uses the NLTK library.</li>
<li>Target application invokes the <code>TransitionParser.parse</code> function, which subsequently calls <code>allowlisted_pickle_load</code>.</li>
<li>The <code>AllowlistUnpickler</code> fails to perform validation on the global name during deserialization.</li>
<li>The pickle loader executes the attacker-supplied malicious callable.</li>
<li>Arbitrary code executes within the context of the application process, leading to full system compromise or exfiltration.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows for remote code execution, which can lead to complete compromise of the affected application environment. Given the widespread use of NLTK in data science and NLP pipelines, this vulnerability could impact numerous downstream services and automated systems that process user-provided model files. The CVSS 3.1 base score of 8.8 indicates a high severity rating with potential for full confidentiality, integrity, and availability impact.</p>
<h2 id="recommendation">Recommendation</h2>
<p>Prioritized actions for security and engineering teams:</p>
<ul>
<li>Upgrade NLTK to version 3.10.3 or later across all environments where natural language processing tasks are performed.</li>
<li>Audit existing infrastructure to identify applications that load externally provided transition-parser models.</li>
<li>Implement strict input validation and sandboxing for any component that processes serialized Python objects or untrusted model files.</li>
<li>Monitor application logs for unexpected process spawns or network connections originating from Python environments using NLTK.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category></item><item><title>Arbitrary File Read in NLTK via Path Traversal</title><link>https://feed.craftedsignal.io/briefs/2026-08-nltk-path-traversal/</link><pubDate>Fri, 14 Aug 2026 02:03:36 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-08-nltk-path-traversal/</guid><description>NLTK versions prior to 3.10.0 are vulnerable to path traversal (CVE-2026-12243) due to improper sequence decoding in nltk.data.load(), allowing attackers to read arbitrary files.</description><content:encoded><![CDATA[<p>NLTK (Natural Language Toolkit) versions prior to 3.10.0 contain a critical path traversal vulnerability (CVE-2026-12243) in the <code>nltk.data.load()</code> and <code>nltk.data.find()</code> functions. The vulnerability exists because the library performs security validation checks on a user-supplied <code>resource_name</code> string before decoding percent-encoded sequences using <code>url2pathname()</code>.</p>
<p>An attacker can bypass these safety checks by supplying encoded traversal sequences (e.g., <code>%2e%2e</code> instead of <code>..</code>). Because the security validation logic operates on the encoded input, the malicious path is permitted. Once the internal validation is cleared, <code>url2pathname()</code> decodes the sequence to <code>..</code>, enabling the function to resolve paths outside of the intended NLTK data directory. This allows an attacker to read any file on the filesystem accessible by the application process, including sensitive credentials, configuration files, and SSH keys.</p>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows unauthorized access to sensitive system files. In environments where an application exposes functionality that accepts user-defined resource paths to the NLTK library (such as an NLTK-based web scraper or NLP analysis service), an unauthenticated or low-privileged attacker can exfiltrate arbitrary files. This may lead to credential theft, full server compromise, or unauthorized access to protected application data.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade the <code>nltk</code> library to version 3.10.0 or later immediately to patch CVE-2026-12243.</li>
<li>Audit applications using <code>nltk.data.load()</code> or <code>nltk.data.find()</code> to determine if user-controlled input is passed directly to these functions without external sanitization.</li>
<li>If upgrading is not immediately possible, implement a wrapper around <code>nltk.data.load()</code> that manually performs URL decoding (<code>urllib.parse.unquote</code>) on the input path before any other processing or validation occurs.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category></item></channel></rss>