{"id":"CVE-2026-81889","title":"elFinder is an open-source file manager for web, written in JavaScript using jQuery UI","summary":"elFinder is an open-source file manager for web, written in JavaScript using jQuery UI. Prior to 2.1.70, elFinder URL uploads in php/elFinder.class.php can bypass server-side request forgery protections when PHP cURL is unavailable becau…","severity":"high","cvss":8.6,"cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N","cwe":["CWE-918"],"vendor":"studio-42","product":"studio-42/elfinder","affected":["studio-42/elfinder <= 2.1.69"],"patched":["studio-42/elfinder 2.1.70"],"published":"2026-08-31","updated":"2026-09-09","sourceUpdated":"2026-09-09T21:09:13.080","source":"NVD","sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-81889","references":[{"url":"https://github.com/Studio-42/elFinder/commit/191372c1bbebbd36fb55af79a84b9984861390ff","label":"security-advisories@github.com"},{"url":"https://github.com/Studio-42/elFinder/commit/6d997386cd0f1abab4706c220b46b0aea0ecff51","label":"security-advisories@github.com"},{"url":"https://github.com/Studio-42/elFinder/releases/tag/2.1.70","label":"security-advisories@github.com"},{"url":"https://github.com/Studio-42/elFinder/security/advisories/GHSA-8x3q-jpjh-qh5c","label":"security-advisories@github.com"},{"url":"https://github.com/Studio-42/elFinder/security/advisories/GHSA-8x3q-jpjh-qh5c","label":"134c704f-9b21-4f2e-91b3-4a467353bcc0"},{"url":"https://github.com/advisories/GHSA-8x3q-jpjh-qh5c"}],"tags":["nvd","ghsa","composer"],"epss":0.00334,"epssPercentile":0.26889,"aliases":["GHSA-8x3q-jpjh-qh5c"],"ecosystem":"composer","ingestedAt":"2026-08-31T21:14:21.376Z","slug":"CVE-2026-81889","body":"## Overview\n\nelFinder is an open-source file manager for web, written in JavaScript using jQuery UI. Prior to 2.1.70, elFinder URL uploads in php/elFinder.class.php can bypass server-side request forgery protections when PHP cURL is unavailable because validate_address() validates $info['ip'], but get_remote_contents() selects fsock_get_contents(), which connects to $arr['host'] and performs a second DNS resolution. An attacker able to submit a URL upload can use DNS rebinding to have the first resolution return a public address and the connection resolution return a loopback or private address, causing the internal HTTP response body to be stored as an uploaded file and made readable through elFinder. After a successful fetch, get_headers($url, true) separately requests the original hostname without reusing the validated and pinned connection, creating an additional blind server-side request forgery path even when curl_get_contents() is selected. This issue is fixed in version 2.1.70.\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.\n\n## Package advisory (CVE-2026-81889)\n\nAffected packages:\n\n- `studio-42/elfinder <= 2.1.69`\n\nPatched in:\n\n- `studio-42/elfinder 2.1.70`\n\nSource: https://github.com/advisories/GHSA-8x3q-jpjh-qh5c","depth":"twilight","depthScore":47,"depthScoreParts":{"impact":47.3,"likelihood":0.1,"exploitation":0,"ransomware":0},"changes":[]}