Internal exception message exposure for login action in Sylius
Impact
Exception messages from internal exceptions (like database exception) are wrapped by \Symfony\Component\Security\Core\Exception\AuthenticationServiceException and propagated through the system to UI. Therefore, some internal system information may leak and be visible to the customer.
Source excerpt · OSVAffected packages
Start with the recorded fix for your release branch. Check your installed version and test compatibility before upgrading. Fixing this advisory does not rule out other vulnerabilities in the release.
| Affected range | Recorded fix |
|---|---|
| Earlier releases before 1.3.14Ecosystem versions | 1.3.14 |
| From 1.4.0 before 1.4.10Ecosystem versions | 1.4.10 |
| From 1.5.0 before 1.5.7Ecosystem versions | 1.5.7 |
| From 1.6.0 before 1.6.3Ecosystem versions | 1.6.3 |
Version evidence: OSV · GHSA-3r8j-pmch-5j2h
View original version evidence (119 explicit versions)
Original source description
Internal exception message exposure for login action
Impact
Exception messages from internal exceptions (like database exception) are wrapped by \Symfony\Component\Security\Core\Exception\AuthenticationServiceException and propagated through the system to UI. Therefore, some internal system information may leak and be visible to the customer.
A validation message with the exception details will be presented to the user when one will try to log into the shop.
Patches
Has the problem been patched? What versions should users upgrade to?
Workarounds
The src/Sylius/Bundle/UiBundle/Resources/views/Security/_login.html.twig file should be overridden and lines https://github.com/Sylius/Sylius/blob/1.4/src/Sylius/Bundle/UiBundle/Resources/views/Security/_login.html.twig#L13-L17 should be replaced with
{% if last_error %}
<div class="ui left aligned basic segment">
{{ messages.error(last_error.messageKey) }}
</div>
{% endif %}
The messageKey field should be used instead of the message.