# DRUPAL-CONTRIB-2020-012: This module enables you to build forms and surveys in Drupal.

> A Drupal Webform module flaw allows low-privilege users to extract HMAC hashes, potentially enabling unauthorized access to restricted content or user accounts.

- **Severity:** Not scored
- **Exploited in the wild:** Not known
- **Login needed:** Any signed-in user
- **Attackable:** Over the internet
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 6 May 2020

## What is DRUPAL-CONTRIB-2020-012?

DRUPAL-CONTRIB-2020-012 is a vulnerability in drupal/webform, published on 6 May 2020. Any signed-in user can exploit it over the network, with no action from the victim.

### Official description

This module enables you to build forms and surveys in Drupal.

The module doesn't sufficiently validate data submitted into Webform Signature element during webform submission creation. This allows a malicious user to generate and extract HMAC hashes for arbitrary data. Such HMAC hashes are used across multiple spots in Drupal 8 core and contrib modules.

An extracted HMAC hash could be used to view restricted site content or log in as another user in certain situations.

This vulnerability is mitigated by the fact that an attacker must be able to create a webform submission with "Signature" element and then be able to view the submission.

For Drupal instances that have "Signature" webform element available to users with low trust, it is advised to change the value of the hash salt within `settings.php` file to a new random value. Below we reference the specific extract from `settings.php` that is advised for change in such Drupal instances:

```
/**
 * Salt for one-time login links, cancel links, form tokens, etc.
 *
 * This variable will be set to a random value by the installer. All one-time
 * login links will be invalidated if the value is changed. Note that if your
 * site is deployed on a cluster of web servers, you must ensure that this
 * variable has the same value on each server.
 *
 * For enhanced security, you may set this variable to the contents of a file
 * outside your document root; you should also ensure that this file is not
 * stored with backups of your database.
 *
 * Example:
 * @code
 *   $settings['hash_salt'] = file_get_contents('/home/example/salt.txt');
 * @endcode
 */
$settings['hash_salt'] = 'new-value-here';
```

## Which versions are affected by DRUPAL-CONTRIB-2020-012?


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `drupal/webform` | Packagist:https://packages.drupal.org/8 | All versions | 5.11.0 |

## How do I fix DRUPAL-CONTRIB-2020-012?

Change a configuration setting.

## Is DRUPAL-CONTRIB-2020-012 being exploited?

There is no known exploitation of DRUPAL-CONTRIB-2020-012 in the wild and no public exploit code.

## Fix prompt for AI coding agents

```text
Check this codebase for DRUPAL-CONTRIB-2020-012 and fix it if it is affected.

What it is: DRUPAL-CONTRIB-2020-012 is a vulnerability in drupal/webform, published on 6 May 2020. Any signed-in user can exploit it over the network, with no action from the victim.
Exploitation: There is no known exploitation of DRUPAL-CONTRIB-2020-012 in the wild and no public exploit code.

Affected product: drupal/webform. No package-level version data is available, so check the vendor advisory linked from the reference page.

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/DRUPAL-CONTRIB-2020-012/ (Markdown: https://insights.sbomify.com/DRUPAL-CONTRIB-2020-012/index.md)
```

## Sources

- OSV: https://osv.dev/vulnerability/DRUPAL-CONTRIB-2020-012

---
From sbomify Insights: https://insights.sbomify.com/DRUPAL-CONTRIB-2020-012/
Summaries are generated and may contain mistakes; the official description above is the record.
