Предупреждение для Unity-разработчиков
Из телеграм-чатика Геймдев, который мы заслужили (BK) предупреждение для Unity-разработчиков (ссылка):
Мне тут сообщили, что новая версия Unity Hub содержит в себе npm-модуль с вредоносным кодом, который может заменить все содержимое файлов на компьютере на эмодзи сердечек с 25% шансом. Как пишут на Github, это затрагивает все системы с IP из России и Беларуси.
Так что воздержитесь от всех обновлений Unity Hub до нужных хотфиксов (должно быть починено в 3.1.1 по словам Unity).
Почитать про подробный механизм работы этого кода можно вот здесь.
- 17 марта 2022, 18:48
- 01
Спасибо. Я ожидал чего-то подобного. Вообще страшно сейчас что-либо обновлять в принципе.
Смешно. Как-то читал статью про то как легко написать npm-модуль, который сворует данные карты. Вот так и пользуйся опенсорсным Nodejs и модулями к нему.
Написать можно всё что угодно, но ты ведь понимаешь, что протолкнуть свои доработки в фреймворк не так легко. Сообщество доверяет друг другу, но проверять всё равно надо на ошибки, конфликты и т.п. (сколько, думаю, всяких майнинговых штук было). А тут как разработчики Vue промахнулись, так и компания Unity. Ведь не только движок оказался «скомпрометирован», а довольно популярный фреймворк, который используется и в других ПО. Часть доверия утрачено, люди сразу начнут подозревать, а что ещё могло «проникнуть» в их ПО.
Открытый исходный код тем и хорош, что подобные вещи может обнаружить любой и сообщить об этом. Можно просто исправить в своей версии и продолжать работать. С проприетарным ПО никто, кроме компании-разработчика ничего сделать не может и на всё их воля.
В зависимости от уровня огласки такого инцидента может возрасти уровень проверки Pull Request`ов от сторонних пользователей. Это замедлит развитие, но улучшит качество, я надеюсь.
На самом деле протолкнуть легко. Вот эта статья, если интересно.
С опенсорсом сами исходники можно проверить. С закрытым ПО - нет.
Другой вопрос - а будет ли вообще кто проверять? Ты думаешь, среди 100-200 тыс. пользователей хоть кто-нибудь смотрел исходный код хоть одного используемого проекта? А проверял ли, а вникал ли в код? В этом и проблема.
Даже если сравнивать кол-во скачиваний готовых сборок и архивов с исходниками, то разница будет в 2-3 порядка.
Вот хорошо что кто-то вник, разобрался и обнаружил закладку. Или, может, сам автор признался.
Сколько таких еще закладок сидит только потому что их никто не ищет?
Как показывает практика, никто не проверяет опенсорсные исходники. Это дорого, а мир капитализма не терпит издержек на ерунде. Готовый код испольюзуют как раз потому что он готовый, отлаженный и не нужно проверять. Проверка опенсорнсого кода ломает если не всю то половину идеи опенсорности. Может быть есть какие-то компании которые реально всё это чекают, но это скорее исключения. Так что в среднем по больнице с точки зрения рисков попасть на вредоносный код больше именно в опернсорсе. И ещё учитывай такой факт, что когда ПО закрыто - ты можешь спросить с компании, которая это ПО сделала, а если говорить про "гипотетические" возможности то и в суд подать, а в опенсорсе когда какой-нибудь аноним свинью подложит с кого спрашивать?
Так и тут спрашиваешь с компании, но с той, которая использовала без проверки данное решение. В ситуации из поста, к кому будут предъявлять претензии в первую очередь разработчики игр? К компании Unity. А вот с кого они будут спрашивать, это их проблемы. Они ведь допустили данный код в свой коммерческий продукт. И так всегда, если ты используешь в своём проекте чьё-то решение, то ты ответственный за это. У многих проектов есть автор, есть core-команда, кто сливает PR с мастер-веткой и спрос с них.
И снова, за счёт кода, ты можешь сам исправить, изменить и использовать как тебе это надо. Либо принимай на веру то, что даёт тебе компания в закрытом ПО, либо свой велосипед (и даже в этом случае, некоторые решения ты можешь почерпнуть из проекта с открытым кодом).
Во всех коммерческих лицензиях, что я читал (да, прикинь, я читаю лицензионные соглашения) написано одно и то же - "поставляется 'как есть', не несем никакой ответственности за упущенную выгоду, бла-бла-бла, максимум что вам можем компенсировать - стоимость лицензии".
То же самое - в GPL (за исключением стоимости лицензии, конечно).
Не, тут нужно разделять упущенную коммерческую выгоду и конкретный "вред". Если у тебя закрытое ПО работает с ошибками то это то самое "as is", а если оно стилит данные твоих карт - это совсем другое и тут даже уголовная ответственность наступает. И отвечать за это будет именно компания, которая сделала ПО, и перевести стрелки на взломанный модуль она уже не сможет. А вот в опенсорсе всё на "свой страх и риск" как раз. Сам виноват что с тобой такая задница случилась.
Уголовную ответственность несёт тот, кто совершил преступление (взлом и кражу). Если его найдут и поймают. А сотрудники компании в таком деле -- лишь свидетели.
Как и в закрытом. Как и везде.
Так пишут потому что это ничего не стоит, а ущерб будет оценивать суд. Соответственно сумма будет определяться законодательством страны - пункты договора противоречащие ему игнорируются.
Но взыскать ущерб конечно намного реальнее с компании, даже может и до суда доходить не придется.
Ага. "В открытом ПО могут свинью подложить, а в закрытом -- могут НЕ подложить".. Это не серьезно. Безопасность -- это не про вероятность встретить динозавра на улице, это про модель угроз. Открытое ПО - безопаснее, потому что позволяет поднапрячься и уменьшить вектор атаки там, где закpwnое ПО предлагает расслабиться и получать удовольствие. Точка.
Например.
* Открытый код можно изучить самому или заказать независимый аудит. Более того, те немногие, исключительные, отвественные коммерческие компании (вроде Google), которые проводят аудит используемого в своих решениях кода, применяют и аудируют как раз популярное открытое ПО, делая его ещё немного безопаснее для себя и для всех. Закрытое ПО же даётся под честное слово, обычно озабоченного лишь выгодой, собственника, привыкшего экономически целесообразно игнорировать существующие проблемы, а наступающие тому последствия -- заметать под ковер своей безупречно чистой деловой репутации. Собственник часто даже не понимает, что там колдуют его сотрудники, а на аудитах экономит. Сотрудникам тоже "больше всех НЕ нужно", оставят "запасный выход" открытым на случай пожара (пожары у клиентов подобных контор случаются каждый день) и забудут. Нужно ли продолжать? Уверен, вы и без меня знаете, как обычно устроена разработка коммерческого ПО, и что это редко способствует "Большей Безопасности"(TM). Скорее наоборот. А вот что способствует, так это -- регулярный независимый аудит исходного кода. И люди обычно работают заметно усерднее и отвественнее, когда на них смотрят.
* Открытое ПО несравнимо легче (технически и юридически) доработать или применять с другими открытыми решениями. Так, например, можно реализовать избирательный доступ процессу приложения к другим процессам, аудио/видео подсистеме ОС, сети, файловой системе и т.п. штатными средствами Linux Kernel (user namespaces, eBPF), как делают с системными службами в systemd и графическими приложениями в Flatpak. Закрытое ПО обычно существует само по себе, развивается по воле случая, адаптация пользователем не попадает в список разрешенных в лицензионном соглашении способов применения.
* Обновление открытого ПО находится под полным контролем пользователя (или доверенного лица). Что, где, когда "прилетит" с обновлениями в закрытом ПО, и чем всё это обернётся через день, два, неделю эксплуатации -- вопрос перманентно открытый.
Это как минимум.
Спасибо за статью. Вредители найдутся везде и всегда, с этим никто не спорит.