Сябры, сёння будзе балючы, але вельмі павучальны пост. Галоўнае правіла любой інфармацыйнай бяспекі — рэгулярна абнаўляць праграмнае забеспячэнне. Мы пастаянна пра гэта кажам як звычайным карыстальнікам, так і тым хто займаецца самахостынгам. Але што рабіць, калі каманда блога пра бяспеку сама становіцца ахвярай, бо своечасова не ўсталявалі новую версію? Вось вам гісторыя пра тое, як іронія лёсу пагрукала ў нашы дзверы.
Што адбылося?
Пакуль мы былі заняты іншымі праектамі, недзе ў старым кодзе нашага рухавіка для блогаў хавалася трывіяльная дзірка. Праз вядомую ўразлівасць да SQL-ін'екцыі (так, прызнаемся, мы адставалі на мажорную версію) хакеры змаглі ціха і элегантна выкрасці адміністрацыйны API-ключ інтэграцыі з Zapier.
Самае смешнае ва ўсёй гэтай сітуацыі? Мы гэтай інтэграцыяй ніколі ў жыцці не карысталіся. Зламыснікам нават не спатрэбілася прабіваць абарону сервера ці падбіраць паролі да адмінкі — сістэма сама гасцінна адчыніла ім дзверы праз стары API.
Што яны нарабілі
Выкарыстоўваючы выкрадзены ключ, няпрошаны госць пакінуў некалькі «падарункаў» якія мы знайшлі праз некалькі дзён:
- Масава быў дададзены шкоднасны код (Code injection) ва ўсе існыя пасты і старонкі, які адлюстроўваў дадатковы кантэнт паверх, які не быў запланаваны намі:

Знешне элемент нагадвае звычайны сэрвіс reCAPTCHA, цалкам капіруючы яго дызайн. Аднак пры спробе прайсці праверку скрыпт імітуе збой злучэння і выдае карыстальніку фэйкавую інструкцыю. Нібыта для аднаўлення доступу да сайта трэба «абнавіць сертыфікаты бяспекі» або «выправіць памылку браўзера».
У гэты ж момант, выкарыстоўваючы JavaScript-функцыю доступу да буфера абмену, сайт незаўважна для чалавека дадае туды тэкст з чаргой шкодасных каманд. Ахвяра, прытрымліваючыся інструкцый на экране, самастойна адкрывае «Камандны радок», устаўляе туды змесціва буфера і націскае Enter.

Пад выглядам «абнаўлення» ў сістэме запускаецца абфускаваная (зашыфраваная) каманда PowerShell. Яна наўпрост звязваецца з камандным серверам зламыснікаў, спампоўвае другасны шкодасны код і выконвае яго адразу ў аператыўнай памяці ПК, цалкам абыходзячы стандартныя антывірусы і перадаючы кантроль над камп'ютарам зламыснікам.
Спадзяёмся ўсе з нашых чытачоў былі гатовыя для такой незапланаванай праверкі ўвагі і не трапілі ў пастку. Калі вы ўсё ж запускалі невядомыя каманды, абавязкова праверце ваш ПК на наяўнасць шкоднага ПЗ і звярніцеся за падтрымкай да спецыялістаў!
Праца над памылкамі
Першай справай сабралі логі і даныя whois па серверы з якога распаўсюджваўся шкодны скрыпт. Паколькі махляры хаваліся за Cloudflare, мы накіравалі афіцыйныя abuse-скаргі па працэдуры DSA (Digital Services Act) у Cloudflare, Google, Microsoft і рэгістратару дамена з прыкладамі і апісаннем здарэння:


Для адпраўкі скаргі калі шкодасны сайт выкарыстоўвае Cloudflare
Для адпраўкі скаргі каб шкодасны сайт быў пазначаны Google як небяспечны
Для адпраўкі скаргі каб шкодасны сайт быў пазначаны Microsoft як небяспечны
Каб аднавіць сам блог была выкарыстана рэзервовая копія. Так, рэзервовыя копіі таксама вельмі важна рабіць своечасова і мы былі падрыхтаваныя да такой сітуацыі, акрамя аднаўлення блога да ўзлому мы:
- Паднялі версію Node.js, абнавілі
npm,ghost-cliі саму сістэму да актуальнай версіі Ghost v6.49.0 - Выдалілі ўсе api-ключы якімі не карысталіся і перагенеравалі ключы якія адказваюць за адмінскія магчымасці
- Зрабілі аўдыт уліковых запісаў і перагенерацыю токенаў доступу і пароляў
- Дадаткова наладзілі WAF каб пазбегнуць паўтарэння сітуацыі
Высновы
Урок засвоены, калі 95% праграм і сервісаў абнаўляць сваечасова, то менавіта тыя 5% могуць стаць адкрытай брамай для махляроў.
Трэба трымаць софт у тонусе. Бо нават самыя крутыя архітэктурныя рашэнні не працуюць, калі забыцца на банальнае абнаўленне.