Texts: key-based strings and translations
2 security fixes in one update. Texts: key-based strings and translations fixed 2 separate security bugs at once: 1 cross site request forgery, 1 cross site scripting. One update covers all of them. The most serious, SA-CONTRIB-2026-319, is explained here and the full list is at the end of the card.
The module does not properly protect the action to restore a duplicate translation. Someone with an ordinary account could trick a user into overwriting an existing translation and deleting the duplicate. They could change translation data but could not view any hidden information.
- Who could do thisOnly someone with a login on your site.
- Does it apply to youA site is affected if an attacker creates a suitable duplicate translation and tricks a user with access to the translation overview into opening a crafted request.
- Has it been used in attacksNo sign of it.
- How urgentDrupal rates this moderately critical. Include it in your next routine update, within the month.
Tell your developerUpdate Texts: key-based strings and translations to 1.0.17.
For developers: what the fix changed
Adds CSRF protection to the `entity.texts.restore_duplicate` route in `texts.routing.yml` and enforces `update` and `delete` access checks in `TextsController::restoreDuplicate()`.
Also in this release Replaces deprecated GraphQL callbacks with data producers, fixes deprecations, refines text validation, and requires Drupal 10.3.
.gitlab-ci.yml+65 −0Readme.MD+3 −2composer.json+1 −1modules/texts_graphql/src/Plugin/GraphQL/DataProducer/TextsDataProducerBase.php+48 −0modules/texts_graphql/src/Plugin/GraphQL/DataProducer/TextsGetText.php+96 −0modules/texts_graphql/src/Plugin/GraphQL/DataProducer/TextsGetTextMultiple.php+95 −0modules/texts_graphql/src/Plugin/GraphQL/DataProducer/TextsGetTextPlural.php+106 −0modules/texts_graphql/src/Plugin/GraphQL/SchemaExtension/TextsExtension.php+23 −158modules/texts_graphql/texts_graphql.info.yml+1 −1phpstan.neon+1 −1src/Controller/TextsController.php+7 −0 fixsrc/Entity/Texts.php+55 −42
- Moderately critical · Cross site request forgery · SA-CONTRIB-2026-319
- Moderately critical · Cross site scripting · SA-CONTRIB-2026-318