- Issue created by @larowlan
This was originally reported to the security team who decided it could be public
This issue was reported to IBM as a vulnerability in the IBM API Connect Developer Portal, however the actual vulnerability is in the underlying Drupal Core translation modules. The vulnerability allows one Drupal user with administrative permissions to create a page which can force another Drupal user to make a call to a server under the control of an attacker. I have tested this on a vanilla Drupal 10 site and the vulnerability is present there.
1. Set up a HTTP server somewhere, this will be the target of the malicious request (I used "ncat -l -p 80 --keep-open" just to see the request come in, obviously an attacker would use a server that they control)
2. Enable the four Drupal Core modules Language, Interface Translation, Content Translation and Configuration Translation
3. Navigate to Manage->People->Roles and create a new role with a name of
">'><img src="http://127.0.0.1/evil">
4. Navigate to the roles list and from the action menu for our malicious role select "Translate"
5. Choose a language and press the add button
The browser will make a call to the malicious server -- in my example I can clearly see the request come in:
Change $value = '<span lang="' . $source_language->getId() . '">' . nl2br($source_config) . '</span>';
to render as plain text string with \Drupal\Component\Utility\Html::escape
Active
11.0 π₯
Last updated
It makes Drupal less vulnerable to abuse or misuse. Note, this is the preferred tag, though the Security tag has a large body of issues tagged to it. Do NOT publicly disclose security vulnerabilities; contact the security team instead. Anyone (whether security team or not) can apply this tag to security improvements that do not directly present a vulnerability e.g. hardening an API to add filtering to reduce a common mistake in contributed modules.