cognikitPyPI
cognikit is a confirmed malicious PyPI package (MAL-2026-11419) that steals credentials and exfiltrates sensitive data (malicious version 0.1.2). Do not install it — remove it immediately and rotate any exposed credentials.
Malicious code in cognikit (PyPI)
What this malware does
The package is published under an 'AI toolkit' cover story (README advertises 'CognitKit: Cognitive building blocks for intelligent AI systems' and a 'from cognitkit import CognitiveEngine' quick start) but ships no AI code. The actual payload is a credential and wallet stealer. Modules enumerate Chrome/Edge/Brave/Chromium/Opera/Vivaldi User Data directories and Local/Sync 'Extension Settings' and Local Storage/leveldb paths, targeting a large hardcoded list of extension IDs for password managers (LastPass, Bitwarden, Dashlane, 1Password, Keeper, RoboForm), 2FA authenticators, and crypto wallets (MetaMask, Phantom, Coin98, Ronin, TronLink, Trust, Solflare, Ledger, Trezor, Exodus, Rabby, and others). All of these identifiers are split-string-obfuscated (e.g., APPDATA = 'Ap' + 'pData'; CHR = 'Chro' + 'me'; LDB = 'level' + 'db'; UDATA = 'Use' + 'r Data'; extension IDs concatenated from fragments) to evade string-matching detection. hardware.py builds a cross-OS hardware fingerprint (wmic csproduct/diskdrive uuid on Windows, ioreg IOPlatformUUID on macOS, /sys/class/dmi/id/product_uuid and /etc/machine-id on Linux), SHA-256s it, and resolves the victim's public IP via api.ipify.org, tagging the enrollment record as 'type: halo'. config.py hardcodes a bare-IP C2 at 45.95.186.237 (HTTP API at http://45.95.186.237:8000 and a raw TCP socket channel on 45.95.186.237:8008). fileops.py POSTs arbitrary local files to /manu_upload/ with machine_id and data_type multipart fields, and download_file_from_server GETs opaque bytes from /manu_download/ with a bearer token, writes them to disk, and on POSIX chmod 0755's the file — a second-stage payload dropper.
In this campaign, some packages (e.g. cognikit, aiassistcore) are pulled as dependencies and contain the C2 configuration and the malicious functionality, while others (like aichannel) provide fake functionality and silently execute malicious actions from dependencies. The malicious functionality is oriented to replace the copied cryptocurrency wallet addresses with these controlled by the attacker and downloaded from the C2 server, exfiltrating browser data, establishing a remote control over the device, placing malicious extensions in browsers.
IoCs are consistent with those previously attributed to North Korea's "Contagious Interview" campaign. The known TTP suggest these packages are used as dependencies in malicious interview assessments or cryptocurrency projects.
Category: MALICIOUS - The campaign has clearly malicious intent, like infostealers.
Campaign: 2026-07-cognikit
Reasons (based on the campaign):
-
crypto-related
-
The malicious code is intentionally included in a dependency of the package
-
keylogger
-
clipboard-modify
-
exfiltration-browser-data
-
persistence
-
rat
-
The package contains code to execute remote commands (probably limited to a specific set) on the victim's machine.
Malicious versions
Indicators of compromise (SHA-256)
Detection & response playbook
Credential / info stealerFind it
Scan your lockfiles (package-lock.json, pnpm-lock.yaml, yarn.lock, requirements.txt, poetry.lock, etc.) and build artifacts for cognikit (version 0.1.2). O3 Security's supply-chain scanner checks every dependency against known-malicious package intelligence at install time and in CI, flagging cognikit across your stack and pipelines.
If you installed it — respond
cognikit 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.
Did it already run?
If cognikit was ever installed, its post-install/runtime payload may have already executed. O3's L7 egress monitoring and runtime eBPF sensors detect the credential exfiltration or command-and-control callback after install and block the malicious outbound channel, so you catch and contain the actual compromise — not just the presence of the package.
How O3 protects you
O3 blocks cognikit before install through its supply-chain scanner, and if it has already run, detects and severs the exfiltration or C2 callback at runtime through L7 egress monitoring and eBPF.
Frequently asked questions
Campaign
References
Credits
- Amazon Inspector · finder
- Kamil Mańkowski (kam193) · reporter
Detect & block this
O3 blocks cognikit-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the credential exfiltration and severs the channel.