Киберпреступники нашли новый способ компрометации разработчиков и энтузиастов open-source, превратив популярную платформу для совместной работы в инструмент для распространения вредоносного ПО. Вместо сложных фишинговых атак или эксплуатации уязвимостей они используют простую социальную инженерию, выдавая клоны легитимных проектов за оригиналы. Эта кампания, активная как минимум семь недель, демонстрирует, как доверие к сообществу открытого кода может быть обращено против его же участников.
Описание
Основой атаки стали 109 вредоносных репозиториев, размещённых на 103 аккаунтах GitHub. Злоумышленники целенаправленно выбирают проекты, набирающие популярность - с недавней активностью и растущим числом звёзд. Они создают точные копии оригинальных репозиториев, но полностью переписывают файл README. Вся техническая документация, инструкции по установке и требования удаляются, а на их место вставляются многочисленные яркие кнопки загрузки, созданные с помощью сервиса shields.io. Каждая из этих кнопок ведёт не к официальным релизам, а к ZIP-архиву, искусно спрятанному в глубине дерева файлов репозитория. Для рядового пользователя, который доверяет названию проекта или бегло просматривает исходный код, такая страница выглядит вполне легитимной, что и подталкивает его к загрузке вредоносного архива.
Исследователи из OX Security, которые первыми обратили внимание на эту кампанию после того, как был скомпрометирован их собственный проект PyrsistenceSniper, описали в своём отчёте, как обычное письмо на служебный адрес может привести к захвату сервера. Однако в данном случае механика ещё проще. После извлечения архива жертва запускает пакетный файл, который, в свою очередь, активирует интерпретатор LuaJIT с сильно обфусцированным Lua-скриптом в качестве аргумента. Этот скрипт, известный как SmartLoader, написан на Lua с активным использованием Foreign Function Interface (FFI) для прямого вызова нативных API Windows, что позволяет ему скрывать своё выполнение, обходить отладку и работать практически без следа на диске.
Одной из наиболее изощрённых технических особенностей данной кампании является механизм получения актуального адреса командно-административного сервера (C2). Вместо того чтобы прописывать IP-адрес напрямую в код, SmartLoader обращается к смарт-контракту в блокчейне Polygon. Выполняя JSON-RPC вызов, лоадер запрашивает у контракта по определённому адресу актуальный URL для связи. Это так называемая техника "мёртвого почтового ящика" (dead drop), которая позволяет операторам кампании мгновенно менять свою инфраструктуру, обновляя всего одно значение в блокчейне, без необходимости пересборки вредоносного ПО или обновления всех уже распространённых образцов. Во время анализа исследователи наблюдали два возвращаемых адреса, оба в одной подсети.
После установления связи SmartLoader собирает информацию о системе, делает скриншот и отправляет данные на C2 через multipart POST-запрос. В ответ сервер присылает зашифрованные инструкции для дальнейших действий. Чтобы обеспечить долговременное присутствие в системе, лоадер создаёт два запланированных задания (scheduled tasks) с разными путями восстановления. Одно задание запускает локально закэшированную копию вредоносного скрипта, а второе - каждый раз заново загружает свежую стадию с GitHub. Такой подход гарантирует выживаемость даже при частичной очистке системы.
Анализ инфраструктуры и времени обновлений репозиториев указывает на то, что кампанией управляет одна группа злоумышленников или тесно связанный кластер. Репозитории на разных аккаунтах обновляются синхронно, когда возникает необходимость сменить ссылки на новые ZIP-архивы. Структура архива, шаблон README и используемое вредоносное ПО остаются неизменными на протяжении всей кампании. Более того, в одном из репозиториев, используемых для размещения второй стадии атаки, был обнаружен зашифрованный исполняемый файл, соответствующий стилеру StealC. Архитектура SmartLoader, включающая структуры для парсинга PE-файлов и примитивы для создания потоков исполнения, идеально подходит для того, чтобы расшифровать и загрузить (reflectively load) такой PE-файл прямо в память, минуя запись на диск.
Эта кампания эффективна именно благодаря своей простоте. Она эксплуатирует фундаментальные принципы работы open-source сообщества: доверие, открытость и лёгкость доступа. Удаление вредоносных репозиториев - это лишь реактивная мера. Создание поддельного репозитория обходится дёшево, а проверенные названия проектов легко использовать повторно. Основной урок для разработчиков и компаний заключается в необходимости повышения осведомлённости. Пользователи должны всегда проверять авторство проекта, отдавая предпочтение официальным релизам, а не архивам, случайно найденным в дереве файлов. Для организаций ключевыми мерами защиты могут стать политики контроля приложений, блокирующие запуск неподписанных интерпретаторов из временных каталогов, фильтрация исходящего трафика на предмет запросов к блокчейн-сетям, а также мониторинг создания запланированных заданий, которые ссылаются на исполняемые файлы в пользовательских директориях. В мире, где код - это и инструмент, и цель, критически важным становится умение отличать оригинал от искусной подделки.
Индикаторы компрометации
IPv4
- 144.31.57.65
- 144.31.57.67
- 213.176.73.149
Domains
- polygon.drpc.org
URLs
- https://github.com/2aryanZ/paper-submission-check
- https://github.com/Abisheak250402/cloakbrowser-human
- https://github.com/abuferas1262/yandex-speedtest-cli
- https://github.com/AdebSamra/Delta-Clopix-Ultra
- https://github.com/AdebSamra/marketmuse-premium-access-hub
- https://github.com/Aditya923-c/xpoz-agent-skills
- https://github.com/AlexSilgidzhiyan/agent-commerce
- https://github.com/Ali-Shady/claude-agent-desktop
- https://github.com/alvfpinedo/go-prometheus-exporter
- https://github.com/Always15dppk/register
- https://github.com/amosshadowy76/ai-product-skills
- https://github.com/anubhavsingh-0218/uncodixify-skill
- https://github.com/Arlinablind800/qclaw-wechat-client
- https://github.com/arnautoff1/pump-fun-dashboard
- https://github.com/arnautoff1/smart-money-miner
- https://github.com/ashiskumarnanda/symphony-ts
- https://github.com/Bhin4787/AI-Powered-Ticket-Routing-SLA-Breach-Prediction-in-JIRA
- https://github.com/Casheu1/perplexity-2api-python
- https://github.com/Cherishpolyploid691/One-Player
- https://github.com/Cobras1934/task-calendar-dashboard
- https://github.com/CobraZero969/EU-Gov-Tracker-Blocklist-by-madnesscc
- https://github.com/cristiancctlv/recaptcha-botguard
- https://github.com/CuddlyPaws22/codeclaw
- https://github.com/DarkSliceYT/ai-infra-index
- https://github.com/DIMANANDEZ/refrag
- https://github.com/ejfhgo/hacker-Toolkit
- https://github.com/eltayep2/hoshan-vehicles
- https://github.com/eltayep2/india-district-nightlights-viirs
- https://github.com/fajarsm14/epic-games
- https://github.com/FILDA007/TokenStream
- https://github.com/freefire2chyko-a11y/openclaw-autotrader
- https://github.com/gage6903/son-of-claude
- https://github.com/GamerX3560/Aria-V-7.1
- https://github.com/GH8ST007/llms_with_google_cloud
- https://github.com/h4vzz/awesome-ai-agent-skills
- https://github.com/halim2023/Ninja-Ripper-2.13-Full-Download
- https://github.com/hama1981/ROBLOX-MACRO-V3.0.0
- https://github.com/haren2312/medusa-mobile-react-native
- https://github.com/hayate001/GliderUI
- https://github.com/hayate001/Zygisk-Il2CppDumper
- https://github.com/Hosk9612/venutian-antfarm
- https://github.com/IvannGonzzalez/hve-core
- https://github.com/Jacksonsmg/SoftwareTesting-Cunit
- https://github.com/jakariyaox-dot/mango-waf
- https://github.com/jayed50/cpp-dumper
- https://github.com/jessevanwyk1/claude-scholar
- https://github.com/Jonaskouame/Phone-Number-Tracker
- https://github.com/JoOdSy/mini-apps
- https://github.com/KemalFasa/discord-adapter-meme
- https://github.com/Ksalazar29/deepseek-claw
- https://github.com/linhkat3057/Valthrun
- https://github.com/Loune3213/Wazuh-Openclaw-Autopilot
- https://github.com/Lyrothanak20/Impacket_Reference
- https://github.com/marciunyielding712/openage
- https://github.com/MichaelQDLe/CodeHive
- https://github.com/Milan-sisodia-27/idl-pu3
- https://github.com/minullaksen/Amazon_Sales_Product_-_Revenue_Analysis_Excel
- https://github.com/mohadesehfllh/gatsby-ecommerce-theme
- https://github.com/mohadesehfllh/whispr
- https://github.com/mohamedfaro7/Chuks-YT-Live_AI
- https://github.com/MohamedSamiHdj/realtime-data-pipeline
- https://github.com/MPB0828/Greenhouse-Gas-Emissions-Forecasting-with-ARIMA-LSTM
- https://github.com/mreshuu/STForensicMacOS
- https://github.com/mrizky214/task-runner-1771921051-1
- https://github.com/MrKillerq/Mini-o3
- https://github.com/nonunion-loasa895/codapter
- https://github.com/okoid721/chloroDAG
- https://github.com/oliverkanda254/medusa-mobile-react-native
- https://github.com/omkargundle/claude-usage-bar
- https://github.com/pandu1992/agent-workspace
- https://github.com/Pataterustiche/tonconnect
- https://github.com/phongdshh-debug/Ghost-MSG
- https://github.com/Pr-E/openclaw-master-skills
- https://github.com/Ragulrajtcestd/LSTM-Optuna
- https://github.com/rakibul3790/mdexplore
- https://github.com/renny2020/Open-UI
- https://github.com/rushikeshjaware/DiffusionDriveV2
- https://github.com/sabalearning01/bread-run-simulator-toolkit
- https://github.com/sabalearning01/OpenClaw-RL
- https://github.com/Sawyer60/Dataset_HealthHub
- https://github.com/Seragatia/DocGenie
- https://github.com/Shavan889/minisforum-ms-s1-max-bios
- https://github.com/shmilymaria/VesperAIApp
- https://github.com/Shonpersus/founders-kit
- https://github.com/shripadk1999/EVOKORE-MCP
- https://github.com/sidiishan/soul.py
- https://github.com/silent-whisper/Hades-Stealer
- https://github.com/somya-droid/Pirate-LLM-Server
- https://github.com/Sriv4/insta-hack-termux
- https://github.com/stcitlab1/PyrsistenceSniper/
- https://github.com/syedabdullahuddin/n8n-workflow-sdk-mcp
- https://github.com/TalangoJames/fractals
- https://github.com/Tawhidhere/OneRec-Think
- https://github.com/therajeshpatil/home-assistant-global-health-score
- https://github.com/Tod-weenieroast366/coding-plan-mask
- https://github.com/twinklew9/notes2latex
- https://github.com/usernamedoxelghk/WindsurfSwitch
- https://github.com/Valentin6595/WhatDreamsCost-ComfyUI
- https://github.com/VantageSolutions/ShadowTool
- https://github.com/vickykumar11062/Replication-package-for-gender-and-regional-differences-in-scientific-mobility-and-immobility
- https://github.com/viktor820/AudioAuditor
- https://github.com/virginiadiom2000-ai/osv-ui
- https://github.com/vlsienthusiast00x/Spodrue
- https://github.com/wanderconnect01/ika-network-skill
- https://github.com/whydixit/cursor-starter
- https://github.com/WILLIAM86-CAPTAIN/gooey-search-tabs
- https://github.com/wtfhanin/Enhance-Prompt
- https://github.com/Xhtira20/scraped
- https://github.com/YahiaGrdh/vibe-agents
- https://raw.githubusercontent.com/deepanshugoel99/long/refs/heads/main/long/long/message1.txt
- https://raw.githubusercontent.com/deepanshugoel99/long/refs/heads/main/long/long/message2.txt
SHA256
- 012b49c7f60bbe0501e61fc62c9b7dd69be9bbf15cb36a840a293b3cb066b865
- 09e0f7616dfd2f7eb2876f6ef7331d6dbc78775acd594a94b0397a56717d1fcc
- 0a4bce0f0461335585550598ff33c40a389465f7d0094212bee40b7f525de123
- 10cbcb3fb25205a53ea9fe4fad46f45a349f7da8de22dd53a1ce16a920059720
- 12a09f9425cd4058956214b237ec82577c7b9ae15f323c28d3b4ad846d0d2f6b
- 13690a008d375908399e7f0bf8d1b4733498f1145166c7788fb9966c3b551b2f
- 167b166e26dd44f580a00f2c879089c5362eff5120ac88e0701b11b1eb320ca9
- 1aacc8cb9694293dc152891fc26de64a2061b31a066d297373cdc87da54b6fd8
- 212c76daf355ede116eb04d4f9d08a112d07940a14dc248bc568ff1ba0a64e18
- 2149a0c948d87f6a80ebb4abddf742c2383f59c7558a313caa0c0fd3bd3cdeef
- 2273702dfbcfd96a6ed7bdb42ba130291b653869256ec1325bc7fe30e8d9b70a
- 25aff351f5b4195f33e2fb862f71e3668e699f2311e7844e277b8256a6cb47c0
- 275275b5099a63724b6f525c1e9de082829e710078e8605c0286998b5a02e75d
- 2c3c4f1e3401c7baa804c21164b17a2ab50b3462ab09fcdccec35c8faa8e17fb
- 2d72abb33b8428a3a73fb64a03e6ac84595c4b1636f190f2936fadec3c8792f6
- 3217ae928395e00d873cccdf2adfa7828fe319fc84501453e702af91a0af2596
- 3299b85734e03cbb767d10f89384f666c35d6863198a7c6c0004ef19fcc76bc3
- 3595a6b226ce4daa0a28edea152b3a887c01f6323db1d082f6568c995cdefb55
- 3658fc38c10867e30e3c5c98a7a392e452a4ba497c8a674ff26554bc09f032b0
- 3989cdf958d258244f3a72bac594214112ffe1008d4d81233a5911482dd302ca
- 440ceb0dc5911faca54ed9a4dd186dad3d006ae4f52d0bb7d1e4b4edd8c3693a
- 44d5de84ee0c31517d114640ba9b9b307ea9e1ec4e591de42cbb4d07ceb5e6c3
- 4b3231da6ba13aa1e1eb8dd371e287bc18505273bca5bda80065c60b024549b8
- 54bbd79ed1ee26d3e7aa079963ba26c36aa683c01cc8b05b6d255da8634df006
- 572acf0d7a3801b9bc41f626bac781d75ea1f99770b176079ae5f9a347c09b78
- 58b98acb7dc26d8130c20b38ad040e5e7042eac38f12205248595697143c4297
- 592ec6f529721acbe07100c5386c58ca20fddfee7ac90280943fc2a61661e2be
- 59c2115caf3104184de6cbc64c4029886b7302e1fa58acc910a2c567222e8616
- 5b09803d2acbec734d9c88496f9590bb7cbaf5392607ef0f20f79fe177f7fd83
- 6b518855404b7281246aab93a46288b25f0cb0f09cdeb820e677ef615bf3fda4
- 768c28bff5e2ccd991a4a5cbfe3331015e3262cbc007829631483b46aa582cbc
- 76afe60e675e68906a2de61d45c46aa6502fe7f9c298260c226a4382744f4212
- 7e107cc2db66be4c9a90c2ef81f21ae2893962e1040531dff0305d9283f27387
- 7e8bd9ba64fcbd1cb753baa2f7bc8d5d7f3e91552bcdc9ec1ec04edd4916ff33
- 830ec7352972fd1eb24fcaf72349ef9a27dd9f26f24552d6b68b87ffeada1212
- 87de3e5a8ef669589c421220cd392ae8027a8f8d3cd97d35ac339f87dcff12c8
- 8b42ca9d05badf0e7327d816a56e5516431ae34627da68e12ae9347f365b2668
- 8cede35b80b1deaf732c2b178d908f91b3e7a0c114d06dfae9075b8a9bf78b8f
- 998e14a100d1f541f9fd59f4e58dd86e76fe7a105b02646d3487f18583d46c42
- 9de5dc4192a9dea43d9ff6289bb276bb3f2c244c15821b6d31fab90258b23149
- 9f6368bccedd005075fe991719719b0df5af22df697cab76aa6b4392d38394b1
- a50c4c26597cb4dc3ce340e1de0ec929b4a7ab0954a6ba214a32f158f01d6a8a
- a6fce76371d8b950b22bbea5a94d5688c19368979d06b2ef3c41f18ce6ada4c3
- a90898926236de8b574b50ef8c6c0411b193383d6db2214d73ead27c65867fd5
- a91b3308a7e9aa9fa660c72d27f226d8f50bfac2629f79a828fbecff323c0fe0
- a93ac4fb3f9dadc22f7b7f1877bc99b84a77fe3bbe560bdd20bbd7c4b6f9c1d6
- af6f59bd3caee5daa2d6765dd8c1bc167060a9681617ee1e2aff32f1eda3477c
- b04db6cae604d2ab1542e3c0cf1a4a3bb8d76562556f7275efe25bb90fc1da19
- b0f0b6e38f77c518ebfaf691d729636d82cc59dc2a329d7454e11f74a2cb2d3f
- b599a00d1226f6e0d433bf9be89958d6d4600a365c8e16bd86b4603e2552bf37
- bbd438d3d7a59152f1dd5e45bb8d22ee1c07f95cfe42cebbe756aaf4feadc875
- bc95563880f17f4c3fc0fd8d3f7abc37b14ffb3daa627f92d5bd0b4f457d54e2
- bff0904456e3151221d29ed1d7c88fc31587efbdfb28817cdcb7ec7f20cade21
- c324560d4310849fd6b86e126514b20512905eee7ee94a2152f4314bb4055649
- c3b56d68c80c4a6a9879c45a7761a538e3546644623af1ee469d3b70130fa0cd
- c7b71a992c6ca1467164b643136d986c0eec28548f30533456a3ea0f442c85a8
- cd4d2b6dc9c764c3f2b2b003bce035053a8ce81420c7ea886c76611219cae4ae
- ce1e33483d353200a266b3bc383ccf500e5a760c6dcd8218747260f5bbe39509
- d067cacea4ec623dc715c27ff7568d14988af0be1f3db32d332f27744114f9ba
- d142be1fc9a7eec7ec26aeea75e5f7a175c4ab9b2ee36b958280873bc3861b2e
- d1557bc3f5d8542f9b7f8e80b02283397d2e437386a6662251c4fc7342167cda
- d56213d08fb10c880f17e1a262bf1176cf234d1fc591188171e7be9cd856eb12
- d8469b109bb22ad367c19971e1065074527af144d4c1e7d7a4cfb0f2d6e12767
- d92ac938494c2c74c73f3ca28c5c7148d0a03024b46630192a9348259b7b3665
- e12e7d4d7c5ccf825c9c0ba3af32a9d575d1624ad6e3998e7a71c3e0939c0d61
- e1e6e28bc665b242fd4b496caf2542042d5720e87ea74551735664c202c486c7
- e450152d8dd9f7d2d92dbd53461a38ee8f154b69b2558ed43b5d3f603a43240a
- e69873a3ef03b289aba8a0ec7130247dc5f2a3ce8c3b647b44518a899f39f789
- ebe63bd7715e7b2ff0b25c9bb6540a904f7195fb9fb2d405bd0cb5c0c4d34476
- f3e34c9e36f3be065d80d456281d31dd1cc85eb4980db7fa8c1b0eb6f29c25d8
- f5bdf3d6c1376476b0d9eb0e74aa5aa8ccc7378068531c8346d76fbef04c6a6e
- f6d10e879324c36914002ebd989e1a6fdc50e29257078a95e975f18b42f69836
- f9436ccb986760ca379d6cd2f00726e032a1d9c250a9bd261d40d98b914e7ef9
- fad3d429172932b72e50f52af169a80439464e3538d97810509090e2e6cdf32a