{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-110176","assignerOrgId":"2c85b837-eb8b-40ed-9d74-228c62987387","state":"PUBLISHED","assignerShortName":"drupal","dateReserved":"2026-10-13T17:02:57.071Z","datePublished":"2026-10-31T00:01:51.979Z","dateUpdated":"2026-10-31T00:01:51.979Z"},"containers":{"cna":{"providerMetadata":{"orgId":"2c85b837-eb8b-40ed-9d74-228c62987387","shortName":"drupal","dateUpdated":"2026-10-31T00:01:51.979Z"},"title":"File Force Download for Drupal 7 Access Bypass via Unconditional Download Headers","datePublic":"2026-09-02T06:00:00.000Z","problemTypes":[{"descriptions":[{"lang":"en","cweId":"CWE-863","description":"CWE-863 Incorrect Authorization","type":"CWE"}]}],"affected":[{"vendor":"Drupal","product":"File Force Download","platforms":["Drupal 7"],"collectionURL":"https://www.drupal.org/project/file_force","packageName":"file_force","repo":"https://git.drupalcode.org/project/file_force","versions":[{"status":"affected","version":"7.1.0","lessThan":"7.1.3","versionType":"semver"}],"defaultStatus":"unaffected"}],"descriptions":[{"lang":"en","value":"The File Force Download module for Drupal 7 implements hook_file_download() to add a Content-Disposition header when a file URL carries the download query parameter. In Drupal 7, returning a non-empty header array from that hook is itself a grant of access to the file.\n\n\n\nIn versions 7.1.0 through 7.1.2, the module only delegated to other modules' hook_file_download() implementations when the file was in the private scheme. For every other scheme it returned its headers without any check. An unauthenticated visitor who appended download=1 to the URL of a file in the temporary:// scheme, or in a stream wrapper supplied by another module, could retrieve the file, overriding the access checks that would otherwise have applied. Files in the public and private schemes are not affected.","supportingMedia":[{"type":"text/html","base64":false,"value":"<p>The File Force Download module for Drupal 7 implements <code>hook_file_download()</code> to add a <code>Content-Disposition</code> header when a file URL carries the <code>download</code> query parameter. In Drupal 7, returning a non-empty header array from that hook is itself a grant of access to the file.</p><p>In versions 7.1.0 through 7.1.2, the module only delegated to other modules' <code>hook_file_download()</code> implementations when the file was in the <code>private</code> scheme. For every other scheme it returned its headers without any check. An unauthenticated visitor who appended <code>download=1</code> to the URL of a file in the <code>temporary://</code> scheme, or in a stream wrapper supplied by another module, could retrieve the file, overriding the access checks that would otherwise have applied. Files in the public and private schemes are not affected.</p>"}]}],"references":[{"url":"https://www.herodevs.com/vulnerability-directory/cve-2026-110176","name":"HeroDevs vulnerability directory: CVE-2026-110176","tags":["third-party-advisory"]},{"url":"https://d7es.tag1.com/security-advisories/file-force-download-critical-access-bypass","name":"Tag1 D7ES advisory: File Force Download - Critical - Access Bypass","tags":["third-party-advisory"]}],"metrics":[{"format":"CVSS","scenarios":[{"lang":"en","value":"GENERAL"}],"cvssV4_0":{"attackVector":"NETWORK","attackComplexity":"LOW","attackRequirements":"NONE","privilegesRequired":"NONE","userInteraction":"NONE","vulnConfidentialityImpact":"HIGH","subConfidentialityImpact":"NONE","vulnIntegrityImpact":"NONE","subIntegrityImpact":"NONE","vulnAvailabilityImpact":"NONE","subAvailabilityImpact":"NONE","exploitMaturity":"NOT_DEFINED","Safety":"NOT_DEFINED","Automatable":"NOT_DEFINED","Recovery":"NOT_DEFINED","valueDensity":"NOT_DEFINED","vulnerabilityResponseEffort":"NOT_DEFINED","providerUrgency":"NOT_DEFINED","version":"4.0","baseSeverity":"HIGH","baseScore":8.7,"vectorString":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N"}}],"workarounds":[{"lang":"en","value":"Disable the File Force Download module, avoid keeping sensitive files in the temporary:// scheme or in stream wrappers provided by contributed modules, or block anonymous requests that carry a download parameter at the web server or WAF.","supportingMedia":[{"type":"text/html","base64":false,"value":"<p>Disable the File Force Download module, avoid keeping sensitive files in the temporary:// scheme or in stream wrappers provided by contributed modules, or block anonymous requests that carry a download parameter at the web server or WAF.</p>"}]}],"credits":[{"lang":"en","value":"Ra Mänd (ram4nd)","type":"finder"},{"lang":"en","value":"Ra Mänd (ram4nd)","type":"remediation developer"}],"source":{"discovery":"UNKNOWN"},"x_generator":{"engine":"Vulnogram 1.0.5"}}}}