Description
Text::CSV_XS versions before 1.65 for Perl drop the end of a record and its line ending when a UTF-8 flagged field precedes invalid UTF-8 bytes in print.

When a record contains a UTF-8 flagged field, print holds back trailing bytes that are not valid UTF-8 at each buffer flush, so that a character split across two flushes can be completed. Nothing writes the held-back bytes after the record's final flush. A record whose last field ends in such a byte loses it, any closing quote and the line ending, while print still returns true. combine is not affected.

The next record is written onto the same line, or, when the last field was quoted, the missing closing quote makes a reader take every following record as part of that field.
Published: 2026-10-16
Score: 9.8 Critical
EPSS: < 1% Very Low
KEV: No
Impact: Data Integrity
Action: Immediate Patch
AI Analysis

Impact

The Text::CSV_XS Perl module, before version 1.65, contains a flaw in its print routine that deletes trailing bytes that are not valid UTF‑8 when a UTF‑8 flagged field precedes such bytes. As a consequence, the end of the last field, the closing delimiter, and the line ending are omitted from the record while the function still reports success. The missing quotation mark can cause an entire subsequent record to be parsed as part of that field, leading to concatenated or corrupted CSV data. This behavior maps to CWE‑116 (Improper Encoding/Decoding) and CWE‑135 (Improper Handling of Exceptional Conditions).

Affected Systems

Any application built with Perl that imports or exports CSV files using Text::CSV_XS version 1.64 or earlier is affected. The issue is present regardless of operating system or Perl distribution, as long as the old module is installed from CPAN or similar repositories.

Risk and Exploitability

The vulnerability does not provide remote code execution or privilege escalation; it mainly causes loss or corruption of CSV data. The likely attack vector involves local or trusted users feeding crafted CSV input processed by the vulnerable module, making the exploitation scenario limited to environments where such input is handled. The CVSS score of 9.8 indicates high severity. The EPSS score of < 1% and the fact that the vulnerability is not listed in the CISA KEV catalog suggest a low likelihood of widespread exploitation. Nonetheless, systems depending on accurate CSV data should treat this as an integrity risk and address it promptly.

Generated by OpenCVE AI on October 22, 2026 at 22:55 UTC.

Remediation

Vendor Solution

Upgrade to Text-CSV_XS 1.65 or later.


OpenCVE Recommended Actions

  • Upgrade to Text::CSV_XS 1.65 or higher, which removes the bug.
  • If an immediate upgrade cannot be performed, apply the upstream patch found at https://github.com/cpan-authors/Text-CSV_XS/commit/0610a8d81262ae6f1ac82a88d73c8a471f38af19.patch, which fixes the print logic.
  • After applying the upgrade or patch, validate exported CSV files to ensure that trailing bytes, closing quotes, and line endings are retained and that downstream parsers correctly interpret the data.

Generated by OpenCVE AI on October 22, 2026 at 22:55 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 21 Oct 2026 20:45:00 +0000

Type Values Removed Values Added
First Time appeared Hmbrand
Hmbrand text::csv Xs
Vendors & Products Hmbrand
Hmbrand text::csv Xs

Tue, 20 Oct 2026 19:30:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 5.3, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N'}

ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}

cvssV3_1

{'score': 9.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H'}


Sat, 17 Oct 2026 00:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-135
References
Metrics threat_severity

None

cvssV3_1

{'score': 5.3, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N'}

threat_severity

Moderate


Fri, 16 Oct 2026 22:30:00 +0000

Type Values Removed Values Added
Description Text::CSV_XS versions before 1.65 for Perl drop the end of a record and its line ending when a UTF-8 flagged field precedes invalid UTF-8 bytes in print. When a record contains a UTF-8 flagged field, print holds back trailing bytes that are not valid UTF-8 at each buffer flush, so that a character split across two flushes can be completed. Nothing writes the held-back bytes after the record's final flush. A record whose last field ends in such a byte loses it, any closing quote and the line ending, while print still returns true. combine is not affected. The next record is written onto the same line, or, when the last field was quoted, the missing closing quote makes a reader take every following record as part of that field.
Title Text::CSV_XS versions before 1.65 for Perl drop the end of a record and its line ending when a UTF-8 flagged field precedes invalid UTF-8 bytes in print
Weaknesses CWE-116
References

Subscriptions

Hmbrand Text::csv Xs
cve-icon MITRE

Status: PUBLISHED

Assigner: CPANSec

Published:

Updated: 2026-10-20T18:27:42.479Z

Reserved: 2026-10-14T17:07:07.806Z

Link: CVE-2026-110756

cve-icon Vulnrichment

Updated: 2026-10-20T18:26:15.379Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-10-16T23:17:00.847

Modified: 2026-10-20T19:17:30.000

Link: CVE-2026-110756

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-10-16T22:07:37Z

Links: CVE-2026-110756 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-22T23:00:14Z

Weaknesses
  • CWE-116

    Improper Encoding or Escaping of Output

  • CWE-135

    Incorrect Calculation of Multi-Byte String Length