Trojanized PoCs Target Vulnerability Researchers with ChocoPoC Python RAT

Summary
Researchers identified a campaign using malicious GitHub PoCs and trojanized PyPI dependencies to infect vulnerability researchers and pentesters with ChocoPoC, a persistent Python RAT that steals credentials and files and executes commands.
Key points
- At least seven fake CVE proof-of-concept repositories used malicious Python dependencies, including frint and skytext, to deliver the malware.
- The infection chain loads an obfuscated native extension, installs persistence through malicious Python packages and .pth files, and retrieves the RAT through a Mapbox dataset.
- ChocoPoC steals browser credentials, cookies, autofill data, and history; collects files and system information; and supports arbitrary command and Python-code execution.
- The malware uses techniques including environment-specific execution gates, anti-debugging, timestomping, DNS-over-HTTPS, and Mapbox-based command-and-control.
- The researchers link related campaigns from 2025 and 2026 with high confidence, citing shared code and infrastructure patterns despite rotating accounts and packages.
- Package download statistics suggest the malicious dependencies were installed, but do not establish that those downloads resulted in successful compromises.
- The report advises against running the identified PoCs or installing the malicious packages while the malware and infrastructure remain active.
Article Details
- Attack Vectors
- Trojanised GitHub PoC repositories add malicious Python dependencies to requirements files; installing the PoC dependencies downloads frint and transitively installs skytext.
- The skytext native extension decrypts embedded scripts in the PoC runtime, drops a persistent Python RAT, and retrieves additional code from a Mapbox dataset.
- ChocoPoC harvests browser credentials and local files, executes received commands or Python code, and exfiltrates data through Mapbox or a dedicated HTTP server.
- Defensive Notes
- Do not run the identified PoC code or install the malicious packages.
- Review PoC authors and every dependency before execution; the article warns that behavior may only trigger in the full PoC runtime and may evade ordinary sandbox analysis.
Indicators of compromise
| Type | Indicator | Context |
|---|---|---|
| IPV4 | 91[.]132[.]163[.]78 | Dedicated external server used for ChocoPoC stage-three data exfiltration. |
| SHA256 | 17997e9e0256d0f5d5d21a4852c37f16b338e4bb9c2bec09bdfd822b24aa76b4 | SHA-256 hash of the malicious frint 0.1.2 wheel. |
| SHA256 | 320b29844892e3c59bc6fcb07e701b2b3230a37cb4a13176174e9e294ec6d43e | SHA-256 hash of the malicious Linux gradient.so native extension. |
| SHA256 | 40569318e89db751ff3886b2617d990d8a343f0d1d8727b7f978a28129ca36bc | SHA-256 hash of the malicious Windows gradient.pyd native extension. |
| SHA256 | 5abd45d6f4a1705dca55d882f017d4768888dce9ad99cea40b3da35c23de5cae | SHA-256 hash listed for the malicious slogsec package. |
| SHA256 | 93739477cd379adef95126b22758c0e644282d2028dd297328ce856fa111dd06 | SHA-256 hash of the malicious skytext 1.1.0 wheel. |
| URL | hxxp[:]//91[.]132[.]163[.]78:8001/assets/static/bundle[.]ext[.]min[.]de5b2bc9[.]js | Chunked-upload endpoint on the server identified for ChocoPoC stage-three data exfiltration. |
| URL | hxxps[:]//api[.]mapbox[.]com/datasets/v1/frankley/cmor0tcxf008i1mmpd7apt903/features/dm370543acmdopk296nahbtua?access_token=pk[.]eyJ1IjoiZnJhbmtsZXkiLCJhIjoiY21vNzFzaXNzMDJrMjJxcHJqY3JscnlpYSJ9[.]fuMfMgsxlOGxRy44A-y0WQ | Specific Mapbox dataset feature URL used as the ChocoPoC dead-drop for retrieving malicious code. |
| URL | hxxps[:]//api[.]mapbox[.]com/datasets/v1/mattallahsaed/cmismaye7000s1mp2v8fkn4lp/features/dm370543acmdopk296nahbtua?access_token=pk[.]eyJ1IjoibWF0dGFsbGFoc2FlZCIsImEiOiJjbWlzbWpncWkwNHRmM2ZzMWd1eTBmanQ4In0[.]VNFutzqzaSVfDiwQFr7_gQ | Specific Mapbox dataset feature URL identified as a ChocoPoC downloader dead-drop. |
| URL | hxxps[:]//github[.]com/bolubey/CVE-2026-0257 | Trojanised PoC repository identified as distributing malicious dependencies. |
| URL | hxxps[:]//github[.]com/bolubey/CVE-2026-50751 | Trojanised PoC repository identified as distributing malicious dependencies. |
| URL | hxxps[:]//github[.]com/lincemorado97/CVE-2025-14847 | Trojanised PoC repository identified as distributing malicious dependencies. |
| URL | hxxps[:]//github[.]com/lincemorado97/CVE-2025-55182_CVE-2025-66478 | Trojanised PoC repository identified as distributing malicious dependencies. |
| URL | hxxps[:]//github[.]com/lincemorado97/CVE-2025-64446_CVE-2025-58034 | Trojanised PoC repository identified as distributing malicious dependencies. |
| URL | hxxps[:]//github[.]com/ogenich/CVE-2026-10520 | Trojanised PoC repository identified as distributing malicious dependencies. |
| URL | hxxps[:]//github[.]com/ogenich/CVE-2026-48908 | Trojanised PoC repository identified as distributing malicious dependencies. |
MITRE ATT&CK
T1005 · Data from Local SystemThe RAT searches local user directories for documents, database files, and shell histories for collection.T1016 · System Network Configuration DiscoveryThe RAT gathers active network configuration during system reconnaissance.T1027 · Obfuscated Files or InformationEmbedded payloads are obfuscated with XOR and compressed before being decrypted and executed.T1041 · Exfiltration Over C2 ChannelThe RAT exfiltrates harvested data through its C2 channel and a dedicated external HTTP server.T1057 · Process DiscoveryThe RAT gathers lists of running processes during system reconnaissance.T1059.006 · PythonThe RAT is written in Python and uses Python exec() to run downloaded code.T1070.006 · TimestompThe malware timestomps dropped persistence files to hinder forensic detection.T1071.001 · Web ProtocolsThe malware uses HTTPS requests to Mapbox for its covert command-and-control and dead-drop activity.T1082 · System Information DiscoveryThe hola command gathers system information as part of reconnaissance.T1105 · Ingress Tool TransferThe downloader retrieves subsequent Python payloads from Mapbox dataset features.T1195.002 · Compromise Software Supply ChainMalicious frint and skytext dependencies are delivered through trojanised PoC repositories and installed as part of the software dependency chain.T1217 · Browser Information DiscoveryThe RAT collects browser history from targeted browser profiles.T1546.018 · Python Startup HooksA dropped .pth file and trojanised _distutils_hack package execute the RAT bootstrap when a new Python interpreter starts.T1555.003 · Credentials from Web BrowsersThe RAT collects stored credentials and other profile data from Chrome, Brave, Edge, and Firefox.T1622 · Debugger EvasionThe native extension checks for a remote debugger and hardware breakpoints before proceeding.
CVE
CVE-2025-14847lincemorado97/CVE-2025-14847CVE-2025-55182vulnerabilities. When a critical vulnerability affects a large attack surface - such as React2Shell (CVE-2025-55182), FortiWeb (CVE-2025-64446), or Ivanti Sentry (CVE-2026-10520) - every hour counts to produce a scanCVE-2025-58034CVE-2025-64446vulnerability affects a large attack surface - such as React2Shell (CVE-2025-55182), FortiWeb (CVE-2025-64446), or Ivanti Sentry (CVE-2026-10520) - every hour counts to produce a scan module before attackersCVE-2025-66478CVE-2026-0257After various unsuccessful GitHub dorks, we uncovered two additional repositories (github.com/bolubey/CVE-2026-0257 and github.com/bolubey/CVE-2026-50751) by reverse-indexing the entireCVE-2026-10520attack surface - such as React2Shell (CVE-2025-55182), FortiWeb (CVE-2025-64446), or Ivanti Sentry (CVE-2026-10520) - every hour counts to produce a scan module before attackers weaponise and mass-exploit theCVE-2026-48908dependency before executing anything. Precaution paid off. The second PoC (https://github.com/ogenich/CVE-2026-48908, now deleted) depended on an unfamiliar package named “frint”. The repository owner, `ogenich`, hadCVE-2026-50751we uncovered two additional repositories (github.com/bolubey/CVE-2026-0257 and github.com/bolubey/CVE-2026-50751) by reverse-indexing the entire github.com/nomi-sec/PoC-in-GitHub archive for 2025 and 2026 and
People
Malware
Products
Checkpoint VPNCheckpoint VPN Auth bypassFortiWebWhen a critical vulnerability affects a large attack surface - such as React2Shell (CVE-2025-55182), FortiWeb (CVE-2025-64446), or Ivanti Sentry (CVE-2026-10520) - every hour counts to produce a scan module beforeGitHubTargeted Supply Chain Attack: Vulnerability researchers and pentesters are being actively targeted via malicious Proof-of-Concept (PoC) repositories on GitHub that contain trojanised Python dependencies.Ivanti Sentryaffects a large attack surface - such as React2Shell (CVE-2025-55182), FortiWeb (CVE-2025-64446), or Ivanti Sentry (CVE-2026-10520) - every hour counts to produce a scan module before attackers weaponise andJoomlaof the Vulnerability Intelligence team. Then, on Thursday, 25 June 2026, shortly after publishing a Joomla JCE template, we received an intriguing GitHub notification:MapboxPyPI dependency executes a compiled and obfuscated dropper that retrieves a Python RAT payload from a Mapbox dead drop resolver. ChocoPoC RAT is designed to be stealthy and persistent, using timestomping, file-lockPAN-OSPAN-OS Auth bypassPyPIleast 7 fake CVE PoC repositories have been identified, all employing the same modus operandi: a malicious PyPI dependency executes a compiled and obfuscated dropper that retrieves a Python RAT payload from a MapboxPythondetails a campaign targeting vulnerability researchers with "ChocoPoC" malware embedded inside trojanised Python dependencies. Exploiting the pressure to quickly test new vulnerabilities, threat actors distribute aReact
Tools
Ghidraand after VirusTotal reported 0 detections, curiosity got the better of us. We thus opened the binary in Ghidra.Nucleinever run code from untrusted sources, urgency has a way of challenging good habits. ProjectDiscovery's Nuclei templates are an invaluable community resource, but GitHub issues and pull requests frequently reference