/

CVE-2019-25779

Severity:

HIGH RISK

(7.5)

Path Traversal (CWE-22) in WooThemes Diarise Plugin

CVE-2019-25779

Deferred

Vulnerability type

Category:

Path Traversal

CWE:

CWE-22

Impact:

Arbitrary File Disclosure

Severity:

HIGH RISK

(7.5)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

WooThemes Diarise through version 1.5.9 contains a file read vulnerability in the calendar parameter of download.php. An unauthenticated attacker may use crafted file scheme paths to read arbitrary files, potentially exposing sensitive host or application data.

WooThemes Diarise through version 1.5.9 contains a file read vulnerability in the calendar parameter of download.php. An unauthenticated attacker may use crafted file scheme paths to read arbitrary files, potentially exposing sensitive host or application data.

Affected context

The vulnerability occurs in the Diarise plugin's download.php endpoint when the calendar parameter is used to select a file. Risk is present where the endpoint is publicly accessible and the parameter is passed to file-handling logic without sufficiently restricting the permitted path or URI scheme.

The vulnerability occurs in the Diarise plugin's download.php endpoint when the calendar parameter is used to select a file. Risk is present where the endpoint is publicly accessible and the parameter is passed to file-handling logic without sufficiently restricting the permitted path or URI scheme.

Exploit preconditions

  • Attack surface: Publicly accessible HTTP endpoint in the Diarise plugin
  • Required access: No authentication may be required
  • Trigger point: The calendar parameter processed by download.php
  • Why exploitation is possible: File selection is insufficiently constrained, allowing attacker-controlled paths or file schemes to reference files outside the intended calendar resources
  • Attack surface: Publicly accessible HTTP endpoint in the Diarise plugin
  • Required access: No authentication may be required
  • Trigger point: The calendar parameter processed by download.php
  • Why exploitation is possible: File selection is insufficiently constrained, allowing attacker-controlled paths or file schemes to reference files outside the intended calendar resources

Why this happens

The underlying bug is improper restriction of externally supplied file paths. The application appears to treat attacker-controlled calendar input as a trusted file reference without enforcing an allowlisted directory, canonicalizing the resulting path, or rejecting unsupported URI schemes. This behavior maps to CWE-22: Improper Limitation of a Pathname to a Restricted Directory, commonly known as path traversal.

The underlying bug is improper restriction of externally supplied file paths. The application appears to treat attacker-controlled calendar input as a trusted file reference without enforcing an allowlisted directory, canonicalizing the resulting path, or rejecting unsupported URI schemes. This behavior maps to CWE-22: Improper Limitation of a Pathname to a Restricted Directory, commonly known as path traversal.

Potential impact

  • Sensitive operating-system files may be disclosed
  • Application configuration and credentials could be exposed
  • Source code or plugin data may be read
  • Attackers may gain information useful for further compromise
  • Sensitive operating-system files may be disclosed
  • Application configuration and credentials could be exposed
  • Source code or plugin data may be read
  • Attackers may gain information useful for further compromise

General mitigation guidance

Mitigation generally focuses on removing attacker control over filesystem references and enforcing a narrow, secure file-access model.

Common defensive patterns include:

  • Resolve requested files only from a fixed, allowlisted directory
  • Canonicalize paths before authorization checks
  • Reject absolute paths, traversal sequences, and unsupported URI schemes such as file://
  • Map opaque identifiers to server-side filenames instead of accepting path values
  • Apply least-privilege permissions to the web process and sensitive files
  • Return generic errors without revealing filesystem details

Mitigation generally focuses on removing attacker control over filesystem references and enforcing a narrow, secure file-access model.

Common defensive patterns include:

  • Resolve requested files only from a fixed, allowlisted directory
  • Canonicalize paths before authorization checks
  • Reject absolute paths, traversal sequences, and unsupported URI schemes such as file://
  • Map opaque identifiers to server-side filenames instead of accepting path values
  • Apply least-privilege permissions to the web process and sensitive files
  • Return generic errors without revealing filesystem details

How teams detect issues like this

Organizations can look for:

  • Static analysis findings involving user input passed to file open, download, include, or read APIs
  • Code review signals such as direct concatenation of request parameters with filesystem paths
  • Missing canonicalization, directory-boundary checks, or URI-scheme validation
  • Web logs containing unusual path syntax, file schemes, encoded traversal markers, or repeated requests to download endpoints
  • Policy checks requiring allowlisted resource identifiers and restricted web-process file permissions

Automated application-security scanners and code-review tools may help identify these patterns, but findings should be validated against deployment-specific routing and access controls.

Organizations can look for:

  • Static analysis findings involving user input passed to file open, download, include, or read APIs
  • Code review signals such as direct concatenation of request parameters with filesystem paths
  • Missing canonicalization, directory-boundary checks, or URI-scheme validation
  • Web logs containing unusual path syntax, file schemes, encoded traversal markers, or repeated requests to download endpoints
  • Policy checks requiring allowlisted resource identifiers and restricted web-process file permissions

Automated application-security scanners and code-review tools may help identify these patterns, but findings should be validated against deployment-specific routing and access controls.

Sources

SourceLink
cxsecurity.comcxsecurity.com/issue/WLB-2019050123
github.comgithub.com/projectdiscovery/nuclei-templates/blob/main/http/vulnerabilities/wordpress/diarise-theme-lfi.yaml
packetstorm.newspacketstorm.news/files/id/152773/
vulncheck.comvulncheck.com/advisories/woothemes-diarise-1.5.9-local-file-disclosure-via-download-php

Frequently asked

questions

Yes. Where the vulnerable download.php endpoint is exposed through a web server, an attacker may be able to submit crafted requests remotely without an authenticated session.

The described issue does not require authentication, but the attacker must be able to reach the affected endpoint and supply the calendar parameter.

Replace user-controlled paths with server-side identifiers mapped to an allowlisted set of files, and enforce canonical path and scheme validation before any file operation.

Treat all request parameters as untrusted, use restricted file-access APIs, test traversal and alternate-scheme inputs, and enforce least-privilege permissions for the web process.

Yes. Where the vulnerable download.php endpoint is exposed through a web server, an attacker may be able to submit crafted requests remotely without an authenticated session.

The described issue does not require authentication, but the attacker must be able to reach the affected endpoint and supply the calendar parameter.

Replace user-controlled paths with server-side identifiers mapped to an allowlisted set of files, and enforce canonical path and scheme validation before any file operation.

Treat all request parameters as untrusted, use restricted file-access APIs, test traversal and alternate-scheme inputs, and enforce least-privilege permissions for the web process.

Find out what's already
exploitable in your codebase.