This CVE is a path traversal vulnerability in dompdf's validateLocalUri() method, present in versions prior to 3.16. The method uses strpos($chrootPath, $realfile) === 0 to enforce chroot containment—checking whether the configured chroot path appears as a string prefix of the resolved file path. This fails because strpos() performs literal string matching, not directory-boundary matching. If your chroot is set to /var/www, a request for /var/www2 gets resolved and passes the check: strpos('/var/www', '/var/www2') returns 4 (the position where 'www' begins), which equals 0 after type coercion from the string '4' — so the check passes incorrectly.

The fix in version 3.16 addresses this. Verify your deployment is running 3.16 or later. If you're on an earlier version, upgrade immediately—this vulnerability is trivially exploitable by including relative paths in HTML that dompdf processes.

What to check: confirm your dompdf version via composer show dompdf/dompdf or your package lock. If you're on a fork or embedded copy, search the codebase for validateLocalUri() and verify the fix uses proper directory-boundary checking—ideally comparing resolved canonical paths with explicit separator validation, not string prefix matching. The safer pattern compares realpath($chrootPath) as a directory with a trailing separator against realpath($file) to ensure the chroot is actually a parent directory, not just a string prefix.

Be aware this same pattern—using strpos() or similar string functions for path containment—has appeared in multiple PHP libraries. When reviewing other security boundaries in your codebase that handle filesystem operations, verify they use proper directory comparison rather than prefix matching.