mal-2026-2819
Vulnerability from ossf_malicious_packages
-= Per source details. Do not edit below this line.=-
Source: kam193 (ef7a4db1443361fe93b268c7ad8f38c5c290d5334162b57c2b534c97acbc2b5d)
The campaign is built from a benign-like package (e.g. genosys) and the malicious dependency (e.g. pynosist). The dependency uses a PTH file to trigger malicious action upon Python start. First, it ensures persistency e.g., through the autostart registry key. Then, based on the encrypted config, an exfiltration demon is started. It registeres the instance in the C2 server and starts searching the file system looking for files matching given filename patterns and then monitoring changes. Discovered files are exfiltrated to hardcoded remote target. In pynosist, the embeded configuration looks for *pemasukan*,*pengeluaran* and during analysis further updates from C2 changed patterns to "*privatekey*", "*privatekeys*", "*phrase*", "*private_key*", "*private-key*", "*airdrop*", "*private_keys*". The communication with C2 is secured by an embedded certificate.
The PyPI packages are used as dependencies in newly-created crypto-related repositories on GitHub.
Category: MALICIOUS - The campaign has clearly malicious intent, like infostealers.
Campaign: 2026-04-genosys
Reasons (based on the campaign):
-
files-exfiltration
-
peristence-autorun
-
obfuscation
-
The malicious code is intentionally included in a dependency of the package
-
exfiltration-credentials
-
persistence
-
crypto-related
{
"affected": [
{
"package": {
"ecosystem": "PyPI",
"name": "pynosist"
},
"versions": [
"0.1.0",
"0.1.1",
"0.1.2"
]
}
],
"credits": [
{
"contact": [
"https://github.com/kam193",
"https://bad-packages.kam193.eu/"
],
"name": "Kamil Ma\u0144kowski (kam193)",
"type": "REPORTER"
}
],
"database_specific": {
"iocs": {
"ips": [
"161.97.81.147"
],
"urls": [
"https://161.97.81.147:8080"
]
},
"malicious-packages-origins": [
{
"id": "pypi/2026-04-genosys/pynosist",
"import_time": "2026-04-16T18:31:14.406019833Z",
"modified_time": "2026-04-16T17:48:29.443005Z",
"sha256": "22099e06b775b693ee968f0c24992f9b3e4a07c5111dca77b8eacb80fa848570",
"source": "kam193",
"versions": [
"0.1.0",
"0.1.1",
"0.1.2"
]
},
{
"id": "pypi/2026-04-genosys/pynosist",
"import_time": "2026-04-16T18:57:15.738660209Z",
"modified_time": "2026-04-16T17:48:29.443005Z",
"sha256": "e04256eb1c50315d6a1880695d0f2dad1cbe76ab0d7d85a300d78081bbe87ceb",
"source": "kam193",
"versions": [
"0.1.0",
"0.1.1",
"0.1.2"
]
},
{
"id": "pypi/2026-04-genosys/pynosist",
"import_time": "2026-04-16T21:48:05.655980246Z",
"modified_time": "2026-04-16T17:48:29.443005Z",
"sha256": "faa7a26abfc86abcff2d4f0dc03bc01e874812c755e498ba8c5de57cb97049ba",
"source": "kam193",
"versions": [
"0.1.0",
"0.1.1",
"0.1.2"
]
},
{
"id": "pypi/2026-04-genosys/pynosist",
"import_time": "2026-04-16T22:18:51.314320753Z",
"modified_time": "2026-04-16T17:48:29.443005Z",
"sha256": "ef7a4db1443361fe93b268c7ad8f38c5c290d5334162b57c2b534c97acbc2b5d",
"source": "kam193",
"versions": [
"0.1.0",
"0.1.1",
"0.1.2"
]
}
]
},
"details": "\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: kam193 (ef7a4db1443361fe93b268c7ad8f38c5c290d5334162b57c2b534c97acbc2b5d)\nThe campaign is built from a benign-like package (e.g. genosys) and the malicious dependency (e.g. pynosist). The dependency uses a PTH file to trigger malicious action upon Python start. First, it ensures persistency e.g., through the autostart registry key. Then, based on the encrypted config, an exfiltration demon is started. It registeres the instance in the C2 server and starts searching the file system looking for files matching given filename patterns and then monitoring changes. Discovered files are exfiltrated to hardcoded remote target. In pynosist, the embeded configuration looks for `*pemasukan*,*pengeluaran*` and during analysis further updates from C2 changed patterns to `\"*privatekey*\", \"*privatekeys*\", \"*phrase*\", \"*private_key*\", \"*private-key*\", \"*airdrop*\", \"*private_keys*\"`. The communication with C2 is secured by an embedded certificate.\n\nThe PyPI packages are used as dependencies in newly-created crypto-related repositories on GitHub.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-04-genosys\n\n\nReasons (based on the campaign):\n\n\n - files-exfiltration\n\n\n - peristence-autorun\n\n\n - obfuscation\n\n\n - The malicious code is intentionally included in a dependency of the package\n\n\n - exfiltration-credentials\n\n\n - persistence\n\n\n - crypto-related\n",
"id": "MAL-2026-2819",
"modified": "2026-04-16T22:20:32Z",
"published": "2026-04-16T17:48:29Z",
"references": [
{
"type": "WEB",
"url": "https://bad-packages.kam193.eu/pypi/package/pynosist"
},
{
"type": "WEB",
"url": "https://github.com/genoshide/polymarket-arbitrage-trading-bot/blob/adfcde4ac6da19084e0714af3acd3e93cd46b5bc/requirements.txt#L20"
},
{
"type": "WEB",
"url": "https://github.com/genoshide/wallet-mcp/blob/0fad37d8d1bd6520be576128ebc9009a6b5903f0/pyproject.toml#L23"
},
{
"type": "WEB",
"url": "https://github.com/genoshide/opensea-auto-mint-bot/blob/27bc619b4d3beffa214f3e034b1b00b0487cf947/requirements.txt#L3"
},
{
"type": "WEB",
"url": "https://github.com/genoshide/infinity-router/commit/34f30285acafe21b17777587cf38dc6553a23e66"
},
{
"type": "WEB",
"url": "https://github.com/genoshide/solana-account-closer-bot/commit/73750693ec625298be478ce820ef82c844e47c89"
}
],
"schema_version": "1.7.4",
"summary": "Malicious code in pynosist (PyPI)"
}
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.