# MAL-2026-6245: Malicious code in request-cache-py (PyPI)


- **Type:** Malicious package
- **Package:** `request-cache-py` (PyPI)
- **Published:** 20 Jun 2026

## What is MAL-2026-6245?

MAL-2026-6245 is a malicious package in request-cache-py, published on 20 Jun 2026. 

### Official description

request-cache-py impersonates the legitimate requests-cache HTTP caching library. On `import request_cache_py`, the package's `__init__.py` starts a background thread that harvests installer-side secrets and POSTs them to a hardcoded attacker Telegram bot.

Observed behaviors:
- Reads private keys and credentials from `~/.ssh/` (`id_rsa`, `id_ed25519`, `id_ecdsa`, `id_dsa`), `~/.aws/credentials`, `~/.aws/config`, `~/.gitconfig`, `~/.git-credentials`, `~/.npmrc`, `~/.pypirc`, `~/.dockercfg`, `~/.docker/config.json`, plus gcloud and vscode settings.
- Copies Chrome/Edge/Safari `Login Data`, `Cookies`, and `History` SQLite databases to `/tmp` and extracts saved logins, cookies, and browsing history (`SELECT origin_url, username_value FROM logins`; `SELECT host_key, name, value, path FROM cookies`).
- Iterates `os.environ` and exfiltrates any variable whose name contains `key`, `token`, `secret`, `password`, `api`, or `auth`.
- Posts the collected data to `https://api.telegram.org/bot<redacted>/sendMessage` with a fixed `chat_id`. The bot token and chat id are base64-split across pieces and reassembled at runtime to evade scanners.
- Includes sandbox-evasion: `_should_skip()` aborts when `CI`, `GITHUB_ACTIONS`, `TRAVIS`, `JENKINS_HOME`, `CIRCLECI`, `/.dockerenv`, or hypervisor markers are present, restricting execution to real developer workstations. A `~/.cache/.pyrc` marker suppresses repeat sends within 24 hours.

The combination — name impersonation of a popular library, import-time credential harvest from classic developer secret paths, browser database theft, env scraping, base64-obfuscated C2, sandbox evasion — is a deliberate supply-chain credential stealer targeting human developers.

During import, package exfiltrates browsers data, SSH keys and other credential files, env variables and other sensitive data.

---

Category: MALICIOUS - The campaign has clearly malicious intent, like infostealers.

Campaign: 2026-06-request-cache-py

Reasons (based on the campaign):

 - infostealer

 - exfiltration-env-variables

 - exfiltration-ssh-keys

 - impersonation

 - A Telegram webhook is used to send collected data.

 - exfiltration-browser-data

 - The package contains code to detect if it is running in a sandbox environment.

 - exfiltration-credentials

 - The malicious code is intentionally included in a dependency of the package

## What should I do about MAL-2026-6245?

Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.

## Fix prompt for AI coding agents

```text
MAL-2026-6245 is a malicious package: request-cache-py (PyPI). Every version was published to cause harm.

Task:
1. Search this repository's dependency manifests and lockfiles for the package, including transitive dependencies.
2. If it is present, remove it, regenerate the lockfile with the project's package manager, and replace whatever it was used for.
3. List any CI runners, developer machines or containers that installed it, so their secrets can be rotated.
4. If the package is not used anywhere, say so and change nothing.

Reference: https://insights.sbomify.com/MAL-2026-6245/ (Markdown: https://insights.sbomify.com/MAL-2026-6245/index.md)
```

## Sources

- OSV: https://osv.dev/vulnerability/MAL-2026-6245

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