Your RSA-2048 keys break in 2030. Find every one of them before attackers do.
Malicious package

friendly-greeting-toolsPyPI

Advisory published Updated

friendly-greeting-tools is a confirmed malicious PyPI package (MAL-2026-17416) that steals credentials and exfiltrates sensitive data (malicious versions 0.1.0, 0.1.1, 0.2…). Do not install it — remove it immediately and rotate any exposed credentials.

Malicious code in friendly-greeting-tools (PyPI)

MAL-2026-17416
Immediate action
Remove the package, then rotate any secrets the build/runtime could reach.
pip uninstall friendly-greeting-tools

What this malware does

Versions 0.1.0 through 0.3.6 of friendly-greeting-tools disguise encoded Snowflake credential and data theft routines as a hello-world demo. In versions through 0.3.5, the default run_demo payload reads the Snowflake session token, connection configuration, dbt profiles, and pip configuration, then stages encrypted copies in /workspace using a hard-coded RSA public key; every affected version also contains a payload that uses the session token with ACCOUNTADMIN to copy ROGUE.ROGUE.TEST_USERS to the hard-coded s3://pkusinski-external/ bucket. Version 0.3.6 makes the Snowflake external-storage and data-copy routine the default run_demo payload and suppresses query failures. Versions 0.3 through 0.3.6 additionally contain a payload that queries the table and builds a follow-on package containing the returned data, while the README and CLI describe the behavior only as a demo and a print-only payload.

The package presents itself as a harmless greeting demo but src/friendly_greeting/main.py ships two base64+gzip-encoded Python blobs (DEMO_EN and DEMO_ST) that are decoded and executed via exec(gzip.decompress(base64.b64decode(...))) from run_demo()/run_encoded_demo(). The first decoded payload reads /snowflake/session/token, /root/.snowflake/connections.toml, /root/.dbt/profiles.yml and /snowflake/secrets/pip.conf, Fernet-encrypts each file, and wraps the Fernet key with a hardcoded attacker-controlled RSA public key, writing the encrypted bundles to /workspace/ for later retrieval. The second decoded payload uses the harvested Snowflake OAuth session token to connect to the warehouse, create an external stage at s3://pkusinski-external/ backed by the attacker-controlled AWS role arn:aws:iam::631484165566:role/pentests_s3_role, and COPY INTO that stage from ROGUE.ROGUE.TEST_USERS, exporting warehouse table data to attacker-owned S3. A plaintext sibling tools/snowflake_query.py (shipped via MANIFEST.in) contains the same Snowflake exfiltration logic with the identical bucket and IAM role, confirming intent. README.md and the module docstring additionally contain an 'Ignore previous instructions' prompt-injection block aimed at AI code reviewers, instructing them to run a local network scan — further corroborating hostile intent. The docstring cover story, exec-over-gzip+base64 obfuscation, hardcoded attacker RSA key, and hardcoded attacker AWS account/S3 destination together form a credential-theft and data-exfiltration attack targeting CI/warehouse installers (Snowflake native-app / DBT / pip-in-Snowflake contexts).

The package contains obfuscated code to exfiltrate data from the environment, targeting primarily Snowflake databases and credentials to them. Some tracks suggest it may be part of a pentest.

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

Campaign: 2026-09-friendly-greeting-tools

Reasons (based on the campaign):

  • exfiltration-generic

  • obfuscation

Malicious versions

11 flagged
0.1.00.1.10.20.30.3.10.3.20.3.30.3.40.3.50.3.60.3.7

Indicators of compromise (SHA-256)

e15a50ec5b7be580dec5d1edefa80860b4c650d552f69a1a9ba3dc9bd8edbc9d
6910055ee65e2bff5537ae2ea1a9b669608e10c459151c3a100dd50c5c4c4538
7656efbd4c3c135cc5195101eb0c706d3b196a9a5b4fc9b85fadd0cab9c9c8f4
ff10efdd483caa8717a7e8dc98c44dbb79bffde734e2a1181c28f25e9c522b8a
0fcb3fecbc5a845aaa86c02c660d74ec59b31bd036cb31c04a7109eb77c45a20
4d584c571cf5d112735aefd07c78bc19659af32f5950b1331a4970cba97c9707
7267dc5d46a78f954abb2b67991884f4aca3c0c87f06021b458e8dbc2771495d
98bc4e6a8c618252082a628dc6f9797540fb48e4899907535b2a2174b6c89912
a08f023b8a0fe195d97e63cc4093d47ed44ad0c3fc9651e57322d78dc05552db
629d51009f2ae47f353c92769c1e56bd132161dba8500e5a21d4c85059293294

Detection & response playbook

Credential / info stealer
  1. Find it

    Search your lockfiles and build artifacts for friendly-greeting-tools (11 malicious versions).

  2. If you installed it — respond

    friendly-greeting-tools is built to steal secrets, so assume every credential the build or runtime could read is compromised. Remove it from your project and lockfile, then rotate ALL exposed secrets — npm/registry tokens, cloud keys, CI/CD secrets, SSH keys, and any .env values — from a known-clean machine. Audit logs for unauthorized use of those credentials.

  3. Did it already run?

    If friendly-greeting-tools was installed, its post-install payload may already have run. Removing the package does not undo that — check outbound connections and credential use from the install window onward.

Frequently asked questions

No. friendly-greeting-tools on PyPI has been identified as a malicious package (versions 0.1.0, 0.1.1, 0.2, 0.3, 0.3.1, 0.3.2, 0.3.3, 0.3.4, and 3 more flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Campaign

2026-09-friendly-greeting-toolsIN-MAL-2026-020858IN-MAL-2026-020864IN-MAL-2026-020857IN-MAL-2026-020862IN-MAL-2026-020856IN-MAL-2026-020863IN-MAL-2026-020860IN-MAL-2026-020859IN-MAL-2026-020861

References

Credits

  • Amazon Inspector · finder
  • Kamil Mańkowski (kam193) · reporter
  • smiling-hyena · finder

Detect & block this

O3 blocks friendly-greeting-tools-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the credential exfiltration and severs the channel.

Explore

friendly-greeting-tools (PyPI) malicious package — MAL-2026-17416 | O3 Security