CWE-59
AllowedImproper Link Resolution Before File Access ('Link Following')
Abstraction: Base · Status: Draft
The product attempts to access a file based on the filename, but it does not properly prevent that filename from identifying a link or shortcut that resolves to an unintended resource.
2530 vulnerabilities reference this CWE, most recent first.
CVE-2026-121550 (GCVE-0-2026-121550)
Vulnerability from cvelistv5 – Published: 2026-11-03 15:17 – Updated: 2026-11-03 15:17- CWE-59 - Improper Link Resolution Before File Access ('Link Following')
| URL | Tags |
|---|---|
| https://github.com/jarun/nnn/issues/2188 | issue-tracking |
| https://github.com/jarun/nnn | product |
| https://github.com/jarun/nnn/commit/04715921aece0… | patch |
| https://github.com/jarun/nnn/blob/v5.3/src/nnn.c#L10635 | technical-description |
| https://github.com/jarun/nnn/blob/v5.3/src/nnn.c#L7433 | technical-description |
| https://www.vulncheck.com/advisories/nnn-through-… | third-party-advisory |
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "nnn",
"vendor": "jarun",
"versions": [
{
"lessThanOrEqual": "5.3",
"status": "affected",
"version": "0",
"versionType": "custom"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "George Chen"
}
],
"datePublic": "2026-10-31T00:00:00.000Z",
"descriptions": [
{
"lang": "en",
"value": "nnn through 5.3 contains an insecure file handling vulnerability that allows local attackers to redirect writes because main() accepts an existing NNN_FIFO path without verifying it is a FIFO. Attackers can pre-create the documented predictable /tmp/nnn.fifo path as a symlink or readable regular file, causing victim-writable files to be overwritten or leaking the victim\u0027s browsed paths."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"attackVector": "LOCAL",
"baseScore": 1,
"baseSeverity": "LOW",
"privilegesRequired": "LOW",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "ACTIVE",
"vectorString": "CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "LOW",
"vulnIntegrityImpact": "LOW"
},
"format": "CVSS"
},
{
"cvssV3_1": {
"attackComplexity": "HIGH",
"attackVector": "LOCAL",
"availabilityImpact": "NONE",
"baseScore": 3.3,
"baseSeverity": "LOW",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"privilegesRequired": "LOW",
"scope": "UNCHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:N",
"version": "3.1"
},
"format": "CVSS"
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-59",
"description": "Improper Link Resolution Before File Access (\u0027Link Following\u0027)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-11-03T15:17:09.442Z",
"orgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"shortName": "VulnCheck"
},
"references": [
{
"name": "GitHub Issue #2188",
"tags": [
"issue-tracking"
],
"url": "https://github.com/jarun/nnn/issues/2188"
},
{
"tags": [
"product"
],
"url": "https://github.com/jarun/nnn"
},
{
"name": "Fix commit",
"tags": [
"patch"
],
"url": "https://github.com/jarun/nnn/commit/04715921aece0257fef7a8558c0783493d98efff"
},
{
"tags": [
"technical-description"
],
"url": "https://github.com/jarun/nnn/blob/v5.3/src/nnn.c#L10635"
},
{
"tags": [
"technical-description"
],
"url": "https://github.com/jarun/nnn/blob/v5.3/src/nnn.c#L7433"
},
{
"name": "VulnCheck Advisory: nnn through 5.3 Symlink-Following Write via NNN_FIFO Handling",
"tags": [
"third-party-advisory"
],
"url": "https://www.vulncheck.com/advisories/nnn-through-5.3-symlink-following-write-via-nnn-fifo-handling"
}
],
"title": "nnn through 5.3 Symlink-Following Write via NNN_FIFO Handling",
"x_generator": {
"engine": "vulncheck-endgame"
}
}
},
"cveMetadata": {
"assignerOrgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"assignerShortName": "VulnCheck",
"cveId": "CVE-2026-121550",
"datePublished": "2026-11-03T15:17:09.442Z",
"dateReserved": "2026-11-03T14:46:14.575Z",
"dateUpdated": "2026-11-03T15:17:09.442Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-121546 (GCVE-0-2026-121546)
Vulnerability from cvelistv5 – Published: 2026-11-03 15:17 – Updated: 2026-11-03 15:17- CWE-59 - Improper Link Resolution Before File Access ('Link Following')
| URL | Tags |
|---|---|
| https://github.com/Novik/ruTorrent/issues/3474 | issue-tracking |
| https://github.com/Novik/ruTorrent | product |
| https://github.com/Novik/ruTorrent/commit/2059ff1… | patch |
| https://github.com/Novik/ruTorrent/blob/v5.3.19/p… | technical-description |
| https://github.com/Novik/ruTorrent/blob/v5.3.19/p… | technical-description |
| https://www.vulncheck.com/advisories/rutorrent-be… | third-party-advisory |
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "ruTorrent",
"vendor": "Novik",
"versions": [
{
"lessThan": "5.3.20",
"status": "affected",
"version": "0",
"versionType": "semver"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "George Chen"
}
],
"datePublic": "2026-10-28T00:00:00.000Z",
"descriptions": [
{
"lang": "en",
"value": "ruTorrent before 5.3.20 contains a path traversal vulnerability in the datadir plugin that allows authenticated users to escape the topDirectory jail because correctDirectory() does not resolve symbolic links. Attackers can submit a datadir path through a symlink under their top directory to create directories and move torrent data to locations writable by the web server or rtorrent."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"attackVector": "NETWORK",
"baseScore": 6,
"baseSeverity": "MEDIUM",
"privilegesRequired": "LOW",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:H/VA:L/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "LOW",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "HIGH"
},
"format": "CVSS"
},
{
"cvssV3_1": {
"attackComplexity": "HIGH",
"attackVector": "NETWORK",
"availabilityImpact": "LOW",
"baseScore": 5.9,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "NONE",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:L",
"version": "3.1"
},
"format": "CVSS"
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-59",
"description": "Improper Link Resolution Before File Access (\u0027Link Following\u0027)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-11-03T15:17:06.673Z",
"orgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"shortName": "VulnCheck"
},
"references": [
{
"name": "GitHub Issue #3474",
"tags": [
"issue-tracking"
],
"url": "https://github.com/Novik/ruTorrent/issues/3474"
},
{
"tags": [
"product"
],
"url": "https://github.com/Novik/ruTorrent"
},
{
"name": "Fix commit",
"tags": [
"patch"
],
"url": "https://github.com/Novik/ruTorrent/commit/2059ff12464b2ce14fd0f53df8d6b19fb6b8a5eb"
},
{
"tags": [
"technical-description"
],
"url": "https://github.com/Novik/ruTorrent/blob/v5.3.19/plugins/datadir/action.php#L60"
},
{
"tags": [
"technical-description"
],
"url": "https://github.com/Novik/ruTorrent/blob/v5.3.19/php/settings.php#L526-L541"
},
{
"name": "VulnCheck Advisory: ruTorrent before 5.3.20 Path Traversal via datadir Plugin Symlink Following",
"tags": [
"third-party-advisory"
],
"url": "https://www.vulncheck.com/advisories/rutorrent-before-5.3.20-path-traversal-via-datadir-plugin-symlink-following"
}
],
"title": "ruTorrent before 5.3.20 Path Traversal via datadir Plugin Symlink Following",
"x_generator": {
"engine": "vulncheck-endgame"
}
}
},
"cveMetadata": {
"assignerOrgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"assignerShortName": "VulnCheck",
"cveId": "CVE-2026-121546",
"datePublished": "2026-11-03T15:17:06.673Z",
"dateReserved": "2026-11-03T14:46:13.237Z",
"dateUpdated": "2026-11-03T15:17:06.673Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-120307 (GCVE-0-2026-120307)
Vulnerability from cvelistv5 – Published: 2026-11-01 12:49 – Updated: 2026-11-02 19:46| URL | Tags |
|---|---|
| https://github.com/beam-cloud/beta9 | product |
| https://github.com/beam-cloud/beta9/pull/1897 | patch |
| https://github.com/beam-cloud/beta9/commit/a28bf1… | patch |
| https://github.com/beam-cloud/beta9/releases/tag/… | release-notes |
| Vendor | Product | Version | |
|---|---|---|---|
| beam-cloud | Beta9 worker |
Affected:
0 , < 0.1.756
(semver)
|
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-120307",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-11-02T19:46:03.614684Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-11-02T19:46:38.442Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"collectionURL": "https://github.com/beam-cloud/beta9/releases",
"defaultStatus": "unaffected",
"packageName": "github.com/beam-cloud/beta9",
"product": "Beta9 worker",
"programFiles": [
"pkg/worker/container_server.go",
"pkg/worker/lifecycle.go",
"pkg/types/worker.go"
],
"repo": "git://github.com/beam-cloud/beta9",
"vendor": "beam-cloud",
"versions": [
{
"lessThan": "0.1.756",
"status": "affected",
"version": "0",
"versionType": "semver"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "Natan Nehorai"
},
{
"lang": "en",
"type": "coordinator",
"value": "JFrog Security Research"
}
],
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eThe Beta9 worker serves the sandbox file API from outside the container. getHostPathFromContainerPath turns the tenant\u0027s container path into a worker path. If the unresolved path starts with a mount destination, including the default upload mount at /tmp/.beta9, the remainder is joined onto that mount\u0027s source with filepath.Join, which cleans parent-directory segments after the prefix check. A long enough run of those segments names any absolute path on the worker. A path that matches no mount is joined onto the container root and opened in the worker\u0027s own filesystem, so an absolute symbolic link such as /var/run pointing at /run is followed against the worker root. Upload, download, stat, list, find-in-files, replace-in-files, and delete-file all call this helper. A tenant with a workspace token and one running sandbox can read, write, list, and delete files on the hosting worker as root, including files of other tenants on that machine. A read-only proof downloaded the worker pod\u0027s Kubernetes service account token through the file API for a path that did not exist inside the sandbox. In the shipped remote-node manifests that service account is bound to cluster-admin. Fixed in worker 0.1.756: sandbox file operations and workspace sync open paths with os.OpenRoot, so parent-directory and symlink lookups stay inside the container root or the mount source.\u003c/p\u003e"
}
],
"value": "The Beta9 worker serves the sandbox file API from outside the container. getHostPathFromContainerPath turns the tenant\u0027s container path into a worker path. If the unresolved path starts with a mount destination, including the default upload mount at /tmp/.beta9, the remainder is joined onto that mount\u0027s source with filepath.Join, which cleans parent-directory segments after the prefix check. A long enough run of those segments names any absolute path on the worker. A path that matches no mount is joined onto the container root and opened in the worker\u0027s own filesystem, so an absolute symbolic link such as /var/run pointing at /run is followed against the worker root. Upload, download, stat, list, find-in-files, replace-in-files, and delete-file all call this helper. A tenant with a workspace token and one running sandbox can read, write, list, and delete files on the hosting worker as root, including files of other tenants on that machine. A read-only proof downloaded the worker pod\u0027s Kubernetes service account token through the file API for a path that did not exist inside the sandbox. In the shipped remote-node manifests that service account is bound to cluster-admin. Fixed in worker 0.1.756: sandbox file operations and workspace sync open paths with os.OpenRoot, so parent-directory and symlink lookups stay inside the container root or the mount source."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "HIGH",
"baseScore": 9.9,
"baseSeverity": "CRITICAL",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "CHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H",
"version": "3.1"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "Tenant with a workspace token and a running sandbox on a worker that serves the sandbox file API"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-22",
"description": "CWE-22: Improper Limitation of a Pathname to a Restricted Directory (\u0027Path Traversal\u0027)",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-23",
"description": "CWE-23: Relative Path Traversal",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-59",
"description": "CWE-59: Improper Link Resolution Before File Access (\u0027Link Following\u0027)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-11-01T12:49:51.981Z",
"orgId": "48a46f29-ae42-4e1d-90dd-c1676c1e5e6d",
"shortName": "JFROG"
},
"references": [
{
"name": "Beta9 repository",
"tags": [
"product"
],
"url": "https://github.com/beam-cloud/beta9"
},
{
"name": "Handle sandbox edge cases (fix pull request)",
"tags": [
"patch"
],
"url": "https://github.com/beam-cloud/beta9/pull/1897"
},
{
"name": "Fix commit a28bf12",
"tags": [
"patch"
],
"url": "https://github.com/beam-cloud/beta9/commit/a28bf12cf0007c792a25d8ed282b4e8bf6f30393"
},
{
"name": "worker-0.1.756",
"tags": [
"release-notes"
],
"url": "https://github.com/beam-cloud/beta9/releases/tag/worker-0.1.756"
}
],
"solutions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eUpgrade the Beta9 worker to 0.1.756 or later. Sandbox file APIs and workspace sync use os.OpenRoot, so parent-directory segments and symbolic links stay inside the container root or the mount source. File operations refuse read-only mounts and do not write through a symlink swapped in after path resolution. The fix is commit a28bf12 (pull request 1897), released as worker-0.1.756 on 2026-09-15.\u003c/p\u003e"
}
],
"value": "Upgrade the Beta9 worker to 0.1.756 or later. Sandbox file APIs and workspace sync use os.OpenRoot, so parent-directory segments and symbolic links stay inside the container root or the mount source. File operations refuse read-only mounts and do not write through a symlink swapped in after path resolution. The fix is commit a28bf12 (pull request 1897), released as worker-0.1.756 on 2026-09-15."
}
],
"source": {
"discovery": "EXTERNAL"
},
"timeline": [
{
"lang": "en",
"time": "2026-09-15T04:03:00.000Z",
"value": "Fix merged in pull request 1897 (commit a28bf12)"
},
{
"lang": "en",
"time": "2026-09-15T04:03:00.000Z",
"value": "Fixed release worker-0.1.756 published. No vendor security advisory was filed with the pull request."
}
],
"title": "Beta9 container escape via unvalidated sandbox file paths",
"x_generator": {
"engine": "Vulnogram 1.0.5"
}
}
},
"cveMetadata": {
"assignerOrgId": "48a46f29-ae42-4e1d-90dd-c1676c1e5e6d",
"assignerShortName": "JFROG",
"cveId": "CVE-2026-120307",
"datePublished": "2026-11-01T12:49:51.981Z",
"dateReserved": "2026-11-01T12:45:12.430Z",
"dateUpdated": "2026-11-02T19:46:38.442Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-120066 (GCVE-0-2026-120066)
Vulnerability from cvelistv5 – Published: 2026-11-02 19:09 – Updated: 2026-11-02 19:37| URL | Tags |
|---|---|
| https://github.com/postgresql-interfaces/psqlodbc… | vendor-advisory |
| Vendor | Product | Version | |
|---|---|---|---|
| PostgreSQL | psqlODBC |
Affected:
0 , < 18.00.0006
(custom)
|
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-120066",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-11-02T19:37:21.337272Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-11-02T19:37:32.927Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "psqlODBC",
"programFiles": [
"mylog.c"
],
"programRoutines": [
{
"name": "MLOG_open"
},
{
"name": "qlog_misc"
}
],
"repo": "https://github.com/postgresql-interfaces/psqlodbc",
"vendor": "PostgreSQL",
"versions": [
{
"lessThan": "18.00.0006",
"status": "affected",
"version": "0",
"versionType": "custom"
}
]
}
],
"datePublic": "2026-11-02T00:00:00.000Z",
"descriptions": [
{
"lang": "en",
"value": "On Unix-like systems, when logging is enabled, psqlODBC creates its log files in /tmp by default, named from the program name, user name, and process ID, with the default permissions, typically world-readable, and follows symbolic links when opening them. A local user can read query text and data from another user\u0027s logs, and can place a symbolic link at the predictable path so that the driver appends log data to a file of the attacker\u0027s choosing with the victim\u0027s privileges. Versions before psqlODBC 18.00.0006 are affected."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "HIGH",
"attackVector": "LOCAL",
"availabilityImpact": "NONE",
"baseScore": 5.3,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "HIGH",
"integrityImpact": "LOW",
"privilegesRequired": "LOW",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:N",
"version": "3.1"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-732",
"description": "CWE-732 Incorrect Permission Assignment for Critical Resource",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-59",
"description": "CWE-59 Improper Link Resolution Before File Access (\u0027Link Following\u0027)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-11-02T19:09:14.964Z",
"orgId": "f86ef6dc-4d3a-42ad-8f28-e6d5547a5007",
"shortName": "PostgreSQL"
},
"references": [
{
"tags": [
"vendor-advisory"
],
"url": "https://github.com/postgresql-interfaces/psqlodbc/security/advisories/GHSA-wj7r-6pj3-62g8"
}
],
"solutions": [
{
"lang": "en",
"value": "Upgrade to psqlODBC 18.00.0006 or later. On Unix-like systems, log files are opened with mode 0600 and O_NOFOLLOW, and an existing log file is used only if it is a regular file owned by the user running the application."
}
],
"title": "psqlODBC log files are created with default permissions at a predictable path and follow symbolic links",
"workarounds": [
{
"lang": "en",
"value": "Leave Debug and CommLog disabled in production. If logging is needed, set Logdir in the driver\u0027s section of odbcinst.ini (PostgreSQL Unicode or PostgreSQL ANSI) to a directory writable only by the user running the application."
}
]
}
},
"cveMetadata": {
"assignerOrgId": "f86ef6dc-4d3a-42ad-8f28-e6d5547a5007",
"assignerShortName": "PostgreSQL",
"cveId": "CVE-2026-120066",
"datePublished": "2026-11-02T19:09:14.964Z",
"dateReserved": "2026-10-30T19:25:18.920Z",
"dateUpdated": "2026-11-02T19:37:32.927Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-119704 (GCVE-0-2026-119704)
Vulnerability from cvelistv5 – Published: 2026-10-30 15:16 – Updated: 2026-10-30 15:16- CWE-59 - Improper Link Resolution Before File Access ('Link Following')
| URL | Tags |
|---|---|
| https://github.com/BastilleBSD/bastille/issues/1673 | issue-tracking |
| https://github.com/BastilleBSD/bastille | product |
| https://github.com/BastilleBSD/bastille/commit/ac… | patch |
| https://github.com/BastilleBSD/bastille/blob/1.4.… | technical-description |
| https://www.vulncheck.com/advisories/bastille-thr… | third-party-advisory |
| Vendor | Product | Version | |
|---|---|---|---|
| BastilleBSD | bastille |
Affected:
0 , ≤ 1.4.4
(custom)
|
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "bastille",
"vendor": "BastilleBSD",
"versions": [
{
"lessThanOrEqual": "1.4.4",
"status": "affected",
"version": "0",
"versionType": "custom"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "George Chen"
}
],
"datePublic": "2026-10-16T00:00:00.000Z",
"descriptions": [
{
"lang": "en",
"value": "Bastille through 1.4.4 contains a symlink following vulnerability in the cp.sh, rcp.sh and jcp.sh subcommands that allows jailed users to escape jail isolation. Attackers inside a jail can plant symlinks pointing to host paths or other jail roots, so administrator-run copies overwrite or read host files with root privileges."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"attackVector": "LOCAL",
"baseScore": 5.3,
"baseSeverity": "MEDIUM",
"privilegesRequired": "LOW",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "PASSIVE",
"vectorString": "CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:P/VC:L/VI:H/VA:H/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "HIGH",
"vulnConfidentialityImpact": "LOW",
"vulnIntegrityImpact": "HIGH"
},
"format": "CVSS"
},
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "LOCAL",
"availabilityImpact": "HIGH",
"baseScore": 6.8,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "UNCHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:L/I:H/A:H",
"version": "3.1"
},
"format": "CVSS"
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-59",
"description": "Improper Link Resolution Before File Access (\u0027Link Following\u0027)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-30T15:16:04.687Z",
"orgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"shortName": "VulnCheck"
},
"references": [
{
"name": "GitHub Issue #1673",
"tags": [
"issue-tracking"
],
"url": "https://github.com/BastilleBSD/bastille/issues/1673"
},
{
"tags": [
"product"
],
"url": "https://github.com/BastilleBSD/bastille"
},
{
"tags": [
"patch"
],
"url": "https://github.com/BastilleBSD/bastille/commit/accc246ba92602c355afc66d0d8b9d43277532e1"
},
{
"tags": [
"technical-description"
],
"url": "https://github.com/BastilleBSD/bastille/blob/1.4.4/usr/local/share/bastille/cp.sh#L98-L110"
},
{
"name": "VulnCheck Advisory: Bastille through 1.4.4 Jail Escape via Symlink Following in cp, rcp, jcp",
"tags": [
"third-party-advisory"
],
"url": "https://www.vulncheck.com/advisories/bastille-through-1.4.4-jail-escape-via-symlink-following-in-cp-rcp-jcp"
}
],
"title": "Bastille through 1.4.4 Jail Escape via Symlink Following in cp, rcp, jcp",
"x_generator": {
"engine": "vulncheck-endgame"
}
}
},
"cveMetadata": {
"assignerOrgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"assignerShortName": "VulnCheck",
"cveId": "CVE-2026-119704",
"datePublished": "2026-10-30T15:16:04.687Z",
"dateReserved": "2026-10-30T14:49:22.641Z",
"dateUpdated": "2026-10-30T15:16:04.687Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-119673 (GCVE-0-2026-119673)
Vulnerability from cvelistv5 – Published: 2026-11-03 16:14 – Updated: 2026-11-03 17:44- CWE-59 - Improper Link Resolution Before File Access (Link Following)
| Vendor | Product | Version | |
|---|---|---|---|
| MongoDB | Database Tools |
Affected:
100.2.0 , < 100.20.1
(semver)
|
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-119673",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-11-03T17:44:11.306438Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-11-03T17:44:21.089Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Database Tools",
"vendor": "MongoDB",
"versions": [
{
"lessThan": "100.20.1",
"status": "affected",
"version": "100.2.0",
"versionType": "semver"
}
]
}
],
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "MongoDB Database Tools mongofiles does not resolve existing parent-directory symlinks when validating output paths for get_regex. An unauthorized user who can both upload a GridFS file and place a symlink in the operator\u0027s download working directory can cause a later retrieval to create a file containing unauthorized user-controlled data outside that directory, using the operator process\u0027s filesystem permissions. The issue can occur with default traversal and overwrite settings. Exploitation requires an operator to retrieve matching files from the affected working directory; the demonstrated default behavior creates a new file rather than overwriting an existing file. This issue affects MongoDB Database Tools versions 100.2.0 through versions before 100.20.1."
}
],
"value": "MongoDB Database Tools mongofiles does not resolve existing parent-directory symlinks when validating output paths for get_regex. An unauthorized user who can both upload a GridFS file and place a symlink in the operator\u0027s download working directory can cause a later retrieval to create a file containing unauthorized user-controlled data outside that directory, using the operator process\u0027s filesystem permissions. The issue can occur with default traversal and overwrite settings. Exploitation requires an operator to retrieve matching files from the affected working directory; the demonstrated default behavior creates a new file rather than overwriting an existing file. This issue affects MongoDB Database Tools versions 100.2.0 through versions before 100.20.1."
}
],
"metrics": [
{
"cvssV4_0": {
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"attackVector": "LOCAL",
"baseScore": 1,
"baseSeverity": "LOW",
"exploitMaturity": "NOT_DEFINED",
"privilegesRequired": "LOW",
"providerUrgency": "NOT_DEFINED",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "PASSIVE",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:P/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "LOW",
"vulnerabilityResponseEffort": "NOT_DEFINED"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
},
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "LOCAL",
"availabilityImpact": "NONE",
"baseScore": 2.8,
"baseSeverity": "LOW",
"confidentialityImpact": "NONE",
"integrityImpact": "LOW",
"privilegesRequired": "LOW",
"scope": "UNCHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:N/I:L/A:N",
"version": "3.1"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-59",
"description": "CWE-59: Improper Link Resolution Before File Access (Link Following)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-11-03T16:14:23.559Z",
"orgId": "a39b4221-9bd0-4244-95fc-f3e2e07f1deb",
"shortName": "mongodb"
},
"references": [
{
"url": "https://github.com/mongodb/mongo-tools/blob/master/CHANGELOG.md"
}
],
"source": {
"discovery": "EXTERNAL"
},
"title": "mongofiles may write outside the working directory through a symlink",
"x_generator": {
"engine": "cve_record_builder.py"
}
}
},
"cveMetadata": {
"assignerOrgId": "a39b4221-9bd0-4244-95fc-f3e2e07f1deb",
"assignerShortName": "mongodb",
"cveId": "CVE-2026-119673",
"datePublished": "2026-11-03T16:14:23.559Z",
"dateReserved": "2026-10-30T14:07:57.894Z",
"dateUpdated": "2026-11-03T17:44:21.089Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-119364 (GCVE-0-2026-119364)
Vulnerability from cvelistv5 – Published: 2026-10-30 11:30 – Updated: 2026-10-30 15:56- CWE-59 - Improper Link Resolution Before File Access ('Link Following')
| URL | Tags |
|---|---|
| https://github.com/proftpd/proftpd/issues/2374 | issue-tracking |
| https://github.com/proftpd/proftpd/commit/c41691f… | patch |
| https://github.com/proftpd/proftpd/blob/v1.3.9e/c… | technical-description |
| https://github.com/proftpd/proftpd/releases/tag/v… | release-notes |
| https://abraxaslabs.tech/research/proftpd-site-co… | third-party-advisory |
| https://github.com/proftpd/proftpd | product |
| https://www.vulncheck.com/advisories/proftpd-thro… | third-party-advisory |
| Vendor | Product | Version | |
|---|---|---|---|
| ProFTPD Project | ProFTPD |
Affected:
0 , ≤ 1.3.9e
(custom)
Affected: 1.3.10rc1 , < 1.3.10rc5 (custom) cpe:2.3:a:proftpd:proftpd:*:*:*:*:*:*:*:* cpe:2.3:a:proftpd:proftpd:*:*:*:*:*:*:*:* |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-119364",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-10-30T15:20:52.024825Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-10-30T15:56:45.622Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"packageURL": "pkg:github/proftpd/proftpd",
"product": "ProFTPD",
"repo": "https://github.com/proftpd/proftpd",
"vendor": "ProFTPD Project",
"versions": [
{
"lessThanOrEqual": "1.3.9e",
"status": "affected",
"version": "0",
"versionType": "custom"
},
{
"lessThan": "1.3.10rc5",
"status": "affected",
"version": "1.3.10rc1",
"versionType": "custom"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:proftpd:proftpd:*:*:*:*:*:*:*:*",
"versionEndIncluding": "1.3.9e",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:proftpd:proftpd:*:*:*:*:*:*:*:*",
"versionEndExcluding": "1.3.10rc5",
"versionStartIncluding": "1.3.10rc1",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "Abraxas Labs"
},
{
"lang": "en",
"type": "remediation developer",
"value": "TJ Saunders"
}
],
"datePublic": "2026-10-17T00:00:00.000Z",
"descriptions": [
{
"lang": "en",
"value": "ProFTPD through 1.3.9e and 1.3.10rc1 through 1.3.10rc4 contains a link-following vulnerability in mod_copy that allows authenticated FTP users to bypass Limit WRITE restrictions via symlinks. Attackers can place a symlink in a writable directory and use SITE COPY or SITE CPTO to overwrite files in write-denied locations."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "HIGH",
"attackRequirements": "PRESENT",
"attackVector": "NETWORK",
"baseScore": 6,
"baseSeverity": "MEDIUM",
"privilegesRequired": "LOW",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"vectorString": "CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "HIGH"
},
"format": "CVSS"
},
{
"cvssV3_1": {
"attackComplexity": "HIGH",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 5.3,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "NONE",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:N",
"version": "3.1"
},
"format": "CVSS"
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-59",
"description": "Improper Link Resolution Before File Access (\u0027Link Following\u0027)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-30T11:30:37.047Z",
"orgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"shortName": "VulnCheck"
},
"references": [
{
"tags": [
"issue-tracking"
],
"url": "https://github.com/proftpd/proftpd/issues/2374"
},
{
"tags": [
"patch"
],
"url": "https://github.com/proftpd/proftpd/commit/c41691f8981f98081fcb8a535c3c21b06a3f04af"
},
{
"tags": [
"technical-description"
],
"url": "https://github.com/proftpd/proftpd/blob/v1.3.9e/contrib/mod_copy.c#L620"
},
{
"name": "ProFTPD v1.3.10rc5 Release Notes",
"tags": [
"release-notes"
],
"url": "https://github.com/proftpd/proftpd/releases/tag/v1.3.10rc5"
},
{
"tags": [
"third-party-advisory"
],
"url": "https://abraxaslabs.tech/research/proftpd-site-copy-dest-follow"
},
{
"tags": [
"product"
],
"url": "https://github.com/proftpd/proftpd"
},
{
"name": "VulnCheck Advisory: ProFTPD through 1.3.9e and 1.3.10rc4 mod_copy Symlink Following Write Bypass",
"tags": [
"third-party-advisory"
],
"url": "https://www.vulncheck.com/advisories/proftpd-through-1.3-9e-and-1.3-10rc4-mod-copy-symlink-following-write-bypass"
}
],
"title": "ProFTPD through 1.3.9e and 1.3.10rc4 mod_copy Symlink Following Write Bypass",
"x_generator": {
"engine": "vulncheck-endgame"
}
}
},
"cveMetadata": {
"assignerOrgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"assignerShortName": "VulnCheck",
"cveId": "CVE-2026-119364",
"datePublished": "2026-10-30T11:30:37.047Z",
"dateReserved": "2026-10-30T00:26:48.481Z",
"dateUpdated": "2026-10-30T15:56:45.622Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-119336 (GCVE-0-2026-119336)
Vulnerability from cvelistv5 – Published: 2026-10-30 20:05 – Updated: 2026-10-30 22:14| URL | Tags |
|---|---|
| https://github.com/pi-hole/pi-hole/security/advis… | x_refsource_CONFIRM |
| https://github.com/pi-hole/pi-hole/pull/6719 | x_refsource_MISC |
| https://github.com/pi-hole/pi-hole/commit/85de82d… | x_refsource_MISC |
| https://github.com/pi-hole/pi-hole/commit/c1062f4… | x_refsource_MISC |
| https://github.com/pi-hole/pi-hole/commit/e05dc3f… | x_refsource_MISC |
| https://github.com/pi-hole/pi-hole/releases/tag/v6.5 | x_refsource_MISC |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-119336",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-10-30T21:21:13.368597Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-10-30T22:14:23.468Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "pi-hole",
"vendor": "pi-hole",
"versions": [
{
"status": "affected",
"version": "\u003e= 6.4.2, \u003c 6.5"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "Pi-hole is a DNS sinkhole that protects devices from unwanted content without installing any client-side software. From 6.4.2 until 6.5, the root-run advanced/Scripts/updatecheck.sh cron job applies truncate -s 0 and chmod 644 to /etc/pihole/versions while following symbolic links in a directory owned by the pihole user. An attacker executing as pihole can replace that path with a symlink so the scheduled root operations truncate or create an arbitrary root-owned file, or race the operations so chmod makes a sensitive target world-readable without truncating it. This issue is fixed in version 6.5."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "LOCAL",
"availabilityImpact": "HIGH",
"baseScore": 7.8,
"baseSeverity": "HIGH",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-59",
"description": "CWE-59: Improper Link Resolution Before File Access (\u0027Link Following\u0027)",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-61",
"description": "CWE-61: UNIX Symbolic Link (Symlink) Following",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-30T20:05:40.100Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/pi-hole/pi-hole/security/advisories/GHSA-xch2-4qxw-g5vj",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/pi-hole/pi-hole/security/advisories/GHSA-xch2-4qxw-g5vj"
},
{
"name": "https://github.com/pi-hole/pi-hole/pull/6719",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/pi-hole/pi-hole/pull/6719"
},
{
"name": "https://github.com/pi-hole/pi-hole/commit/85de82dd2b63bf71ecb936177dfb82421d9d2f25",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/pi-hole/pi-hole/commit/85de82dd2b63bf71ecb936177dfb82421d9d2f25"
},
{
"name": "https://github.com/pi-hole/pi-hole/commit/c1062f43b0de1876321bafac58fba862406366cb",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/pi-hole/pi-hole/commit/c1062f43b0de1876321bafac58fba862406366cb"
},
{
"name": "https://github.com/pi-hole/pi-hole/commit/e05dc3f139206fd8d0e4a052dceefb9056533517",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/pi-hole/pi-hole/commit/e05dc3f139206fd8d0e4a052dceefb9056533517"
},
{
"name": "https://github.com/pi-hole/pi-hole/releases/tag/v6.5",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/pi-hole/pi-hole/releases/tag/v6.5"
}
],
"source": {
"advisory": "GHSA-xch2-4qxw-g5vj",
"discovery": "UNKNOWN"
},
"title": "Pi-hole: arbitrary root file clobber / chmod / disclosure via updatecheck.sh cron following /etc/pihole/versions symlink"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-119336",
"datePublished": "2026-10-30T20:05:40.100Z",
"dateReserved": "2026-10-29T20:44:30.286Z",
"dateUpdated": "2026-10-30T22:14:23.468Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-119334 (GCVE-0-2026-119334)
Vulnerability from cvelistv5 – Published: 2026-10-30 20:01 – Updated: 2026-11-02 14:59- CWE-59 - Improper Link Resolution Before File Access ('Link Following')
| URL | Tags |
|---|---|
| https://github.com/pi-hole/pi-hole/security/advis… | x_refsource_CONFIRM |
| https://github.com/pi-hole/pi-hole/pull/6719 | x_refsource_MISC |
| https://github.com/pi-hole/pi-hole/commit/1455473… | x_refsource_MISC |
| https://github.com/pi-hole/pi-hole/releases/tag/v6.5 | x_refsource_MISC |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-119334",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-11-02T14:59:19.239173Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-11-02T14:59:33.186Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "pi-hole",
"vendor": "pi-hole",
"versions": [
{
"status": "affected",
"version": "\u003c 6.5"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "Pi-hole is a DNS sinkhole that protects devices from unwanted content without installing any client-side software. Prior to 6.5, gravity.sh checks file:// adlist readability with sudo -u pihole test -r but then allows curl, sometimes running as root, to normalize URL dot segments and open a different file. A pihole-readable decoy can therefore pass the check while curl reads a root-only target, and /proc/self paths can similarly resolve against different processes. Exploitation requires an administrator who can add adlists and can place a symlink and decoy on the filesystem. This issue is fixed in version 6.5."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "HIGH",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 2.2,
"baseSeverity": "LOW",
"confidentialityImpact": "LOW",
"integrityImpact": "NONE",
"privilegesRequired": "HIGH",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:L/I:N/A:N",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-59",
"description": "CWE-59: Improper Link Resolution Before File Access (\u0027Link Following\u0027)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-30T20:01:59.115Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/pi-hole/pi-hole/security/advisories/GHSA-g63w-24cr-p3w6",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/pi-hole/pi-hole/security/advisories/GHSA-g63w-24cr-p3w6"
},
{
"name": "https://github.com/pi-hole/pi-hole/pull/6719",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/pi-hole/pi-hole/pull/6719"
},
{
"name": "https://github.com/pi-hole/pi-hole/commit/14554737be53c392abffc69677f6b9df02ae7971",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/pi-hole/pi-hole/commit/14554737be53c392abffc69677f6b9df02ae7971"
},
{
"name": "https://github.com/pi-hole/pi-hole/releases/tag/v6.5",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/pi-hole/pi-hole/releases/tag/v6.5"
}
],
"source": {
"advisory": "GHSA-g63w-24cr-p3w6",
"discovery": "UNKNOWN"
},
"title": "Pi-hole: file:// adlist read check and curl can resolve different files"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-119334",
"datePublished": "2026-10-30T20:01:59.115Z",
"dateReserved": "2026-10-29T20:44:30.285Z",
"dateUpdated": "2026-11-02T14:59:33.186Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-119291 (GCVE-0-2026-119291)
Vulnerability from cvelistv5 – Published: 2026-10-30 15:52 – Updated: 2026-10-30 15:52- CWE-59 - Improper Link Resolution Before File Access ('Link Following')
| URL | Tags |
|---|---|
| https://github.com/zuke-build/zuke/security/advis… | x_refsource_CONFIRM |
| https://github.com/zuke-build/zuke/pull/542 | x_refsource_MISC |
| https://github.com/zuke-build/zuke/commit/4257b0b… | x_refsource_MISC |
| https://github.com/zuke-build/zuke/releases/tag/c… | x_refsource_MISC |
| Vendor | Product | Version | |
|---|---|---|---|
| zuke-build | zuke |
Affected:
< 1.4.0
|
{
"containers": {
"cna": {
"affected": [
{
"product": "zuke",
"vendor": "zuke-build",
"versions": [
{
"status": "affected",
"version": "\u003c 1.4.0"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "Zuke is a code-first, strongly typed build automation system for Deno. Prior to 1.4.0, @zuke/cli uses lstat to inspect scaffold names but then performs link-following reads, writes, and permission changes in zuke setup and zuke import. An attacker who supplies an untrusted cloned repository, template, or archive with a symbolic link at a scaffolded name can cause setup to overwrite a target outside the selected directory with the invoking user\u0027s permissions. The .gitignore path requires no flag, while --force permits a linked launcher target to be written and made executable; import can also read link-target content and incorporate it into the generated build file. This issue is fixed in version 1.4.0."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "LOCAL",
"availabilityImpact": "NONE",
"baseScore": 5.5,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "NONE",
"integrityImpact": "HIGH",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-59",
"description": "CWE-59: Improper Link Resolution Before File Access (\u0027Link Following\u0027)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-30T15:52:01.029Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/zuke-build/zuke/security/advisories/GHSA-hc8w-3fgv-22pw",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/zuke-build/zuke/security/advisories/GHSA-hc8w-3fgv-22pw"
},
{
"name": "https://github.com/zuke-build/zuke/pull/542",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/zuke-build/zuke/pull/542"
},
{
"name": "https://github.com/zuke-build/zuke/commit/4257b0bc5ef5e387a44f913349646d4baccd1654",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/zuke-build/zuke/commit/4257b0bc5ef5e387a44f913349646d4baccd1654"
},
{
"name": "https://github.com/zuke-build/zuke/releases/tag/cli-v1.4.0",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/zuke-build/zuke/releases/tag/cli-v1.4.0"
}
],
"source": {
"advisory": "GHSA-hc8w-3fgv-22pw",
"discovery": "UNKNOWN"
},
"title": "zuke setup and zuke import follow symbolic links planted at scaffold names, allowing writes outside the target directory"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-119291",
"datePublished": "2026-10-30T15:52:01.029Z",
"dateReserved": "2026-10-29T18:50:28.065Z",
"dateUpdated": "2026-10-30T15:52:01.029Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
Mitigation MIT-48.1
Strategy: Separation of Privilege
- Follow the principle of least privilege when assigning access rights to entities in a software system.
- Denying access to a file can prevent an attacker from replacing that file with a link to a sensitive file. Ensure good compartmentalization in the system to provide protected areas that can be trusted.
CAPEC-132: Symlink Attack
An adversary positions a symbolic link in such a manner that the targeted user or application accesses the link's endpoint, assuming that it is accessing a file with the link's name.
CAPEC-17: Using Malicious Files
An attack of this type exploits a system's configuration that allows an adversary to either directly access an executable file, for example through shell access; or in a possible worst case allows an adversary to upload a file and then execute it. Web servers, ftp servers, and message oriented middleware systems which have many integration points are particularly vulnerable, because both the programmers and the administrators must be in synch regarding the interfaces and the correct privileges for each interface.
CAPEC-35: Leverage Executable Code in Non-Executable Files
An attack of this type exploits a system's trust in configuration and resource files. When the executable loads the resource (such as an image file or configuration file) the attacker has modified the file to either execute malicious code directly or manipulate the target process (e.g. application server) to execute based on the malicious configuration parameters. Since systems are increasingly interrelated mashing up resources from local and remote sources the possibility of this attack occurring is high.
CAPEC-76: Manipulating Web Input to File System Calls
An attacker manipulates inputs to the target software which the target software passes to file system calls in the OS. The goal is to gain access to, and perhaps modify, areas of the file system that the target software did not intend to be accessible.