Skip to content
Heist/ feed
Back to feed
High

@logtape/syslog: syslog log injection via unescaped control characters and unvalidated SD-NAME keys

Type: advisorySources: OSV

LogTape is an unobtrusive logging library. Prior to 1.3.11, 2.0.14, and 2.1.5, the @logtape/syslog package's escapeStructuredDataValue() function in packages/syslog/src/syslog.ts does not neutralize C0 control characters from U+0000 through U+001F in structured data values, and formatStructuredData() inserts property keys without validating the RFC 5424 SD-NAME grammar. When includeStructuredData is true, an attacker-controlled newline can terminate an RFC 6587 non-transparent TCP syslog frame and make following bytes appear as a forged RFC 5424 record, while a key containing a closing bracket or other forbidden character can terminate or corrupt the structured-data element. Applications that forward attacker-controlled property values or keys can therefore allow forged records with arbitrary hosts, applications, process identifiers, facilities, or severity levels, undermining downstream collector and SIEM integrity. This issue is fixed in versions 1.3.11, 2.0.14, and 2.1.5.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-54511
Confirmed fixed CVEs
Not specified
Updated in this feed
6 Nov 2026, 02:20 UTC · Revision 1

Source evidence

@logtape/syslog: syslog log injection via unescaped control characters and unvalidated SD-NAME keys

core-osv · Original source

Published 26 Aug 2026, 14:27 UTC

LogTape is an unobtrusive logging library. Prior to 1.3.11, 2.0.14, and 2.1.5, the @logtape/syslog package's escapeStructuredDataValue() function in packages/syslog/src/syslog.ts does not neutralize C0 control characters from U+0000 through U+001F in structured data values, and formatStructuredData() inserts property keys without validating the RFC 5424 SD-NAME grammar. When includeStructuredData is true, an attacker-controlled newline can terminate an RFC 6587 non-transparent TCP syslog frame and make following bytes appear as a forged RFC 5424 record, while a key containing a closing bracket or other forbidden character can terminate or corrupt the structured-data element. Applications that forward attacker-controlled property values or keys can therefore allow forged records with arbitrary hosts, applications, process identifiers, facilities, or severity levels, undermining downstream collector and SIEM integrity. This issue is fixed in versions 1.3.11, 2.0.14, and 2.1.5.

osv:CVE-2026-54511
Complete source record
{
  "id": "1b8bbed313ccb31ae3e4554bf93e19a4ce8d3cb5e7631ca4d65e9222864cb43d",
  "url": "https://osv.dev/vulnerability/CVE-2026-54511",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "@logtape/syslog: syslog log injection via unescaped control characters and unvalidated SD-NAME keys",
    "summary": "LogTape is an unobtrusive logging library. Prior to 1.3.11, 2.0.14, and 2.1.5, the @logtape/syslog package's escapeStructuredDataValue() function in packages/syslog/src/syslog.ts does not neutralize C0 control characters from U+0000 through U+001F in structured data values, and formatStructuredData() inserts property keys without validating the RFC 5424 SD-NAME grammar. When includeStructuredData is true, an attacker-controlled newline can terminate an RFC 6587 non-transparent TCP syslog frame and make following bytes appear as a forged RFC 5424 record, while a key containing a closing bracket or other forbidden character can terminate or corrupt the structured-data element. Applications that forward attacker-controlled property values or keys can therefore allow forged records with arbitrary hosts, applications, process identifiers, facilities, or severity levels, undermining downstream collector and SIEM integrity. This issue is fixed in versions 1.3.11, 2.0.14, and 2.1.5.",
    "evidence": "osv:CVE-2026-54511",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-54511",
      "aliases": [
        "CVE-2026-54511",
        "GHSA-8h6h-x5pq-56fq"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/dahlia/logtape",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "26297f576f26ed9a33b98ec0acdce474a59dd9ea"
                },
                {
                  "introduced": "83444eaf5945776cac565e7e40406fe21c24b47c"
                },
                {
                  "fixed": "ca19a5bf4e3498e1ec6f590e9c37fa6bfce1122f"
                },
                {
                  "introduced": "756ef1a06422463b9504d15ecc37eeac486dacf6"
                },
                {
                  "fixed": "046bd33a98f337077eebba49383d5829ef0a64a6"
                },
                {
                  "fixed": "7a6e5b9ddf7915edfff78fa129bc17c979b2a623"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "1.3.11"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "2.0.0"
                      },
                      {
                        "fixed": "2.0.14"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "2.1.0"
                      },
                      {
                        "fixed": "2.1.5"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "7a6e5b9ddf7915edfff78fa129bc17c979b2a623"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "26297f576f26ed9a33b98ec0acdce474a59dd9ea"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "1.3.11"
                  },
                  {
                    "range": [
                      {
                        "fixed": "ca19a5bf4e3498e1ec6f590e9c37fa6bfce1122f"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "2.0.14"
                  },
                  {
                    "range": [
                      {
                        "fixed": "046bd33a98f337077eebba49383d5829ef0a64a6"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "2.1.5"
                  }
                ]
              }
            }
          ],
          "versions": [
            "2.1.4",
            "2.0.13",
            "2.1.3",
            "2.0.12",
            "2.1.2",
            "2.0.11",
            "2.1.1",
            "2.0.10",
            "2.1.0",
            "2.0.9",
            "1.3.10",
            "2.0.8",
            "1.3.9",
            "2.0.7",
            "2.0.6",
            "1.3.8",
            "2.0.5",
            "2.0.4",
            "2.0.3",
            "2.0.2",
            "1.3.7",
            "2.0.1",
            "2.0.0",
            "1.3.6",
            "1.3.5",
            "1.3.4",
            "1.3.3",
            "1.3.2",
            "1.3.1",
            "1.3.0",
            "1.2.0",
            "1.1.0",
            "1.0.0",
            "0.12.0",
            "0.11.0",
            "0.10.0",
            "0.9.0",
            "0.8.0",
            "0.7.0",
            "0.6.0",
            "0.5.0",
            "0.4.0",
            "0.3.0",
            "0.1.0",
            "0.2.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-54511.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:46.365490883Z",
      "provider": "osv",
      "references": [
        "https://github.com/dahlia/logtape/releases/tag/1.3.11",
        "https://github.com/dahlia/logtape/releases/tag/2.0.14",
        "https://github.com/dahlia/logtape/releases/tag/2.1.5",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/54xxx/CVE-2026-54511.json",
        "https://github.com/dahlia/logtape/security/advisories/GHSA-8h6h-x5pq-56fq",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-54511",
        "https://github.com/dahlia/logtape/commit/7a6e5b9ddf7915edfff78fa129bc17c979b2a623"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-117",
          "CWE-93"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/54xxx/CVE-2026-54511.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-54511",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 514226,
  "published_at": "2026-08-26T14:27:27.91+00:00"
}