CVE-2026-6067
THREAT INTELLIGENCE REPORT — CVE-2026-6067
Prepared by: Valters IT Security Research
Date: Ongoing analysis
Classification: TLP:CLEAR
Executive Summary
CVE-2026-6067 is a heap buffer overflow vulnerability in the Netwide Assembler (NASM) located within the obj_directive() function, caused by insufficient bounds checking. The flaw is triggerable when a user assembles a maliciously crafted .asm file, potentially resulting in heap memory corruption, denial-of-service (crash), and — under specific conditions — arbitrary code execution in the context of the process invoking NASM.
The vulnerability is currently unpatched across all known NASM versions, with no vendor fix, no workaround, and no patched release identified by any tracked source. A public proof-of-concept exists, and while CISA KEV does not list this CVE, the availability of an exploit and the lack of a fix create a material risk for any environment where NASM is used to process untrusted assembly source files — for example, in CI/CD build pipelines, code-upload portals, or triage automation that feeds unknown files to assemblers.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
Vulnerability Class and Mechanism
The vulnerability falls under CWE-787 (Out-of-bounds Write), specifically a heap buffer overflow. Heap overflows occur when a program writes data beyond the allocated boundary of a heap-allocated memory region. In this case, the overflow is triggered through NASM's object-format directive handler, a code path that processes inline assembler directives and their associated arguments.
The NVD description identifies the vulnerable function as obj_directive(), an internal NASM routine responsible for handling object-file-format-specific directives during assembly. The absence of bounds checking within this function means that when NASM processes a malformed directive embedded in a .asm source file, it can write beyond the allocated heap buffer.
Attack Surface
The attack surface is the NASM assembler itself, invoked on untrusted input. NASM is a widely used x86/x86-64 assembler that is commonly:
- Invoked in build pipelines and dev toolchains (Makefiles, CMake, custom build scripts).
- Embedded in compilers and other tooling that accepts assembly source files.
- Installed on developer workstations and build agents.
- Sometimes exposed through web-based code-compilation or code-testing interfaces.
The assembly process is the sole prerequisite for exploitation; no special privileges, authentication, or network services are required. The user only needs to execute nasm (or a wrapper that calls NASM) against a malicious .asm file. The attack is local in terms of execution, but the input vector is often remotely deliverable (e.g., downloading a project archive, receiving a code sample in a chat tool, or processing a contributed file through an automated pipeline).
Technical Details
The NVD description specifically states that the vulnerability is "due to a lack of bounds checking in the obj_directive() function." The mechanics at the code level can be inferred at a class level only — the function processes directive arguments (likely strings or numeric tokens) inside the object-format module of NASM. Because bounds checking is missing, a directive argument crafted with an unusual length or formatting could cause a heap write to exceed its allocation.
It is important to note that the NVD/OSV entry provides no more granular function-level details (no line numbers, no specific directive names, no call-stack details). Consequently, exploitation specifics below are presented at the vulnerability-class level where concrete evidence is absent.
State of Patching
Patch confidence: 0/4. The OSV package entry marks the package as unfixed with a created timestamp of b1ee0338a3f8027cf6886ca21ee31d444c615373 and no resolved timestamp. No vendor advisory, commit, or release has been identified that addresses this flaw. NASM's upstream maintainers have not yet published an official fix, meaning all distributions shipping NASM are also vulnerable unless a backport emerges from an independent source.
Exploitation Scenarios
Exploiting CVE-2026-6067 does not require network-level exploitation in the traditional sense; rather, an attacker needs to deliver a crafted .asm source file to a victim who will assemble it with NASM. The attack chain is as follows:
1. Reconnaissance / Target Identification
An attacker identifies an environment where NASM is invoked on third-party or untrusted assembly sources. Common discoverable surfaces include:
- CI/CD build servers that compile projects whose source code is pulled from untrusted contributors (e.g., public PRs to a project that contains
.asmfiles). - Code-review or code-execution platforms (developer sandboxes, CTF infrastructure, online compiler frontends).
- Developer workstations — particularly for security researchers, firmware engineers, and developers who regularly examine code from sources of questionable trust.
2. Triggering the Flaw
The attacker crafts a malicious .asm file that contains one or more object-format directives that exercise the vulnerable obj_directive() function in an out-of-bounds manner. Because specific directive names and exact overflow conditions are not disclosed in public data sources, the attack must be tuned at the wrapper/probing level: the attacker can test variations of directive arguments and observe whether NASM crashes.
Attackers can use the publicly referenced PoC as a foundation. The file is expected to include malformed arguments that exceed expected buffer sizes for a directive handler. The attacker distributes the .asm file:
- Bundled in a source archive or pull request;
- As an email attachment;
- Via collaborative code tools (e.g., a link to a gist).
3. Payload / Execution at Class Level
At the class level, the overflow sequence is:
- NASM parses the
.asmsource line-by-line. - When it encounters a directive handled by the object-format module, it invokes
obj_directive(). - The handler copies/processes directive arguments into a heap buffer without verifying that the argument size fits within the buffer.
- A crafted argument writes past the buffer's boundary, corrupting adjacent heap metadata or adjacent sensitive objects.
For denial-of-service, a brute-force overlong argument in a directive alone is sufficient to crash NASM deterministically. For code execution, heap grooming may be needed to control the overflowed data such that it corrupts a heap pointer or function pointer that is later dereferenced — classic heap-exploitation methodology performed against NASM's allocator (libc malloc on most systems).
No public exploit code that demonstrates full code execution has been confirmed; however, the OSV entry marks that a PoC exists publicly, so partial or complete exploitation is considered plausible.
4. Post-Exploitation Impact
Assuming successful arbitrary code execution, an attacker would run code in the context of the user invoking NASM. Impact scenarios:
- Build server compromise: Attackers could patch build artifacts, inject malware into produced binaries, or exfiltrate build secrets.
- Developer workstation access: Persistence, credential harvesting, or lateral movement to internal networks.
- For denial-of-service only: Build pipeline outages, developer toolchain failures, and service disruption on platforms that auto-compile submitted code.
It is worth noting that current proof-of-execution evidence is limited to crash-level impact (consistent with the CVSS vector scoring availability-only: C:N/I:N/A:H at 7.5). Elevation to confidentiality/integrity impact requires additional heap-exploitation sophistication.
Impact Assessment
CVSS Score: 7.5 (High) — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- Attack Vector: Network (AV:N) — The malicious
.asmfile can arrive over the network (download, repo clone, email). - Attack Complexity: Low (AC:L) — No mitigating factors; no unusual conditions required to reach the vulnerable code path.
- Privileges Required: None (PR:N) — Any user who can invoke NASM is vulnerable.
- User Interaction: None (UI:N) — NASM does not prompt for confirmation; assembling is the only action needed.
- Scope: Unchanged (S:U) — The overflow impacts only the process executing NASM.
- Availability Impact: High (A:H) — The most likely outcome (crash/DoS) is trivially achievable. Confidentiality and Integrity are scored Not Affected by NVD because no public exploit demonstrates those outcomes, but a technically capable attacker could escalate to RCE, which would then become C/I impact beyond the scored baseline.
EPSS Score: 0.00357 (28.8th percentile) — Exploitation probability in the wild is currently low; however, given that a public PoC exists and no patch is available, this score could rise sharply as defenders and attackers re-evaluate the exploit.
Affected systems: Every environment that runs NASM — Linux distributions (Debian, Ubuntu, RHEL, Arch, etc.), BSDs, Windows installs, and macOS builds of the assembler. The OSV database entry confirms all versions are unpatched as of the data snapshot.
Blast radius: Developer workstations, build agents, CI runners, and any web-facing compilation sandbox. In organizations with strict segregation between build and production, RCE on a build node may still be considered a high-value target due to code-signing keys, internal registry credentials, and source-code access.
CISA KEV: Not listed (as of report generation), so there is no mandated federal remediation timeline. This does not reduce risk; it simply reflects that in-the-wild exploitation evidence has not yet been collected by CISA.
Detection Guidance
The following detection rules are scoped for two stages: (a) pre-exploitation — detecting malicious .asm files or attempts to deliver such files, and (b) exploitation — detecting NASM crashes, abnormal process exit behavior, or anomalous use of NASM on sensitive hosts.
These rules are tuned using the available data on the vulnerability. When the specific malicious directive structure becomes publicly documented (via exploit proof or a vendor patch analysis), the rules below should be refined with those exact indicators.
Sigma Rule
title: NASM Heap Buffer Overflow Exploitation Attempt (CVE-2026-6067)
id: c4d5f6e7-8a90-4b2c-8d3c-e1f0a2b3d4c5
status: experimental
description: Detects NASM crashes or abnormal termination that may indicate exploitation of heap overflows in obj_directive (CVE-2026-6067).
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-6067
logsource:
category: process_creation
product: linux
detection:
selection_nasm_exec:
Image|endswith:
- '/nasm'
- '\nasm.exe'
selection_crash_code:
ExitCode:
- '139' # SIGSEGV
- '134' # SIGABRT
condition: selection_nasm_exec and selection_crash_code
level: high
falsepositives:
- NASM invoked with intentionally crashing test files malformed
- Systems with known crashing third-party ASM code
YARA Rule
/*
* YARA rule to flag .asm or source archive files containing
* object-format directive patterns suspected of targeting
* CVE-2026-6067 heap buffer overflow.
*/
rule NASM_CVE_2026_6067_ObjDirective_Overflow {
meta:
author = "ValtersIT Threat Intel"
description = "Detects suspicious .asm source files with overlong directive arguments targeting NASM object format parser (CVE-2026-6067)"
cve = "CVE-2026-6067"
date = "2026-05-24"
severity = "high"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-6067"
strings:
// Common object-format directives in NASM source
$obj_directive1 = "obj" ascii nocase
$dir_seg_common = "segment" ascii nocase
$dir_group = "group" ascii nocase
$dir_export = "export" ascii nocase
$dir_import = "import" ascii nocase
// Suspicious long line / excessive repetition pattern
$long_line = /[A-Za-z0-9_ \t]{2000,}/
// Comment markers to detect single-line nature
$semicolon_c = ";" ascii
$newline = "\n" ascii
condition:
uint32be(0) == 0x4e41534d // 'NASM' or similar container
or
(
// .asm raw file
(1 of ($dir_*) and #dir_* >= 5) or
($long_line and 1 of ($dir_*))
)
and filesize < 5MB
}
Suricata IDS Rule
Suricata detection is limited because the vulnerability is triggered by local parsing of a file rather than a network protocol exchange. Network-level detection is only feasible when .asm files are transferred unencrypted over HTTP/FTP or inside email attachments. The following rule detects in-transit delivery of likely-malicious .asm content.
alert http any any -> any any (msg:"CVE-2026-6067 NASM Malicious ASM File Delivery - Overlong Directive"; flow:established,to_server; content:".asm"; http.uri; content:"segment"; http.request_body; content:"group"; http.request_body; content:"export"; http.request_body; content:"import"; http.request_body; byte_test: 0, >, 2000, 0, string, rawbytes; classtype:attempted-admin; sid:20266067; rev:1; metadata:created_at 2026_05_24, cve CVE-2026-6067;)
Note: HTTP request body inspection for raw assembly files is uncommon; ensure your HTTP parser inspects request bodies with http.request_body in Stream mode.
Elastic Detection
// Identify NASM process runs ending in segfault/abort within build pipelines
sequence by host.name, process.parent.pid with maxspan=30s
[process where event.type == "start" and process.name == "nasm"]
[process where event.type == "end" and process.name == "nasm" and process.exit_code in (139, 134)]
// Detect NASM spawned on a host with low prevalence (CAS style hunting)
any where process.name == "nasm"
| stats unique_count = cardinality(process.parent.name) by host.name
| filter unique_count < 2
| filter process.exit_code == 139
Splunk SPL Query
index=windows OR index=linux sourcetype=WinEventLog:Security OR sourcetype=linux_audit
| where Image LIKE "%nasm%" OR process_name="nasm"
| where exit_code=139 OR exit_code=134
| stats count, values(CommandLine) as cmd by host, user, Image, _time
| sort - _time
// Hunt: NASM executions in last 7 days with large .asm files delivered via web download
index=proxy OR index=downloads
| search "*.asm" AND (uri_path="*.asm" OR file_name="*.asm")
| where length(_raw) > 1000
| table _time, src_ip, dest_ip, uri, file_name, user
| join type=outer dest_ip [ search index=process sourcetype=linux_audit process_name="nasm" | table dest_ip, host]
Wazuh OSSEC Rule
<group name="system,nasm,cve-2026-6067,">
<!-- NASM abnormal termination - potential CVE-2026-6067 -->
<rule id="100267" level="10">
<if_sid>100201</if_sid> <!-- depends on your process exec alert rule -->
<match>nasm</match>
<field name="audit.data.syscall">execve</field>
<description>NASM process executed - monitor for crash/exploit CVE-2026-6067</description>
<group>process_execution,</group>
</rule>
<rule id="100268" level="12">
<if_sid>100267</if_sid>
<match>exit_code=139|exit_code=134|SIGSEGV|SIGABRT</match>
<description>NASM terminated with crash signal - possible CVE-2026-6067 heap overflow exploitation</description>
<mitre>
<id>T1203</id>
</mitre>
<group>attribution,nasm_overflow,</group>
</rule>
</group>
Mitigation & Patch Guidance
Patch confidence: 0/4 — NO PATCH CURRENTLY AVAILABLE.
1) Immediate Mitigations (until a vendor fix ships)
- Restrict NASM execution to trusted input only. If your build process does not need to accept externally contributed
.asmfiles, configure build agents to reject source files from untrusted pull-request authors. - Run NASM inside a sandbox: Use
bwrap, Docker, gVisor, or a dedicated low-privilege VM for any assembly from untrusted projects. This contains any code-execution result and converts a full compromise into a contained sandbox escape problem. - Run NASM in a memory-safe wrapper: If immediate sandboxing is impractical, run NASM under a memory-error detector (e.g., gVisor, QEMU user-mode emulation) or disable core dumps to reduce post-crash artifact exposure.
- Monitor builds for crashes: If you observe recurring
SIGSEGV/SIGABRTfrom NASM, halt the pipeline path and inspect the offending.asmfile for malicious directive patterns. - Patch-level workaround consideration: While no official source patch exists, security researchers may publish a binary patch or an alternative assembler drop-in (e.g.,
yasm, which historically shares code lineage with NASM — verify if the equivalent function in yasm is also vulnerable). Evaluate whether swapping in an alternative assembler is possible for your use case. - No network service workaround applies because this is not a network-facing service flaw; the risk is workload-triggered.
2) Patch/Upgrade Steps
- Monitor NASM upstream release notes and CVEs via nasm.us and the OSV database.
- When a fix becomes available, update all NASM packages — do not wait for your Linux distribution's package cycle if the upstream fix is available as a source tarball; compile locally if necessary.
- Test the patched version against your existing
.asmcorpus to ensure no regressions in output binary generation.
3) Long-Term Hardening
- Establish an ASM source trust policy: Ensure incoming
.asmfiles are reviewed and gated by maintainers before entering any CI pipeline that runs NASM. - Adopt privilege separation: Assemblers should never run with the same privileges as the build orchestrator. Dedicated build accounts with least-privilege and no network egress reduce post-exploitation reach.
- Architectural mitigation: If in-process crashes are unacceptable (e.g., when NASM processes untrusted files in a serverless function or a web upload endpoint), move assembly tasks to isolated worker processes with hard memory limits and per-request ephemeral filesystems.
- Stay informed on exploit development. As the public PoC matures, the EPSS percentile is expected to rise; revisit the CISA KEV list weekly for this CVE and apply emergency mitigations if added.
References
- NVD Entry — https://nvd.nist.gov/vuln/detail/CVE-2026-6067 (CWE-787, CVSS 7.5, vector as quoted)
- OSV Entry — OSV record for CVE-2026-6067 (unfixed, introducer commit
b1ee0338a3f8027cf6886ca21ee31d444c615373, no resolved fix) - NASM Official Website — https://www.nasm.us/ (issue tracker and release announcements — check for pending fix)
- CISA KEV — NOT listed for this CVE (no in-the-wild exploitation evidenced as of writing)
- MITRE ATT&CK — T1203 Execution: Exploitation for Client Execution (applicable analog)
- EPSS Data — FIRST.org EPSS score snapshot for CVE-2026-6067: 0.00357 (28.8% percentile)
Report end. Dissemination restricted to TLP:CLEAR. Share responsibly, check for updated patch information before taking actionable decisions. Analysis prepared by ValtersIT Security Research.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.