Злоумышленники смогли выполнить код с правами обработчика GitHub Actions в репозитории Python-библиотеки Ultralytics, применяемой для решения задач компьютерного зрения, таких как определение объектов на изображениях и сегментирование изображений. После получения доступа к репозиторию атакующие опубликовали в каталоге PyPI несколько новых релизов Ultralytics, включающих вредоносные изменения для майнинга криптовалют. За последний месяц библиотека Ultralytics была загружена из каталога PyPI более 6.4 млн раз...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=62365
красиво, чо...компьютерное зрение удачно выбрано
> в секции "run" файла action.yml, в котором присутствовали shell-командыКлассика жанра.
Неа. Классика жанра - это "в shell-команды без должного экранирования"
Тут как-то мелькнула новость о взломе чего-то, когда в аргументы шелл-команды злые хакеры пропихнули что-то своё в виде эскейпнутых 16-ричных кодов. Проверка такую строку пропустила, а шелл преобразовала кода обратно в символы и выполнила команду хакера.
Вообще, использовать run (оно же в разных языках command, system и пр.) - это такой же моветон, как goto в си. Но подтянуть либу и дёрнуть функцию из её - это слишком сложно, поэтому рядовой юзер тупо прописывает привычную командную строку в аргументе run.
>Тут как-то мелькнула новость о взломе чего-то, когда в аргументы шелл-команды злые хакеры пропихнули что-то своё в виде эскейпнутых 16-ричных кодов. Проверка такую строку пропустила, а шелл преобразовала кода обратно в символы и выполнила команду хакера.Неправильно реализовали экранирование
>Но подтянуть либу и дёрнуть функцию из её - это слишком сложноЭто не всегда возможно, так как библиотеки может просто не быть для нужно языка, а склеивать несколько языков будет сложно.
Классика жанра - это диды, пишущие скрипты на баше, но так и не научившиеся эти скрипты писать безопасно. А потом, они ещё и рассказывают, что баш выучить легче чем nix.
Так а на чем надо писать?
> Так а на чем надо писать?На лиспе разумеется.
Если нет - на руби.
Если ну уж сильно не нравится, то даже питон будет лучше баша.Вообще сложно представить что-то, что будет хуже баша.
На бумаге, на бумаге!
> Вообще сложно представить что-то, что будет хуже баша.В Bash скриптах участие самого Bash минимально. В основном, shell скрипты - это запуск UNIX утилит и других программ и обработка их вывода. Использовать тут что-то другое, кроме Shell синтаксиса (будь то Bash, ZSH, KSH, Fish и тп оболочки, не важно) выглядит как Overkill. Даже Pythion overkill, для этих задач.
Там не важно на чём писать, там исходный код (в данном случае баш-выражение) генерируется через текстовый шаблон. Если ты даёшь пользователю возможность в этот шаблон подставлять что угодно без экранирования, то это - дыра. Хоть в лисп, хоть куда.То есть претензии к А) шаблонизатору, Б) гатхаб акшонам, которые хотят на вход беш-выражение.
Но-но-но! Вот не надо тут насчёт дидов и баша, тут не тема не про sysvinit!
Молодняк держится вполне вровень с дидами насчёт вызова шелл-команд из других языков. Когда надо что-то сделать с какими-то данными, проще всего вколотить знакомую строку в аргумент для run, чем импортировать .so'шную либу и вызвать из неё нужную функцию. Проще загнать аргументы одной строкой "--key1 value1 --key2 value2", чем составлять массив туплов [("key1","value1"),("key2","value2")], проще принять и обработать exit code от run, чем ловить крах вызова функции. А потом приходит расплата за лень.
Хорошо, очень хорошо, просто замечательно!
Ну для тех кто не делал открытого софта это может и хорошо, а мне как-то не очень.
Это ошибочное мнение, что для того, чтобы делать открытый софт, нужно подлезть под Майкрософт с его финишовым поделием.
твой хеловрот к сожалению уже написан. А чтобы делать софт делаемый большими командами - нужно либо еще одну команду - профессиональных админов, плюс заставлять бедных неженок у которых так не хватает времени и сил на копипасту со стековерфлова учиться непривычным то языкам, то инструментам, а то ж они и патч оформить не смогут.Плюс (то есть минус) что за теми инструментами не стоит microsoft с миллиардными зарплатами, и они в общем-то быстро устаревают не успевая угоняться за модными тенденциями.
Очень интересно, в какой компании вы работаете...
Это ошибочное мнение, что для того, чтобы делать открытый софт, нужно обязательно использовать какой-то публичный сервер Git. Можно поднять его на собственной инфраструктуре. Так и поступают некоторые проекты.
Если проект небольшой (как в моем случае - личный), то публичный репозиторий можно использовать только для распространения СПО.
> Если проект небольшой (как в моем случае - личный), то публичный репозиторий можно использовать
> только для распространения СПО.угу - тебе открывают issue - ты его закрываешь "идите на мой ценный... а, впрочем, нет у тебя - вон в мэйл идите письма писать на деревню спамотcocину", пулреквест ? нахрен тот пулреквест, не так подан! Особенно для твоего хеловрота с полутора заинтересованными лицами это будет здорово. От тех полутора и половинки не останется (потому что никто никуда, разумеется, не пойдет, не так подано - ну и не пользуйся)
А если ты ничего такого не делаешь, за сообщениями следишь, пул-реквесты на шитхапе или шитляпе рассматриваешь - ну так поздравляю, теперь ты держишь ДВА сервиса, и тебе их еще и синхронизировать надо.
А собственную инфраструктуру содержать - довольно дорого, внезапно, обходится. Причем ладно б только в материальном плане - но можно и репутацией поплатиться. Вон афтыри php наглядный тебе пример показали. И раз у тебя уже есть одна, которую поддеживает дядя - рано или поздно ты вынужден будешь "принять сложное решение", и зарезать прожорливого порося, от которого никакой пользы нет.
Дивный новый мир. В нём миллионы автоматически цепляющихся из централизованных гитов зависимостей, ленивых разработчиков, чрезмерно интегрированных IDE, и забрасывание релизов старше 10 минут. Владелец реймворка правит миром. Update or die.Как это мило когда они страдают. :3
И они ещё и отрицают докер. Хотя тут минималка это отдельная виртуалка на отдельном сервере.
Docker платный и 100% гарантию не даст. И rust ваш не даст от таких атак гарантий. Кто-то ранее писал о переполнении - при чем тут переполнение? Ещё не известно что именно повлияло на конечный результат. Microsoft вообще любители нанять индусов и развести культуру качества по количеству кода у них, хоть официально вроде от этого отказались, тем не менее некоторые индусы и после этого жаловались. Они как найдут какой-нибудь способ что-то делать и везде его применяют не задумываясь о безопасности или целесообразности чего-либо применять. А потом жалуются.
Кому и зачем вы платите за докер?
Ну не все компании Microsoft в России созданы. По законодательству некоторых стран лицензионное соглашение для коммерческого использования подразумевает оплату. Если вы политик, то конечно могли бы принять закон о том что в России отменяются американские законы и на их серверах можно спокойно размещать Docker, возможно даже все сервера мира Microsoft перетащит в Россию, куда-нибудь под Нью-Васюки для того чтобы пользоваться Docker бесплатно.
ну що, сынку, допомогла тоби твоя двоххвакторка?интересна цель атакующих, кстати
>в shell-команды без должного экранирования подставлялось название Git-ветки, упоминаемой в pull-запросе.Переводя на обычный:
Выполни код, на который указал незнакомец.
А какую крипту майнили?
Печально, что у таких "раздалвателей" 6 млн загрузок.
Крипта сама себя не намайнит.