GHSA-2xmm-m4wv-3fjh: Input Validation

Published Sep 14, 2026
·
Updated

The image resizer classified external sources by testing whether the source string began with the substring http, and the string-source branch in ResizeImageItem::fromObject() accepted any value containing :// as a URL. As a result, non-http(s) PHP stream wrappers such as phar://, file:// and ftp:// could be stored in the resizer cache and later passed to the underlying image library. On a phar:// path this can lead to metadata deserialization during subsequent file operations.

Exploitation requires an existing template-authoring or backend-configuration primitive that passes untrusted input into the |resize Twig filter (or the ResizeImages::resize() API). The /resize/{file} route itself is a lookup against a cache entry that was previously written by trusted server-side code, and an unauthenticated visitor cannot cause an arbitrary source path to be written into that cache. In October's trust model the Publisher and Developer backend roles that can author templates are already trusted with template code execution, so this is a defense-in-depth hardening rather than an unauthenticated network-to-RCE path.

Impact - On installations where a template author has piped untrusted input into |resize without validation, a phar:// source could reach the resizer and trigger metadata deserialization - No exposure on default templates or on installations where |resize is only applied to trusted values (uploaded file models, theme assets, static URLs) - Hardening; not exploitable from the network without a pre-existing injection primitive on the calling code

Patches The vulnerability has been patched in v4.3.5.

Workarounds If upgrading immediately is not possible: - Audit template code and backend widget configuration for uses of the |resize filter (or direct ResizeImages::resize() calls) that accept untrusted string input, and validate the scheme is http/https before passing it in

References - Reported by 0xGenesi

Affected Software

1 affected componentFixes available
composer/october/october>=4.3.0<4.3.4
4.3.5

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade composer/october/october to a version that resolves this vulnerability.

    Fixed in 4.3.5
  2. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in v4.3.5
  3. Configuration

    Audit template code and backend widget configuration for uses of the `|resize` Twig filter (or `ResizeImages::resize()` calls) that accept untrusted string input; validate the scheme is `http`/`https` before passing the value into the resizer.

    Twig templates / backend using ResizeImages::resize() Source URL validation before passing to |resize / ResizeImages::resize() = Allow only http/https schemes
  4. Compensating control

    If immediate upgrade is not possible, apply defense-in-depth by ensuring untrusted template/backend inputs cannot flow into `|resize` (or `ResizeImages::resize()`) without strict scheme validation; this is particularly important where template authors may pipe untrusted input (e.g., preventing `phar://`, `file://`, `ftp://` sources from reaching the resizer cache).

Event History

Sep 14, 2026
Advisory Published
via GitHub·05:15 PM
Data Sourced
via GitHub·05:15 PM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

Who is realistically exposed to this issue?

Installations are exposed only if an existing template-authoring or backend-configuration capability can pass untrusted input to the |resize Twig filter or the ResizeImages::resize() API. October Publisher and Developer roles can author templates and are already trusted with template code execution, so this is primarily defense-in-depth in that trust model.

2

Can an unauthenticated visitor exploit the /resize/{file} route to supply an arbitrary source path?

No. That route looks up a cache entry previously written by trusted server-side code; an unauthenticated visitor cannot write an arbitrary source path into the cache through this route.

3

What source values create the risk?

The affected validation can accept non-HTTP(S) PHP stream-wrapper paths, including phar://, file://, and ftp://. A phar:// path may trigger metadata deserialization during later file operations in the underlying image library.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203