Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
High privileges (FAQ editor role) required; network-delivered but post-auth; impact limited to low confidentiality file read with no integrity or availability effect.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
phpMyFAQ before 4.1.5 contains a potential authenticated path traversal vulnerability in the concatenatePaths() function within src/phpMyFAQ/Export/Pdf/Wrapper.php. A user with FAQ editing privileges can store HTML containing crafted image paths that are processed during PDF generation. The path resolution logic locates the substring "content" within a user-controlled path using strpos(); when "content" is absent, strpos() returns false, which becomes 0 when cast to an integer, preserving the entire attacker-controlled path. This path is later passed to file_get_contents() without canonicalization or root-directory containment validation, which may allow reading of files outside the intended content directory.
AnalysisAI
Path traversal in phpMyFAQ's PDF export pipeline allows authenticated FAQ editors to read arbitrary server-side files by storing HTML with crafted image paths that exploit a type-juggling flaw in concatenatePaths(). When the substring 'content' is absent from an attacker-controlled path, strpos() returns false, which PHP silently coerces to integer 0, causing the full unsanitized path to pass through to file_get_contents() without canonicalization. No active exploitation is confirmed (not in CISA KEV), and no public exploit code has been identified at time of analysis, but the root cause is a low-complexity PHP type-juggling antipattern that is straightforward to weaponize once the attack surface is understood.
Technical ContextAI
phpMyFAQ is an open-source PHP FAQ management system. The vulnerability resides in src/phpMyFAQ/Export/Pdf/Wrapper.php within the concatenatePaths() function, which is responsible for resolving image file paths during PDF generation. The root cause is CWE-22 (Improper Limitation of a Pathname to a Restricted Directory). Specifically, the code uses strpos() to locate the substring 'content' in a user-supplied path; strpos() returns the boolean false when no match is found, and PHP's loose typing coerces false to integer 0 in a numeric context, which the code interprets as a valid offset of 0 - effectively preserving the entire attacker-controlled string as the resolved path. This path is then passed to file_get_contents() with no realpath() normalization, no prefix check, and no directory-containment assertion, allowing path components such as '../' sequences to traverse outside the intended content root. Affected CPE: cpe:2.3:a:phpmyfaq:phpmyfaq:*:*:*:*:*:*:*:* for versions before 4.1.5.
RemediationAI
Upgrade to phpMyFAQ 4.1.5 or later, which resolves the type-juggling flaw in concatenatePaths() per the vendor security advisory at https://github.com/thorsten/phpMyFAQ/security/advisories/GHSA-88g4-74f3-63x9. The exact patch version 4.1.5 is confirmed by the advisory title. If immediate patching is not feasible, consider restricting FAQ editing privileges to the minimum set of trusted users, since exploitation is gated on that role. As an additional compensating control, configure the web server user account to operate under a restrictive filesystem profile (e.g., PHP open_basedir directive set to the application's content directory), which would prevent file_get_contents() from reading outside the permitted path even if the traversal string is constructed - note that open_basedir is a process-level constraint and does not fix the code defect, so it should not be treated as a permanent substitute for patching. Disabling PDF export entirely eliminates this attack surface if the feature is not required by users.
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
Same weakness CWE-22 – Path Traversal
View allSame technique Path Traversal
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-42891
GHSA-j3vx-7xgh-q759