Bug #67481 [Com]: Opcache uses wrong file from cache

From: Date: Mon, 05 Jan 2015 07:40:34 +0000
Subject: Bug #67481 [Com]: Opcache uses wrong file from cache
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-189656@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=67481&edit=1 ID: 67481 Comment by: spam at rw23 dot de Reported by: Danack at basereality dot com Summary: Opcache uses wrong file from cache Status: Closed Type: Bug Package: opcache Operating System: Centos PHP Version: 5.5.13 Block user comment: N Private report: N New Comment: yes, chroots are really THE problem and it renders the opcache completely unusable in multi-domain hosting enviroments. More importantly, this can cause security, privacy and !data-integrity! issues if users do not recognize quickly that it is broken. I actually had the issue that webshops hosted at my server were displaying products from completely different domains, because the config files had the same path and the same config is executed for all domains. I had a hard time explaining that to my customers. Finally i did fall back to xcache, it works with chroot so i think it should also work with the official opcache too. This is a serious issue, please reopen this bug. Previous Comments: ------------------------------------------------------------------------ [2015-01-02 02:43:28] public+php dot net at bastelstu dot be It also happens when using a chroot and several identical applications in different pools. As the applications are identical the paths obviously are as well. This really should be fixed, e.g. by prefixing the cache name with the pool name. ------------------------------------------------------------------------ [2015-01-01 22:11:09] Danack at basereality dot com It turns out this is not a bug, it is the behaviour that is expected when opcache.use_cwd is set to zero. With it set to zero OPCache does not include the current path in the name used for the cached script, and so OPcache cannot tell two scripts with the same name in different directories apart. The setting opcache.use_cwd should always be enabled unless PHP is going to be running a single application with known unique file names. ------------------------------------------------------------------------ [2014-09-24 22:30:37] public+php dot net at bastelstu dot be It would be great to be able to specify a prefix for the opcache key. This would easily allow to separate the caches for different pools. ------------------------------------------------------------------------ [2014-09-10 06:46:09] spam at rw23 dot de This is also a big security issue for two reasons: 1. it allows to read files from other chroots (containing secrets) if you know another chroot vhost (project1) is running a wordpress installation, you can create a file with a path existing on project1 like /web/wp-config.php in project2, include it from project2 and then echo DB_PASSWORD, DB_HOST and so on. you can read the secrets from project1. 2. i have not tried it, but i think it allows to override files on other chroots and inject arbitrary code. you can create a /web/index.php containing a php backdoor. if the opcache for that file gets cleared (server restart, garbage collection) and your file is the first loaded into cache again, you have your code executed in other chroots. a user running chroots without overlapping files will not notice this problem, bringing this vulnerability into production enviroments. ------------------------------------------------------------------------ [2014-09-10 06:19:59] spam at rw23 dot de php version is 5.5.16 for me ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=67481 -- Edit this bug report at https://bugs.php.net/bug.php?id=67481&edit=1

« previous php.bugs (#189656) next »