{"id":"MAL-2026-17712","title":"Malicious code in ig-gox (PyPI)","summary":"Malicious code in ig-gox (PyPI)","severity":"critical","exploited":true,"vendor":"ig-gox","product":"ig-gox","ecosystem":"pip","affected":["ig-gox"],"published":"2026-10-09","updated":"2026-10-12","sourceUpdated":"2026-10-12T05:00:07.234523916Z","source":"OSV","sourceUrl":"https://osv.dev/vulnerability/MAL-2026-17712","references":[{"url":"https://bad-packages.kam193.eu/pypi/package/ig-gox"},{"url":"https://pypi.org/project/ig-gox/1.0.0/"}],"tags":["osv","pip","malware"],"ingestedAt":"2026-10-10T07:37:42.955Z","slug":"MAL-2026-17712","body":"## Overview\n\nImporting ig_gox runs ig_gox/__init__.py, which decodes a blob (base64, XOR, zlib) after a few anti-debugging checks and execs it as __main__. The decoded loader only goes on if it looks like a physical Android device running Termux (it turns away x86, emulators and VMs), installs requests and cryptography if they are missing, downloads encrypted code from https://goxtools.shop/api/admin/storage.php, decrypts it with AES-256-CBC and runs it in memory. The README only calls it a runtime engine for Termux. I decoded the loader statically and did not see what the downloaded code does. I read 1.0.0 and did not run it.\n\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (9b31f8ba5b2167be45b02cd3bbf840873adf76369e3ac472f1cccfc4a0579fff)\nThe pypi package ig-gox ships a top-level ig_gox/__init__.py that, on import (the README's documented usage), base64-decodes a ~5 KB embedded blob, XOR-decrypts it with a hardcoded key, zlib-decompresses it, HMAC-verifies it, then exec/compiles the resulting Python under __name__='__main__'. The visible wrapper has no other functionality; all actual behavior of the package is contained in that concealed blob. Before decoding, the module performs anti-analysis checks: it calls sys.exit(0) if sys.gettrace() returns a tracer, if the process environment/cwd/argv contain substrings such as 'uncompyle', 'pycdc', 'decompyle', 'deobfuscate', 'hook', or 'frida', and it tampers with references to builtins.exec/eval/compile. The combination of a hidden exec-of-decoded-payload reached automatically on import and explicit evasions against debuggers and decompilers is deliberate concealment of code execution from the installer and from reviewers.\n\n## Source: kam193 (780638a0747103eb44a85312a2cfb552981e498655f638c5baf86eb4a5f74042)\nPackage hides obfuscated code aimed to avoid analysis and downloading the remote stage. The remote code is used to abuse Instagram service for mass fake account registration.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-10-ig-gox\n\n\nReasons (based on the campaign):\n\n\n - The package contains code to detect if it is running in a sandbox environment.\n\n\n - obfuscation\n\n\n - Downloads and executes a remote malicious script.\n\n\n - abusing-3rd-api\n\n\n## Affected packages\n\n- `ig-gox`\n\n## Remediation\n\nRefer to the advisory for the patched release.","depth":"abyssal","depthScore":70,"depthScoreParts":{"impact":52.3,"likelihood":0,"exploitation":18,"ransomware":0},"changes":[]}