taurus-media/module-polyshell-fix

Fix for potential exploitation in custom options called Polyshell, where a user might try to pass a 'file' value to an option that is not designed to handle files.

Maintainers

Package info

github.com/taurus-media/module-polyshell-fix

Type:magento2-module

pkg:composer/taurus-media/module-polyshell-fix

Statistics

Installs: 57

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.0.0 2026-03-24 10:06 UTC

This package is auto-updated.

Last update: 2026-03-24 10:14:50 UTC


README

A Magento 2 module designed to address a potential security concern related to custom options. It ensures that custom option values are correctly validated before processing, preventing unauthorized 'file' type injections.

Description

This module introduces a before plugin for Magento\Catalog\Model\CustomOptions\CustomOption::getOptionValue().

The plugin performs the following checks:

  1. Option Existence: Verifies that the option_id associated with the request exists in the database. If the option does not exist, a LocalizedException is thrown.
  2. Type Validation: If the provided option_value is set to 'file', it confirms that the actual custom option type in Magento is indeed 'file'. If there is a mismatch (e.g., trying to pass 'file' to a text or drop_down option), a LocalizedException is thrown.

This prevents potential exploitation where an attacker might try to force Magento to process a file upload for an option that was not intended to handle files.

Installation

Via Composer (if available in repository)

composer require taurus-media/module-polyshell-fix

Manual Installation

  1. Copy the module files to app/code/Taurus/PolyshellFix.
  2. Run the following Magento commands:
bin/magento module:enable Taurus_PolyshellFix
bin/magento setup:upgrade
bin/magento cache:flush

Features

  • Security Hardening: Adds a layer of validation to product custom options.
  • Strict Type Checking: Ensures data integrity for file-based custom options.
  • Easy Integration: Hooks into existing Magento logic via plugins without modifying core files.