CVE-2026-23745 affects node-tar (npm package "tar") versions 7.5.2 and earlier. During archive extraction, node-tar fails to properly sanitize the linkpath field of TAR Link (hardlink) and SymbolicLink entries even when preservePaths is false, which is intended to be the safer default behavior. In the hardlink handling path in src/unpack.ts, the library resolves entry.linkpath with path.resolve(this.cwd, entry.linkpath) but does not verify that the resolved target remains within the intended extraction root; if linkpath is absolute, path.resolve can escape the extraction directory entirely. In the symlink handling path, node-tar passes the attacker-controlled entry.linkpath directly to fs.symlink without validating absolute targets or traversal sequences. As a result, a crafted TAR archive can bypass extraction root restrictions and create hardlinks or symlinks pointing outside the destination directory.
Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.
What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.
What an attacker gets, and what they’ve been doing with it.
If you can’t patch tonight, do this now.
Patch, then assume compromise.
2 valid exploits after Mallory filtered fakes, detection scripts, and README-only repos.
This repository contains a standalone exploit set for an alleged tar-extraction vulnerability reachable through GraphQL operations, labeled CVE-2026-23745. The repo has 34 files total, but only 2 code files: a Python network exploit (exploit.py) and a JavaScript local proof-of-concept (PoC.js). The remaining files are large supporting wordlists in TXT/CSV form, organized under wordlists/1k, wordlists/10k, and wordlists/100k, plus top-level CSV/TXT variants. These wordlists contain likely GraphQL operation types, query/mutation/subscription type names, field names, and argument names used to brute-force schema elements when introspection is limited or disabled. PoC.js is a local reproduction script using Node.js and the tar library. It creates a malicious tar archive with a hardlink entry and a symlink entry, extracts it with preservePaths disabled, and then attempts to overwrite a file through the extracted hardlink to verify unsafe extraction behavior. It uses local files/directories out_repro, secret.txt, exploit.tar, and references /etc/passwd as a symlink target. This file demonstrates the core primitive: arbitrary file overwrite via malicious tar metadata. exploit.py is the main remote exploit. It accepts a target URL, a target file path, a mutation limit, and verbose mode. It detects likely GraphQL endpoints by trying common paths such as /graphql and /api/graphql, sends GraphQL queries over GET requests, disables TLS verification for HTTPS, tests endpoint validity with {__typename}, and attempts schema introspection with __schema queries. It then appears to extract mutation names from introspection when available; otherwise it relies on bundled wordlists to generate candidate operation names, fields, and arguments. The exploit constructs a malicious tar archive manually, base64-encodes it, and likely injects it into candidate GraphQL mutations to find a file-upload or extraction path that will process the archive. The intended impact is arbitrary overwrite of attacker-selected files on the target host, with defaults/examples including /etc/passwd and /etc/shadow. Overall, this is an exploit repository rather than a detector. It combines endpoint discovery, GraphQL schema probing, brute-force mutation discovery, and a concrete tar-based overwrite payload. The code is operational but not obviously tied to a known framework, and the payload logic is relatively fixed, so OPERATIONAL is the best maturity fit.
Repository contains a single JavaScript proof-of-concept (poc.js) and a README describing CVE-2026-23745 in node-tar. The PoC programmatically constructs a malicious tar archive by manually creating tar.Header entries for a hardlink (type 'Link') and a symlink (type 'SymbolicLink') where the critical field linkpath is an absolute path. It writes the archive to exploit.tar, extracts it into out_repro using tar.x with preservePaths:false, and then writes to the extracted hardlink path (out_repro/exploit_hard). If the library is vulnerable, that write follows the hardlink to the absolute target (secret.txt in the PoC) and overwrites it, confirming arbitrary file overwrite outside the extraction root. The README attributes the root cause to path.resolve(cwd, entry.linkpath) behavior when linkpath is absolute, and notes a fix in v7.5.3 via sanitization (stripAbsolutePath). No network activity is present; all actions are local filesystem operations demonstrating the vulnerability.
Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.
Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.
14 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.
Query your assets running an affected version, and investigate the blast radius.
Every observed campaign linking this CVE to a named adversary.
Malware families riding this exploit, with evidence and IOCs.
YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.
Cross-references every affected SKU, including bundled OEM variants.
Community discussion across Reddit, Mastodon, and other social sources.