Loading...
Skip to main content

CVE-2026-32771 — Vulnerability in github.com/ctfer-io/monitoring —...

HIGH

Monitoring is vulnerable to Archive Slip due to missing checks in sanitization

Published March 16, 2026Updated May 5, 2026Source: osv

Summary

The `sanitizeArchivePath` function in `pkg/extract/extract.go` (lines 248–254) is vulnerable to a path traversal bypass due to a missing trailing path separator in the `strings.HasPrefix` check. A crafted tar archive can write files outside the intended destination directory when using the `extractor` CLI tool or the `extract.DumpOTelCollector` library function. ## Vulnerable Code File: `pkg/extract/extract.go`, lines 248–254 ```go func sanitizeArchivePath(d, t string) (v string, err error) { v = filepath.Join(d, t) if strings.HasPrefix(v, filepath.Clean(d)) { // ← missing trailing separator return v, nil } return "", fmt.Errorf("filepath is tainted: %s", t) } ``` The function is called at line 219 inside `untar`, which is invoked by `copyFromPod` (line 205) during the Cold Extract data dump workflow. ## Root Cause `strings.HasPrefix(v, filepath.Clean(d))` does not append a trailing `/` to the directory prefix, causing a **directory name prefix collision**. If the destination is `/home/user/extract-output` and a tar entry is named `../extract-outputevil/pwned`, the joined path `/home/user/extract-outputevil/pwned` passes the prefix check — it starts with `/home/user/extract-output` — even though it is entirely outside the intended directory. ## Steps to Reproduce 1. **Deploy the monitoring stack** with `ColdExtract: true`. The OTEL Collector begins writing signal data (`otel_traces`, `otel_metrics`, `otel_logs`) to the shared PVC. 2. **Place the PoC tar on the PVC.** Any pod with write access to the `ReadWriteMany` PVC (or the compromised OTEL Collector itself) copies a `poc-path-traversal.tar` into the `/data/collector` mount path. The archive contains three real-looking OTLP telemetry files alongside two crafted entries with path-traversal names. 3. **Run the extractor against the namespace:** ``` extractor \ --namespace monitoring \ --pvc-name <signals-pvc-name> \ --directory /home/user/extract-output ``` 4. **Observe the bypass.** `untar` processes the tar stream. For the malicious entries: ``` // entry name: ../extract-outputevil/poc-proof.txt filepath.Join("/home/user/extract-output", "../extract-outputevil/poc-proof.txt") => "/home/user/extract-outputevil/poc-proof.txt" strings.HasPrefix("/home/user/extract-outputevil/poc-proof.txt", "/home/user/extract-output") => true // BUG: prefix collision; file lands OUTSIDE target dir ``` Both malicious entries are written outside `/home/user/extract-output/`. The three legitimate OTLP files land correctly inside it. ## Impact Successful exploitation gives an attacker arbitrary file write on the machine running the extractor. Real-world primitives include: - Overwriting `~/.bashrc` / `~/.zshrc` / `~/.profile` for RCE on next shell login - Appending to `~/.ssh/authorized_keys` for persistent SSH backdoor - Dropping a malicious entry into `~/.kube/config` to hijack cluster access - Writing crontab entries for persistent scheduled execution The attack surface is widened by the default `ReadWriteMany` PVC access mode, which means any pod in the cluster with the PVC mounted can inject the payload — not just the OTEL Collector itself.

Advisory Timeline

  • First published March 16, 2026 (210 days ago).
  • Last revised May 5, 2026 — 50 days after initial publication.

Remediation

Upgrade to the fixed version using your package manager.

Go
Update github.com/ctfer-io/monitoring to 0.2.2 or later
go get github.com/ctfer-io/monitoring@v0.2.2

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (1)

Affects 1 ecosystem: go (1).

PackageEcosystemAffectedFixed In
github.com/ctfer-io/monitoring
go
All versions0.2.2

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 9.8 score means for each attack dimension.

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Frequently Asked Questions

What is CVE-2026-32771?
Monitoring is vulnerable to Archive Slip due to missing checks in sanitization This vulnerability has been assigned a severity rating of HIGH (CVSS score: 9.8/10).
How do I check if my project is affected by CVE-2026-32771?
CVE-2026-32771 affects github.com/ctfer-io/monitoring. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-32771 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
9.8

Exploitation is straightforward and causes maximum impact. Patch immediately.

Also Known As

GHSA-f7cq-gvh6-qr25
GO-2026-4712

Related CVEs

  • CVE-2026-107809
    HIGH

    Nginx-UI AuthRequired token cookie fallback enables CSRF against management APIs

  • CVE-2025-53632
    HIGH

    Chall-Manager is vulnerable to Path Traversal when extracting/decoding a zip archive

  • CVE-2026-32720
    HIGH

    github.com/ctfer-io/monitoring Vulnerable to Improper Access Control

  • CVE-2026-32737
    HIGH

    Romeo's invalid NetworkPolicy enables a malicious actor to pivot into another namespace

  • CVE-2026-107813
    HIGH

    Nginx UI: Incomplete fix of CVE-2026-84315 - the api/cluster router was not - wrapped in RequireSecureSession, so those sensitive mutations run without OTP step-up

  • CVE-2026-32769
    HIGH

    Fullchain's Invalid NetworkPolicy enables a malicious actor to pivot into another namespace

  • CVE-2026-32768
    HIGH

    Chall-Manager's invalid NetworkPolicy enables a malicious actor to pivot into another namespace

  • CVE-2026-32805
    HIGH

    Romeo is vulnerable to Archive Slip due to missing checks in sanitization

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies