Security: validate nested stream wrapper in stream: resource (CWE-22) (#1195) The built-in stream: resource type let a template bypass Security stream restrictions. BasePlugin::load() matches the 'stream' sysplugin before the stream_get_wrappers()/isTrustedStream() check, so a resource such as stream:php://filter/read=convert.base64-encode/resource=/path was opened by StreamPlugin::getContent() via fopen() on the nested php:// wrapper without ever validating it. This bypassed Security::$streams (including Security::$streams = null) and allowed reading arbitrary local files. Parse the wrapper scheme from the resolved path in StreamPlugin::getContent() and validate it with Security::isTrustedStream() before fopen(), giving the stream: resource the same check the direct wrapper path already receives. Adds regression tests covering the disabled-streams bypass, the not-on-allowlist case, and a positive test that an explicitly allowed wrapper still works.
Items tagged: @github and @php (7)
Recent Commits to smarty:master
-
Security: validate nested stream wrapper in stream: resource (CWE-22)…
Recent Commits to documents
-
Ajustes para uso de CNPJ alfanumérico tanto no CNPJ como nas chaves d…
Ajustes para uso de CNPJ alfanumérico tanto no CNPJ como nas chaves dos documentos fiscais eletrônicos.
Recent Commits to kint:master
-
Use more modern tricks
Use more modern tricks We've got a few new features between 7.1 and 7.4 so this is nice. Unfortunately we still have to use array_merge for arrays with string keys since that wasn't supported until 8.1
-
Parser: Improve TRIGGER_ mask definitions
Parser: Improve TRIGGER_ mask definitions
-
Utils::isValidPhpName
Utils::isValidPhpName
Recent Commits to policies:main
-
Implement the changes of the Release Cycle Update RFC (#5)
Implement the changes of the Release Cycle Update RFC (#5) RFC: https://wiki.php.net/rfc/release_cycle_update --------- Co-authored-by: Peter Kokot <peterkokot@gmail.com> Co-authored-by: Ben Ramsey <ben@benramsey.com> Co-authored-by: Sergey Panteleev <sergey@php.net>
Recent Commits to Search-Replace-DB:master
-
Fix unserialize() warnings, deprecated warnings.
Fix unserialize() warnings, deprecated warnings. As of PHP 8.3 unserialize() triggers E_WARNING instead of E_NOTICE causing SRDB to dump thousands of notices to the screen as it tries to unserialized non-serialized strings. It now checks for serialized data before trying to unserialize. Fixed Deprecation warning creating dynamic property: alter_collation. Fixed Deprecation warning when passing null to htmlentities().