AI for Security Summit: Join Figma, Perplexity & Wiz. [Register]

CVE-2026-35176
NixOS vulnerability analysis and mitigation

Overview

CVE-2026-35176 is a heap-buffer-overflow read vulnerability in openFPGALoader's POFParser::parseSection() function that allows out-of-bounds heap memory access when parsing a crafted .pof file. It affects openFPGALoader versions 1.1.1 and earlier (up to commit 3429d34). No FPGA hardware is required to trigger the vulnerability. It was published on April 6, 2026, with a CVSS v3.1 base score of 7.1 (High) (GitHub Advisory, Red Hat CVE).

Technical details

The root cause is an out-of-bounds read (CWE-125) in src/pofParser.cpp. In POFParser::parse(), a 32-bit size field is read directly from the .pof file and passed to parseSection() without validating that pos + size does not exceed the file buffer length. In parseSection(), case 0x11 uses this attacker-controlled size to resize _bit_data and then calls std::copy(_raw_data.begin() + pos, _raw_data.begin() + pos + size, _bit_data.begin()) — when pos + size exceeds _raw_data.size(), the copy reads heap memory beyond the allocated buffer. An additional issue exists in the ARRAY2INT32 macro in pofParser.hpp, which casts values to uint16_t before left-shifting by 16 and 24 bits, constituting undefined behavior under the C++ standard. Exploitation requires only that a victim opens a malicious .pof file with the tool (GitHub Advisory).

Impact

Successful exploitation can result in information disclosure and application crash (denial of service). The leaked heap memory is stored in _bit_data, which may subsequently be written to an FPGA device or to a file, potentially exposing sensitive in-memory data. This represents a supply-chain risk when malicious .pof files are distributed within FPGA development projects or shared repositories (GitHub Advisory).

Exploitability

A proof-of-concept exploit is publicly available in the GitHub Security Advisory, consisting of a minimal 50-byte Python script that generates a malicious .pof file reproducing the AddressSanitizer crash. The exploit requires local access and user interaction (opening the crafted file), but no privileges or FPGA hardware. The EPSS score is approximately 0.013% (very low probability of widespread exploitation), and there is no evidence of in-the-wild exploitation or CISA KEV catalog listing at this time (GitHub Advisory).

Exploitation steps

  1. Craft malicious .pof file: Use the published Python PoC to generate a minimal 50-byte .pof file with a crafted size field that causes pos + size to exceed the actual file buffer length:
import struct, sys
data = b'POF\x00'
data += struct.pack('<I', 0x11)  # section flag
data += struct.pack('<I', 0xFFFFFFFF)  # oversized size field
data += b'\x00' * 42  # padding
with open('malicious.pof', 'wb') as f:
    f.write(data)
  1. Deliver the file: Share the crafted .pof file via a project repository, email, or other distribution channel targeting an FPGA developer who uses openFPGALoader.
  2. Trigger parsing: The victim runs openFPGALoader with the malicious file as input (e.g., openFPGALoader -b <board> malicious.pof), causing POFParser::parse() to read the oversized size field and pass it to parseSection().
  3. Out-of-bounds read occurs: std::copy reads heap memory beyond the file buffer into _bit_data, potentially leaking sensitive heap contents and/or crashing the application with a segmentation fault or AddressSanitizer error (GitHub Advisory).

Indicators of compromise

  • File System: Unexpected or externally sourced .pof files in FPGA project directories, particularly those with anomalously small file sizes (e.g., ~50 bytes) but large declared section sizes.
  • Process: openFPGALoader process terminating abnormally with a segmentation fault or memory error when processing a .pof file; crash dumps or core files generated by the openFPGALoader process.
  • Logs: Application crash logs or AddressSanitizer output referencing POFParser::parseSection() or pofParser.cpp:164; system logs showing abnormal termination of the openFPGALoader binary.
  • File System: Unexpected output files written by openFPGALoader containing anomalous binary data (potential heap memory leak stored in _bit_data) (GitHub Advisory).

Mitigation and workarounds

No patched release version has been formally published as of the advisory date; the affected versions are listed as all commits up to and including 3429d34. Users should update to a commit beyond 3429d34 once a fix is merged, or build from the latest main branch after confirming the patch is applied. As a workaround, avoid opening .pof files from untrusted or unverified sources, and restrict openFPGALoader usage to authorized users with access only to trusted FPGA configuration files (GitHub Advisory).

Additional resources


SourceThis report was generated using AI

Related NixOS vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-85706CRITICAL10
  • GitLab logoGitLab
  • cpe:2.3:a:gitlab:gitlab
YesYesSep 12, 2026
CVE-2026-88009HIGH8.8
  • NixOS logoNixOS
  • traefik-3
NoYesSep 10, 2026
CVE-2026-88008HIGH7
  • NixOS logoNixOS
  • traefik
NoYesSep 10, 2026
CVE-2026-88012MEDIUM5.3
  • NixOS logoNixOS
  • cpe:2.3:a:traefik:traefik
NoYesSep 10, 2026
CVE-2026-88011MEDIUM5.3
  • NixOS logoNixOS
  • traefik-fips-3
NoYesSep 10, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management