Drupal security updates, in plain English · Module

Texts: key-based strings and translations

429 sites report using it · on drupal.org · 1 security update explained here

This module provides tools for managing text strings and translations on a website.

Below is every security update for Texts: key-based strings and translations that this site has covered, newest first. Each one says who could exploit it, whether it applies to your site, how urgent it is, and what to tell your developer. If your site uses this module and you are not sure which version, that is the first question to ask whoever looks after it.

Texts: key-based strings and translations

Moderately critical · 429 sites report using it · 2 security fixes · Week of 11 November 2026

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

This release carries 2 security fixes. The summary below is for SA-CONTRIB-2026-319, the most serious of them.

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.

1.0.16 to 1.0.17 3 commits, 26 files including 5 tests.

  • .gitlab-ci.yml +65 −0
  • Readme.MD +3 −2
  • composer.json +1 −1
  • modules/texts_graphql/src/Plugin/GraphQL/DataProducer/TextsDataProducerBase.php +48 −0
  • modules/texts_graphql/src/Plugin/GraphQL/DataProducer/TextsGetText.php +96 −0
  • modules/texts_graphql/src/Plugin/GraphQL/DataProducer/TextsGetTextMultiple.php +95 −0
  • modules/texts_graphql/src/Plugin/GraphQL/DataProducer/TextsGetTextPlural.php +106 −0
  • modules/texts_graphql/src/Plugin/GraphQL/SchemaExtension/TextsExtension.php +23 −158
  • modules/texts_graphql/texts_graphql.info.yml +1 −1
  • phpstan.neon +1 −1
  • src/Controller/TextsController.php +7 −0 fix
  • src/Entity/Texts.php +55 −42

Full diff, 1.0.16 to 1.0.17

The comparison is against the release immediately before the fix. If your site is on an older release, more will have changed.

All 2 security bugs this update fixes, worst first. Each link is the drupal.org notice for that one.

Not sure what your site is running?

Send me your Drupal site's address.

I'll tell you what I can see from outside, what the Drupal 10 end of life on 9 December means for it, and what it would cost to have me keep it patched. There's no charge for that and no obligation. peter@peterbrady.co.uk


Get in touch

Tell me who you are, what your organisation does, and what you need. That might be a Drupal site that needs looking after, an upgrade to get done before December, or an agency that needs Drupal cover.

If I can help, I'll say so and suggest a call. If I can't, I'll tell you straight away rather than waste your time.

peter@peterbrady.co.uk

For context: I work mainly with UK membership bodies, charities and research organisations, and with the agencies that look after their websites. Not recruiters.

Or start smaller and connect with me on LinkedIn. That's where I post what I find digging around in charity and grants data, and where the free tools turn up first.