changedetection.io: Arbitrary Local File Read via crafted backup restore
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 sourcePublished 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"
}