Sec Bug->Bug #81230 [Opn]: open_basedir bypass through opcache_invalidate()
| From: | cmb@php.net | Date: | Mon, 12 Jul 2021 15:35:28 +0000 |
| Subject: | Sec Bug->Bug #81230 [Opn]: open_basedir bypass through opcache_invalidate() | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-234976@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=81230&edit=1
ID: 81230
Updated by: cmb@php.net
Reported by: jeffbencteux at gmail dot com
Summary: open_basedir bypass through opcache_invalidate()
Status: Open
-Type: Security
+Type: Bug
Package: opcache
Operating System: Debian 10
PHP Version: 8.0.8
Block user comment: N
Private report: Y
New Comment:
open_basedir bypasses are not considered to be security issues;
cf. <https://externals.io/message/105606>
and <https://externals.io/message/115406>.
Previous Comments:
------------------------------------------------------------------------
[2021-07-07 18:50:19] jeffbencteux at gmail dot com
Description:
------------
Similar to bug #81131.
It is possible to test for files and directories existence by using the $filename parameter of the
opcache_invalidate() PHP function, thus bypassing open_basedir restriction.
A potential attacker could enumerate files with the help of a dictionary.
The root cause seems to be that this function does not enforce checks for open_basedir restrictions.
Test script:
---------------
<?php
/*
Assuming:
* web root in /var/www/html/
* php.ini with open_basedir = /var/www/html/restricted
mkdir /var/www/html/restricted
echo "test" > /var/www/html/test.txt
The current file is located in /var/www/html/restricted/test.php
*/
echo opcache_invalidate("../test.txt");
?>
Expected result:
----------------
Warning: opcache_invalidate(): open_basedir restriction in effect. File(/var/www/html/test.txt) is
not within the allowed path(s): (/var/www/html/restricted) in /var/www/html/restricted/test.php on
line 14
Actual result:
--------------
1
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=81230&edit=1