# CVE-2021-41124: Splash authentication credentials potentially leaked to target websites in scrapy-splash

> Scrapy-splash users relying on HttpAuthMiddleware for Splash authentication may leak credentials to target websites during non-Splash requests like robots.txt.

- **Severity:** High 7.4 (`CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N`)
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Over the internet
- **Victim action needed:** A user has to click or open something
- **Fix available:** Yes
- **Published:** 5 Oct 2021
- **Updated:** 4 Aug 2024
- **Also known as:** GHSA-823f-cwm9-4g74, PYSEC-2021-364

## What is CVE-2021-41124?

CVE-2021-41124 is a high-severity vulnerability in scrapy-plugins scrapy-splash, published on 5 Oct 2021. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link.

### Official description

Scrapy-splash is a library which provides Scrapy and JavaScript integration. In affected versions users who use [`HttpAuthMiddleware`](http://doc.scrapy.org/en/latest/topics/downloader-middleware.html#module-scrapy.downloadermiddlewares.httpauth) (i.e. the `http_user` and `http_pass` spider attributes) for Splash authentication will have any non-Splash request expose your credentials to the request target. This includes `robots.txt` requests sent by Scrapy when the `ROBOTSTXT_OBEY` setting is set to `True`. Upgrade to scrapy-splash 0.8.0 and use the new `SPLASH_USER` and `SPLASH_PASS` settings instead to set your Splash authentication credentials safely. If you cannot upgrade, set your Splash request credentials on a per-request basis, [using the `splash_headers` request parameter](https://github.com/scrapy-plugins/scrapy-splash/tree/0.8.x#http-basic-auth), instead of defining them globally using the [`HttpAuthMiddleware`](http://doc.scrapy.org/en/latest/topics/downloader-middleware.html#module-scrapy.downloadermiddlewares.httpauth). Alternatively, make sure all your requests go through Splash. That includes disabling the [robots.txt middleware](https://docs.scrapy.org/en/latest/topics/downloader-middleware.html#topics-dlmw-robots).

Weakness: CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor)

## Which versions are affected by CVE-2021-41124?

3 open source packages ship an affected version, including scrapy-splash. It affects 1 product.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `scrapy-splash` | PyPI | All versions | 0.8.0 |
| `scrapy-splash` | PyPI | All versions | 0.8.0 |
| `scrapy-splash` | PyPI | All versions | 0.8.0 |

Products: Zyte Scrapy-Splash.

## How do I fix CVE-2021-41124?

Upgrade scrapy-splash to 0.8.0 or later.

## Is CVE-2021-41124 being exploited?

There is no known exploitation of CVE-2021-41124 in the wild and no public exploit code.

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2021-41124 and fix it if it is affected.

What it is: CVE-2021-41124 is a high-severity vulnerability in scrapy-plugins scrapy-splash, published on 5 Oct 2021. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link.
Exploitation: There is no known exploitation of CVE-2021-41124 in the wild and no public exploit code.

Affected packages and fixed versions:
- scrapy-splash (PyPI): affected all versions; fixed in 0.8.0
- scrapy-splash (PyPI): affected all versions; fixed in 0.8.0
- scrapy-splash (PyPI): affected all versions; fixed in 0.8.0

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/CVE-2021-41124/ (Markdown: https://insights.sbomify.com/CVE-2021-41124/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2021-41124
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2021-41124
- OSV: https://osv.dev/vulnerability/CVE-2021-41124

---
From sbomify Insights: https://insights.sbomify.com/CVE-2021-41124/
Summaries are generated and may contain mistakes; the official description above is the record.
