Преглед на приватноста

Оваа веб-страница користи колачиња за да ви обезбеди најдобро можно корисничко искуство. Информациите за колачињата се складираат во вашиот прелистувач и извршуваат функции како препознавање кога се враќате на нашата веб-страница и им помагаат на нашите програмери да разберат кои делови од веб-страницата ви се најинтересни и најкорисни.

Строго неопходни колачиња

Строго неопходните колачиња треба да бидат овозможени во секое време за да можеме да ги зачуваме вашите поставки за колачиња.

Хакери ги компромитираа bee-js и Swarm Desktop на Ethersphere за дистрибуција на малициозен софтвер што краде крипто-паричници

Напаѓачите ја злоупотребиле сопствената автоматизација за објавување нови верзии на проектот Ethersphere за да дистрибуираат малициозни верзии на две негови алатки за децентрализираната мрежа за складирање податоци Swarm: bee-js 13.3.0 и Swarm Desktop 0.56.2.

Двете верзии преземаат и извршуваат код дизајниран за кражба на приватниот клуч од крипто-паричникот што Swarm Desktop го чува за својот јазол (node), заедно со зачуваната лозинка потребна за негово отклучување. Кодот е дизајниран и за инсталирање задна врата (backdoor) на системи со Windows, macOS и Linux.

Пакетот bee-js е JavaScript-библиотека што стои зад Swarm Desktop и алатката за командна линија swarm-cli. Swarm Desktop овозможува извршување Swarm-јазол на сопствениот компјутер на корисникот и ги зачувува приватните клучеви на тој јазол локално.

Двете малициозни верзии се повлечени, а одржувачите на проектот денес објавија чисто ажурирање на Swarm Desktop. Сепак, ниту еден од овие чекори не ја отстранува веќе инсталираната задна врата, ниту ги заштитува клучевите што веќе биле испратени до напаѓачите. Во моментот на објавување на написот, немало пријавени случаи на кражба на средства.

Swarm Desktop 0.56.2 се појавила на GitHub денес околу 00:36 UTC, а била повлечена приближно 8,5 часа подоцна. Според анализата на инцидентот објавена од компанијата Socket, специјализирана за безбедност на синџирот на снабдување со софтвер, вградениот механизам за автоматско ажурирање на апликацијата можел да ја понуди оваа верзија на Windows x64-компјутерите и Mac-компјутерите со Apple Silicon во рок од околу 10 минути. На Intel Mac-компјутерите никогаш не им била понудена, додека инсталациите на Linux не се ажурираат автоматски.

Верзијата 13.3.0 на bee-js била најновата верзија достапна на npm околу 75 минути, од 00:09 до 01:25 UTC денес. Нејзиниот код се извршува како postinstall-скрипта, која npm автоматски ја активира при инсталација, освен ако скриптите за инсталација не се оневозможени. За извршување на малициозниот код не било потребно проектот воопшто да ја вчита библиотеката.

Сопствените пакети swarm-cli и bee-dashboard на проектот, како и изворниот код на Swarm Desktop, прифаќале опсези на верзии во кои била вклучена и верзијата 13.3.0. Тоа значи дека секоја нова инсталација во тој временски период можела да ја преземе малициозната верзија.

Ниту еден од извештаите не наведува колку компјутери биле инфицирани. Компанијата Socket проценува дека bee-js 13.3.0 била преземена околу 10 пати, вклучувајќи ги и преземањата од безбедносни скенери и сервери-огледала (mirrors). Бројот на преземања на Swarm Desktop 0.56.2 достигнал 65 до 08:27 UTC, вклучувајќи ги и преземањата од истражувачите.

Одржувачите на Ethersphere ја повлекле верзијата 0.56.2 и денес ја замениле со чиста верзија на апликацијата – 0.56.3. Во измената со која било подготвено новото издание, еден од одржувачите напишал дека верзијата 0.56.2 „била објавена од напаѓач кој користел украдени CI-акредитиви и потоа била повлечена“.

Според забелешката за инцидентот објавена од одржувачот, верзијата 0.56.3 го содржи истиот код како претходната верзија 0.56.1, но е потпишана со новоиздаден Developer ID-сертификат. Во забелешката се наведува дека механизмот за автоматско ажурирање на апликацијата ќе ги надгради инсталациите на верзијата 0.56.2 до новата верзија, иако пакетите за Linux сè уште мора рачно да се заменат. Споредба на изворниот код на двете верзии, направена од The Hacker News, не открила никакви промени освен бројот на верзијата и белешките за изданието.

При проверката на npm денес, The Hacker News утврдил дека верзијата 13.2.0 повторно е најновата верзија на bee-js, додека верзијата 13.3.0 повеќе не може да се преземе од регистарот.

Што треба да направите

Во безбедносното известување на GitHub за bee-js 13.3.0 се наведува: „Секој компјутер на кој овој пакет е инсталиран или се извршува треба да се смета за целосно компромитиран.“

Компанијата SafeDep, која се занимава со безбедност на синџирот на снабдување со софтвер, дава ист совет за секој компјутер на кој била инсталирана верзијата 0.56.2 на Swarm Desktop.

Доколку користите bee-js во проект или CI-процес:

  • Проверете ги датотеките со заклучени верзии (lockfiles), кешираните пакети, интерните регистри и CI-логовите за инсталација за присуство на @ethersphere/bee-js@13.3.0, вклучувајќи ги и копиите преземени како зависности преку други пакети.
  • Фиксирајте ја верзијата на 13.2.0 и избришете ги сите кеширани копии на верзијата 13.3.0, вклучувајќи ги и копиите на npm-серверите-огледала преку кои вршите инсталација.
  • Доколку верзијата 13.3.0 била инсталирана со овозможени скрипти за инсталација, сметајте дека тој компјутер или CI-извршувачка околина (runner) е компромитирана, дури и ако во логовите за инсталација нема прикажани грешки. Малициозниот код ги прикрива сопствените мрежни грешки.
  • Од чист и безбеден компјутер, сменете ги сите лозинки, токени и клучеви до кои можел да пристапи корисникот што ја извршил инсталацијата или CI-процесот.

Доколку користите Swarm Desktop:

  • Побарајте ја линијата Bee Desktop version: 0.56.2 (production) во лог-датотеката на апликацијата bee-desktop.log. Верзијата 0.56.2 се запишува при секое стартување на апликацијата, непосредно пред извршувањето на малициозниот код.
  • Папката со логови се наоѓа на следните локации:
    • macOS: ~/Library/Logs/Swarm Desktop/
    • Windows: %LOCALAPPDATA%\Swarm Desktop\Log\
    • Linux: ~/.local/state/Swarm Desktop/
  • Инсталирајте ја верзијата 0.56.3. Кај Linux, пакетот мора рачно да се замени.
  • Доколку верзијата 0.56.2 некогаш била извршена, сметајте дека клучот на јазолот и лозинката се украдени. Од чист и безбеден компјутер, префрлете ги средствата на јазолот, средствата од chequebook и вложениот удел (stake) на нов клуч.

На секој компјутер на кој бил извршен малициозниот код:

  • Избришете ја папката ~/.solidity/, корисничката системска услуга solidity-langsupport-runner.service на Linux, LaunchAgent-от com.solidity.langsupport.runner на macOS и услугата ScreenConnect Client (5cbe79c9c25524df) на Windows.
  • Ажурирањето, повторната инсталација или отстранувањето на апликацијата или пакетот нема да ги отстрани овие компоненти.
  • Каде што е можно, повторно изградете го системот користејќи проверена и доверлива системска слика, наместо да се обидувате да го исчистите постојниот систем.

Како функционира малициозниот софтвер

Двете компромитирани верзии го содржат истиот механизам за преземање и извршување дополнителен малициозен код (loader), утврдила компанијата SafeDep во својата техничка анализа.

Станува збор за неколку линии код што преземаат дополнителен код од серверот api.frameworkmetrics[.]xyz и го извршуваат со привилегиите на корисникот. Кај bee-js, овој механизам е поставен како postinstall-скрипта, додека кај Swarm Desktop се извршува секогаш кога ќе се стартува апликацијата.

Преземениот код пребарува две датотеки во папката со податоци на Swarm Desktop: config.yaml и data-dir/keys/swarm.key. Доколку ги пронајде двете датотеки, ги испраќа до серверот на напаѓачите.

Датотеката со клучот претставува шифриран Ethereum keystore, но Swarm Desktop ја чува неговата лозинка во обичен, нешифриран текст во датотеката config.yaml. Со пристап до двете датотеки, напаѓачите можат да ги украдат токените xDAI и xBZZ од крипто-паричникот на јазолот, средствата од неговиот chequebook, како и вложениот удел (stake), наведува компанијата.

Преземениот код инсталира и задна врата. На Linux и macOS системите, станува збор за Go-алатка за далечинска командна школка (remote shell) наречена evjawbreaker, која се зачувува во скриена папка ~/.solidity. Таа работи во заднина како корисничка системска услуга на Linux и како LaunchAgent на macOS.

Алатката ја презема адресата на својот контролен сервер од Ethereum паметен договор (smart contract), што им овозможува на напаѓачите да ја менуваат адресата во секое време. Тие ја ажурирале адресата 29 минути пред малициозниот код во bee-js да биде додаден.

На Windows, преземениот код инсталира легитимен ScreenConnect-клиент за далечински пристап, потпишан од неговиот производител ConnectWise. Клиентот работи како системска услуга и се поврзува со серверот за пренасочување на напаѓачите.

Доколку корисникот има администраторски привилегии, малициозниот код добива администраторски пристап преку познат начин за заобиколување на барањето за потврда од User Account Control (UAC). Доколку корисникот нема такви привилегии, барањето за потврда повторно се прикажува секогаш кога корисникот ќе го откаже. По добивањето на потребните привилегии, кодот додава исклучок во Microsoft Defender и тивко го инсталира клиентот.

Како биле објавени малициозните верзии

Двете компромитирани верзии биле објавени преку сметката bee-worker, која Ethersphere ја користи за автоматизирање на процесот на објавување нови верзии. Ниту една од измените не била потпишана, ниту доставена преку барање за спојување на код (pull request).

Кај bee-js, напаѓачите објавиле нова верзија на GitHub, со што автоматски бил активиран работниот процес на проектот за објавување пакети на npm. Според Socket, овој процес не барал никакво одобрување и го објавил пакетот на npm за само 73 секунди.

Бидејќи пакетот бил изграден преку вистинскиот работен процес на проектот, тој содржел валидни податоци за потеклото (provenance) – запис што ја поврзува npm-библиотеката со складиштето на изворниот код и работниот процес преку кој била изградена. Сепак, овие податоци покажуваат каде бил изграден пакетот, а не дали некој го проверил кодот што го содржи.

Кај Swarm Desktop, напаѓачите рачно активирале процес за изградба на апликацијата (build workflow), кој ги имал на располагање сертификатите за дигитално потпишување за Apple и Windows и не барал никакво одобрување. Апликацијата за macOS била потпишана со Developer ID-сертификатот на проектот и добила нотарска потврда од Apple, поради што macOS го прикажувал само вообичаеното предупредување при првото стартување, утврдила компанијата.

Одржувачите на проектот оттогаш вовеле промени според кои процесите за дигитално потпишување на апликацијата мора да чекаат одобрување од DevOps-тимот на проектот и да се извршуваат исклучиво од главната гранка (main branch).

Во моментот на објавување на написот, сè уште не било јасно како напаѓачите добиле пристап. Во забелешката за инцидентот, еден од одржувачите ја наведува кражбата на CI-акредитивите и тајните податоци како причина за компромитирањето.

Анализата на компанијата покажува дека биле користени две GitHub-сметки: bee-worker и сметката на еден од долгогодишните одржувачи на проектот. Ниту еден од извештаите не објаснува како биле украдени акредитивите.

Поврзаност со претходни напади

Малициозните payload-и користат ист Ethereum-паметен договор, ист сервер за пренасочување на ScreenConnect и исти имиња на датотеки со лажни екстензии, наменети за Solidity-програмери. Овие елементи претходно биле забележани во екстензии објавени на маркетплејсот Open VSX во септември.

Истражувачите од Pluto Security ги опишале овие екстензии во нивната анализа на 1 октомври, наречена EtherDuck.

Pluto со „високо ниво на сигурност“ ги поврзува екстензиите со групата што стои зад оригиналната екстензија SleepyDuck, која во 2025 година ја преземала адресата на својот сервер од друг Ethereum-паметен договор. Компанијата Socket наведува дека истата група стои и зад компромитираните верзии на bee-js и Swarm Desktop.

Индикатори за компромитирање (IoC)

Безбедносните тимови можат да ги пребаруваат логовите и системите за следните индикатори:

  • Домен: api.frameworkmetrics[.]xyz
  • URL-патека: /v1/analytics (loader за bee-js)
  • URL-патека: /v1/electron (loader за Swarm Desktop)
  • URL-патека: /v1/assets/ (дополнителни payload-и)
  • URL-патека: /v1/swarm/report (украдени датотеки од крипто-паричникот)
  • HTTP-заглавие: X-Ethersphere: 1
  • IP-адреса и порта: 193[.]57[.]9[.]155:4912 (контролен сервер на evjawbreaker)
  • IP-адреса и порта: 185[.]232[.]84[.]169:8041 (ScreenConnect-сервер за пренасочување)
  • Ethereum-паметен договор: 0xf8a900Db50b3331be6B768bA460BB59f3E40C344
  • Патека: ~/.solidity/
  • systemd-единица: solidity-langsupport-runner.service
  • LaunchAgent: com.solidity.langsupport.runner
  • Услуга: ScreenConnect Client (5cbe79c9c25524df)

SHA-256 хеш-вредности:

Датотека / платформаSHA-256
linux_amd649b73e7cd4e1425e770392549d8df46c706139ef476f4f7b9ac405165dc8d9696
linux_arm64b601776817363b96295119f7221338a122d5247a35a77a64b04f286e1bbcc565
darwin_amd6480d2672e2599732d3c0ae2a4cd0d1e3fe4d555a60273ce33feb99db3f34d250f
darwin_arm64fae61f31f00988fdc5cc9e7272b51e08af2e245d81003237875415930fd27358
invoke.ps137d14bff30762ca701e9c1f8bc6c57c065bb20ae3a2208cb7411a6530610f08e
app.msi7527e86d70e7c9493db4356f1c3775380431b310000f2602c1e993cf435d01da

Извори:

  • The Hacker News – Hackers Compromise Ethersphere’s bee-js and Swarm Desktop to Deliver Wallet-Stealing Malware The Hacker News