{"id":"MAL-2026-2819","summary":"Malicious code in pynosist (PyPI)","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","modified":"2026-04-16T22:34:42.000019Z","published":"2026-04-16T17:48:29Z","database_specific":{"malicious-packages-origins":[{"source":"kam193","modified_time":"2026-04-16T17:48:29.443005Z","id":"pypi/2026-04-genosys/pynosist","sha256":"22099e06b775b693ee968f0c24992f9b3e4a07c5111dca77b8eacb80fa848570","versions":["0.1.0","0.1.1","0.1.2"],"import_time":"2026-04-16T18:31:14.406019833Z"},{"source":"kam193","modified_time":"2026-04-16T17:48:29.443005Z","id":"pypi/2026-04-genosys/pynosist","sha256":"e04256eb1c50315d6a1880695d0f2dad1cbe76ab0d7d85a300d78081bbe87ceb","versions":["0.1.0","0.1.1","0.1.2"],"import_time":"2026-04-16T18:57:15.738660209Z"},{"source":"kam193","modified_time":"2026-04-16T17:48:29.443005Z","id":"pypi/2026-04-genosys/pynosist","sha256":"faa7a26abfc86abcff2d4f0dc03bc01e874812c755e498ba8c5de57cb97049ba","versions":["0.1.0","0.1.1","0.1.2"],"import_time":"2026-04-16T21:48:05.655980246Z"},{"source":"kam193","modified_time":"2026-04-16T17:48:29.443005Z","id":"pypi/2026-04-genosys/pynosist","sha256":"ef7a4db1443361fe93b268c7ad8f38c5c290d5334162b57c2b534c97acbc2b5d","versions":["0.1.0","0.1.1","0.1.2"],"import_time":"2026-04-16T22:18:51.314320753Z"}],"iocs":{"urls":["https://161.97.81.147:8080"],"ips":["161.97.81.147"]}},"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"}],"affected":[{"package":{"name":"pynosist","ecosystem":"PyPI","purl":"pkg:pypi/pynosist"},"versions":["0.1.0","0.1.1","0.1.2"],"database_specific":{"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/pynosist/MAL-2026-2819.json"}}],"schema_version":"1.7.5","credits":[{"name":"Kamil Mańkowski (kam193)","contact":["https://github.com/kam193","https://bad-packages.kam193.eu/"],"type":"REPORTER"}]}