Разработчиците на свободната система за управление на съдържанието Plone, написана на Python и JavaScript/NodeJS, обявиха инцидент, при който в git-репозиториото на проекта в GitHub е добавен злонамерен код. Първоначално в репозиториото бяха открити три изменеия, появили се на 7 януари (1, 2, 3), които добавят злонамерен код в JavaScript файловете на проекта (1, 2, 3). Анализът на инцидента показа, че интеграцията на злонамерения код е резултат от компрометиране на акаунта на един от разработчиците, чийто достъпен токен е бил завладян от злонамерени лица след изпълнението на злонамерен софтуер в неговата система.
На 14 януари компрометираният акаунт бе блокиран, а на разработчиците на проекта беше препоръчано да анализират комитите от 1 до 14 януари. На 27 януари беше установено, че проблемните комити не се ограничават само до това, а атаката е засегнала пет репозитория на проекта (plone/volto, plone/mockup, plone/plone.app.mosaic, plone/critical-css-cli, plone/plonetheme.barceloneta), в които незабелязано е бил интегриран злонамерен код. При репозитория plone.app.mosaic, атакуващите успяха да подменят master клон. Атака беше проведена два месеца след завземането на токена за достъп на разработчика.
За интеграция на промените вместо обичайни комити, атакуващите използваха операцията „force push“ (git push с опция „—force“), позволяваща принудително да се замени клонът във външното репозиторио с тяхното съдържание и, съответно, да се препише историята на промените (след замяната се показва история от клона, качен от атакуващия). За предотвратяване на подобна подмяна на клонове в бъдеще, разработчиците на Plone активираха в GitHub правила, блокиращи операции „force push“ за основните клонове и тагове.
В репозитория plone.app.mosaic за затруднением выявления компрометации атакующие подставили в master-ветку зловредный коммит с фиктивной датой — 18 декември, предполагая, че областта на търсене на зловреден код ще бъде фокусирана върху промените, добавени след тяхната първа активност в репозитория. Зловредната промяна била представена в подменения коммит като начало на разработката на нов тестов релиз, но освен смяната на версията в метаданните (от 4.0.0a1 на 4.0.0a2.dev0), в извиквания файл по време на компилация javascript prettier.config.js е добавен зловреден код. За да бъде скрит при прегледа на промените в терминала, кодът бил добавен в една линия с легитимна операция и изместен извън видимата област с помощта на интервали. В интерфейса на GitHub този код също не се показвал по подразбиране и изисквал натискане на бутона „Load Diff“.

Атаката била насочена повече към разработчиците на проекта, отколкото към потребителите. Зловредните промени не били включени в релиза. Зловредният код се активирал по време на компилация, изтеглял експлойти за повишаване на привилегиите, конфигурирал автоматично стартиране чрез извикване на собствените си процеси от стартиращите скриптове и позволявал дистанционно управление. сървъра.. Освен това, инсталираният зловреден компонент извършвал търсене и изпращане на конфиденциални данни, като токени за достъп, профили на браузъри и ключове за криптокошници.
Източник: opennet.ru
