{"id":"MAL-2026-3224","summary":"Malicious code in graphicctx (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: kam193 (8867133b18f35132bf0096bdbd5d1891e87f8a07bbba09f6dffe21c8b048596e)\nPackages in this campaign are used to exfiltrate data from users installing code from prepared Github repositories. Packages contain code to exfiltrate files (typically .env files, but it could also be log, txt or code files), and may also create a persistent backdoor via embedding a hardcoded SSH key or perform other actions. The malicious actions are not triggered via the code in malicious repositories pretending to be some early-stage cryptocurrency-related projects.\n\nBased on the attribution of some NPM packages used in malicious repositories published under https://github.com/0xsebasneuron, this is likely part of North Korean actions targeting developers via fake interviews: https://socket.dev/supply-chain-attacks/north-korea-s-contagious-interview-campaign\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-04-renderctx\n\n\nReasons (based on the campaign):\n\n\n - backdoor\n\n\n - files-exfiltration\n\n\n - crypto-related\n\n\n - The malicious code is intentionally included in a dependency of the package\n","modified":"2026-05-01T23:31:58.421236Z","published":"2026-05-01T22:46:40Z","database_specific":{"iocs":{"domains":["renderkit1.vercel.app","ctx-graphics.vercel.app"],"urls":["https://renderkit1.vercel.app","https://ctx-graphics.vercel.app"]},"malicious-packages-origins":[{"modified_time":"2026-05-01T22:46:40.465885Z","source":"kam193","versions":["1.0.1"],"import_time":"2026-05-01T22:48:45.49641076Z","sha256":"8867133b18f35132bf0096bdbd5d1891e87f8a07bbba09f6dffe21c8b048596e","id":"pypi/2026-04-renderctx/graphicctx"},{"modified_time":"2026-05-01T22:46:40.465885Z","source":"kam193","versions":["1.0.1"],"import_time":"2026-05-01T23:21:43.752663099Z","sha256":"5234e380c4b7795a299a496ea15fb214e7fb439e74899c372ddb016ba3785485","id":"pypi/2026-04-renderctx/graphicctx"}]},"references":[{"type":"WEB","url":"https://github.com/0xsebasneuron"},{"type":"WEB","url":"https://socket.dev/supply-chain-attacks/north-korea-s-contagious-interview-campaign"},{"type":"WEB","url":"https://github.com/0xsebasneuron/polymarket-arbitrage-copy-trading-bot-V2/commit/4dae9aea3c35a627a7f38a28946f73af18930a3e#diff-4d7c51b1efe9043e44439a949dfd92e5827321b34082903477fd04876edb7552"},{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/graphicctx"}],"affected":[{"package":{"name":"graphicctx","ecosystem":"PyPI","purl":"pkg:pypi/graphicctx"},"versions":["1.0.1"],"database_specific":{"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/graphicctx/MAL-2026-3224.json"}}],"schema_version":"1.7.5","credits":[{"name":"Kamil Mańkowski (kam193)","contact":["https://github.com/kam193","https://bad-packages.kam193.eu/"],"type":"ANALYST"},{"name":"Kamil Mańkowski (kam193)","contact":["https://github.com/kam193","https://bad-packages.kam193.eu/"],"type":"REPORTER"}]}