Skip to content
Heist/ feed
Back to feed
High

changedetection.io: Arbitrary Local File Read via crafted backup restore

Type: advisorySources: OSV

changedetection.io is a free open source web page change detection tool. Prior to 0.55.1, the vulnerability is caused by trusting attacker-controlled snapshot paths restored from backup files. The vulnerable flow starts in the backup restore logic. When a backup ZIP is restored, the application extracts the archive and copies each restored watch UUID directory directly into the live datastore using shutil.copytree(entry.path, dst_dir). This preserves attacker-controlled files inside the restored watch directory, including history.txt. After restore, the application parses history.txt in the watch history property and returns the contents of the targeted local file. This vulnerability is fixed in 0.55.1.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-43891
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 15:09 UTC · Revision 1

Source evidence

changedetection.io: Arbitrary Local File Read via crafted backup restore

core-osv · Original source

Published 12 May 2026, 16:56 UTC

changedetection.io is a free open source web page change detection tool. Prior to 0.55.1, the vulnerability is caused by trusting attacker-controlled snapshot paths restored from backup files. The vulnerable flow starts in the backup restore logic. When a backup ZIP is restored, the application extracts the archive and copies each restored watch UUID directory directly into the live datastore using shutil.copytree(entry.path, dst_dir). This preserves attacker-controlled files inside the restored watch directory, including history.txt. After restore, the application parses history.txt in the watch history property and returns the contents of the targeted local file. This vulnerability is fixed in 0.55.1.

osv:CVE-2026-43891
Complete source record
{
  "id": "aff20c9d64a32137f293d2d54a74b915a98a0b87ea484b5b0a56fce7e1609f03",
  "url": "https://osv.dev/vulnerability/CVE-2026-43891",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "changedetection.io: Arbitrary Local File Read via crafted backup restore",
    "summary": "changedetection.io is a free open source web page change detection tool. Prior to 0.55.1, the vulnerability is caused by trusting attacker-controlled snapshot paths restored from backup files. The vulnerable flow starts in the backup restore logic. When a backup ZIP is restored, the application extracts the archive and copies each restored watch UUID directory directly into the live datastore using shutil.copytree(entry.path, dst_dir). This preserves attacker-controlled files inside the restored watch directory, including history.txt. After restore, the application parses history.txt in the watch history property and returns the contents of the targeted local file. This vulnerability is fixed in 0.55.1.",
    "evidence": "osv:CVE-2026-43891",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-43891",
      "aliases": [
        "CVE-2026-43891",
        "GHSA-8757-69j2-hx56",
        "PYSEC-2026-30"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/dgtlmoon/changedetection.io",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "d427dbc2b2aa7a60c8d6c5d9362f363b0c4c0f47"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "0.55.1"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "cpe": "cpe:2.3:a:webtechnologies:changedetection:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "0.55.1"
                      }
                    ],
                    "source": "CPE_RANGE"
                  }
                ]
              }
            }
          ],
          "versions": [
            "0.54.10",
            "0.54.9",
            "0.54.8",
            "0.54.7",
            "0.54.6",
            "0.54.5",
            "0.54.4",
            "0.54.3",
            "0.54.2",
            "0.54.1",
            "0.53.7",
            "0.53.6",
            "0.53.5",
            "0.53.4",
            "0.53.3",
            "0.53.2",
            "0.53.1",
            "0.52.9",
            "0.52.8",
            "0.52.7",
            "0.52.5",
            "0.52.4",
            "0.52.3",
            "0.52.2",
            "0.52.1",
            "0.51.4",
            "0.51.3",
            "0.51.2",
            "0.51.1",
            "0.51.01",
            "0.51.00",
            "0.50.43",
            "0.50.42",
            "0.50.41",
            "0.50.40",
            "0.50.39",
            "0.50.38",
            "0.50.37",
            "0.50.35",
            "0.50.34",
            "0.50.33",
            "0.50.32",
            "0.50.31",
            "0.50.30",
            "0.50.29",
            "0.50.28",
            "0.50.27",
            "0.50.26",
            "0.50.25",
            "0.50.24",
            "0.50.23",
            "0.50.22",
            "0.50.21",
            "0.50.20",
            "0.50.19",
            "0.50.18",
            "0.50.17",
            "0.50.16",
            "0.50.15",
            "0.50.14",
            "0.50.13",
            "0.50.12",
            "0.50.11",
            "0.50.10",
            "0.50.9",
            "0.50.8",
            "0.50.7",
            "0.50.6",
            "0.50.5",
            "0.50.4",
            "0.50.3",
            "0.50.2",
            "0.50.1",
            "0.50.01",
            "0.49.18",
            "0.49.17",
            "0.49.16",
            "0.49.15",
            "0.49.14",
            "0.49.13",
            "0.49.12",
            "0.49.11",
            "0.49.10",
            "0.49.9",
            "0.49.8",
            "0.49.7",
            "0.49.6",
            "0.49.5",
            "0.49.4",
            "0.49.3",
            "0.49.2",
            "0.49.1",
            "0.49.0",
            "0.48.06",
            "0.48.05",
            "0.48.04",
            "0.48.03",
            "0.48.01",
            "0.48.00",
            "0.47.06",
            "0.47.05",
            "0.47.04",
            "0.47.03",
            "0.47.01",
            "0.47.00",
            "0.46.04",
            "0.46.03",
            "0.46.02",
            "0.46.01",
            "0.46.00",
            "0.45.26",
            "0.45.25",
            "0.45.24",
            "0.45.23",
            "0.45.22",
            "0.45.21",
            "0.45.20",
            "0.45.19",
            "0.45.18",
            "0.45.17",
            "0.45.16",
            "0.45.15",
            "0.45.14",
            "0.45.13",
            "0.45.12",
            "0.45.10",
            "0.45.9",
            "0.45.8.1",
            "0.45.8",
            "0.45.7.3",
            "0.45.7.2",
            "0.45.7.1",
            "0.45.7",
            "0.45.6",
            "0.45.5",
            "0.45.4",
            "0.45.3",
            "0.45.2",
            "0.45.1",
            "0.45",
            "0.44.2",
            "0.44.1",
            "0.44",
            "0.43.2",
            "0.43.1",
            "0.43",
            "0.42.3",
            "0.42.2",
            "0.42.1",
            "0.42",
            "0.41.1",
            "0.41",
            "0.40.3",
            "0.40.2",
            "0.40.1.1",
            "0.40.1.0",
            "0.40.0.4",
            "0.40.0.3",
            "0.40.0.2",
            "0.40.0",
            "0.39.22.1",
            "0.39.22",
            "0.39.21.1",
            "0.39.21",
            "0.39.20.4",
            "0.39.20.3",
            "0.39.20.2",
            "0.39.20.1",
            "0.39.20",
            "0.39.19.1",
            "0.39.19",
            "0.39.18",
            "0.39.17.2",
            "0.39.17.1",
            "0.39.17",
            "0.39.16",
            "0.39.15",
            "0.39.14",
            "0.39.13.1",
            "0.39.13",
            "0.39.12",
            "0.39.11",
            "0.39.10",
            "0.39.9",
            "0.39.8",
            "0.39.7",
            "0.39.6",
            "0.39.5",
            "0.39.4",
            "0.39.3",
            "0.39.2",
            "0.39.1",
            "0.39",
            "0.38.2",
            "0.38.1",
            "0.38",
            "0.37",
            "0.35",
            "0.34",
            "0.33",
            "0.32",
            "0.31",
            "0.30",
            "0.29",
            "0.28",
            "0.27",
            "0.26",
            "0.25",
            "0.24",
            "0.23",
            "0.22",
            "0.21",
            "0.2",
            "0.12",
            "0.11",
            "0.1"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-43891.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:29.718407607Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/43xxx/CVE-2026-43891.json",
        "https://github.com/dgtlmoon/changedetection.io/security/advisories/GHSA-8757-69j2-hx56",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-43891",
        "https://github.com/pocket-id/pocket-id/security/advisories/GHSA-w6p7-2fxx-4f44"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-73"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/43xxx/CVE-2026-43891.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-43891",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 496685,
  "published_at": "2026-05-12T16:56:33.823+00:00"
}