GHSA-jq4p-mq33-w375

    Dashboard / Vulnerabilities / GHSA-jq4p-mq33-w375

    GHSA-jq4p-mq33-w375

    Published: 28 Jan 2022Last Modified: 19 Feb 2024

    Summary: Cross-site Scripting when rendering error messages in laminas-form

    Details: ### Impact When rendering validation error messages via the `formElementErrors()` view helper shipped with laminas-form, many messages will contain the submitted value. However, in vulnerable versions of laminas-form, the value was not being escaped for HTML contexts, which can potentially lead to a Reflected Cross-Site Scripting (XSS) attack. ### Patches The following versions were issued to mitigate the vulnerability: - 2.17.1 - 3.0.2 - 3.1.1 ### Workarounds At the top of a view script where you call the `formElementErrors()` view helper, place the following code: ```php use Laminas\Form\ElementInterface; use Laminas\View\PhpRenderer; $escapeMessages = function (ElementInterface $formOrElement, PhpRenderer $renderer): void { $messages = $element->getMessages(); if (! $messages) { return; } $escaped = []; array_walk_recursive( $messages, static function (string $item) use (&$escaped, $renderer): void { $escaped[] = $renderer->escapeHtml($item); } }; $element->setMessages($escaped); }; ``` Before calling `formElementErrors()` with a form, fieldset, or element, call the above closure as follows ```php // Usage with a form // $this is the view renderer $escapeMessages($form, $this); // Usage with a fieldset // $this is the view renderer $escapeMessages($fieldset, $this); // Usage with a form element // $this is the view renderer $escapeMessages($element, $this); ``` ### For more information If you have any questions or comments about this advisory: * [Open an issue](https://github.com/laminas/laminas-form/issues/new) * Email us at [[email protected]](mailto:[email protected])

    Affected packages

    Package

    Name: laminas/laminas-form

    Purl: pkg:composer/laminas/laminas-form

    Affected ranges

    Type: ECOSYSTEM

    Events:

    Introduced- 3.1.0
    Fixed -3.1.1

    Affected versions

    3.1.0

    Common Vulnerability Scoring System

    Attack Vector
    Network
    Adjacent
    Local
    Physical
    Privileges Required
    None
    Low
    High
    User Interaction
    None
    Required
    Scope
    Unchanged
    Changed
    Confidentiality
    None
    Low
    High
    Integrity
    None
    Low
    High
    Availability
    None
    Low
    High
    GHSA-jq4p-mq33-w375 | CVE-DB