LINUX.ORG.RU

В Linux-сборках эмулятора Cemu обнаружено вредоносное ПО

 , , ,


0

2

В течение шести дней — с 6 по 12 мая 2026 года — официальные Linux-сборки популярного эмулятора Wii U Cemu версии 2.6 были скомпрометированы. Вместо чистой программы пользователи скачивали вредоносное ПО, которое воровало пароли, ключи SSH, токены GitHub и учётные данные от облачных сервисов. Злоумышленникам удалось подменить бинарные файлы в официальном репозитории проекта на GitHub.

Под угрозой оказались пользователи, которые скачали и запустили:

  • Cemu-2.6-x86_64.AppImage (переносимый пакет)
  • cemu-2.6-ubuntu-22.04-x64.zip (архив для Ubuntu)

Важно: Flatpak-версия эмулятора, Windows и macOS-сборки не были затронуты атакой.

Cemu — это популярный эмулятор Nintendo Wii U, который позволяет запускать эксклюзивные игры, такие как The Legend of Zelda: Breath of the Wild, на персональных компьютерах. Проект был создан в 2015 году нидерландским разработчиком Exzap и изначально существовал только для Windows. Переломный момент наступил в 2022 году, когда Cemu открыл исходный код под лицензией MPL 2.0, что привлекло новых контрибьюторов и позволило портировать эмулятор на Linux и macOS. Сегодня Cemu написан на C++ и способен эмулировать не только основную консоль, но и GamePad, Pro Controller, а также поддерживает ввод с клавиатуры и геймпадов.

Подробности произошедшего:

  • Вектор атаки: Атака произошла на уровне цепочки поставок (supply chain attack). Один из контрибьюторов проекта случайно запустил у себя скомпрометированный Python-пакет, что привело к краже его GitHub-токена доступа. Используя этот токен, злоумышленники автоматически перезаписали «чистые» файлы релиза на вредоносные.
  • Целевая аудитория: Код нацелен в первую очередь на разработчиков и DevOps-инженеров. Вредонос крадёт данные для аутентификации в облачных провайдерах, системах контроля версий и CI/CD.
  • Израильский «сюрприз»: Выявлен деструктивный модуль для израильских пользователей. Если по локали и часовому поясу система определяет, что находится в Израиле, существует вероятность 1 к 6, что проиграется громкая сирена и выполнится команда rm -rf /, пытающаяся уничтожить все данные на диске.
  • Масштаб: По предварительным подсчётам, инфицированные файлы могли быть загружены почти 20 000 раз.

Что делать

  • Сбросьте всё: Обязательно смените все важные пароли, отозвите и сгенерируйте заново SSH-ключи и токены GitHub, которые хранились в заражённой системе.
  • Если вы запускали скомпрометированную версию, самый надёжный способ — переустановить операционную систему
  • Отсутствие явных признаков заражения не гарантирует безопасность. Вредонос тихо крадёт данные, сейчас неизвестен полный объём его возможностей.

>>> omgubuntu

★★★★★

Проверено: CrX ()
Последнее исправление: CrX (всего исправлений: 2)

Израильский «сюрприз»: Выявлен деструктивный модуль для израильских пользователей. Если по локали и часовому поясу система определяет, что находится в Израиле, существует вероятность 1 к 6, что проиграется громкая сирена и выполнится команда rm -rf /, пытающаяся уничтожить все данные на диске.

незалежные палестинцы перенимают международный опыт protestware из 2022 года?

a__
()

Важно: Flatpak-версия эмулятора, Windows и macOS-сборки не были затронуты атакой.

цель войны и кому это выгодно... может в этом все дело?

sunjob ★★★★★
()

Было уже такое в китайских эмуляторах андроида

One ★★★★★
()

Злоумышленникам удалось подменить бинарные файлы в официальном репозитории проекта на GitHub.

Шерето! Срочно заблокировать!

apt_install_lrzsz ★★★★
()

Вот мы сейчас пытаемся сдать на сертификацию некий продукт, который состоит из сервера на дотнете, веб-интерфейса к нему и юниксо-виндовой части на С++ и С. Так вот, первое требование: а теперь обеспечьте сборку всего этого ВАшего рантайма дотнета и джаваскрипта без доступа в интернет. То есть, никаких внешних реп для джаваскрипта и из чего там дотнет собирается. Когда ж народ поймет, что нельзя в сборочных скриптах что-то из сети-то тянуть?

gns ★★★★★
()
Ответ на: комментарий от gns

что нельзя в сборочных скриптах что-то из сети-то тянуть?

почему нельзя, словарь

имя артефакта <-> чексумма решают эту проблему

gagarin0
()
Ответ на: комментарий от gagarin0

Это клоунада. Дальше не интересно.

gns ★★★★★
()

Это запросто, это быстро.

sparkie ★★★★★
()

Забавно узнавать про очередную консоль из новости про дыры в её эмуляторе :)

zabbal ★★★★☆
()
Ответ на: комментарий от gns

Чексуммы можно зашить в сборочный скрипт. И это наверно решит проблему подмены (если верить что хэш никогда не взломают), но не решит проблему того что когда-нить сайт с файлами исчезнет и сборщик сломается.

firkax ★★★★★
()
Ответ на: комментарий от gagarin0

Любые внешние ресурсы подвержены поломкам или закрытиям. А чтобы появилось на внутренних - надо сначала скачать. Удобнее всего если всё нужное для сборки скачается сразу в комплекте со сборочным скриптом, а не будет собираться потом отложенно.

firkax ★★★★★
()
Ответ на: комментарий от firkax

удобнее всего сделать прокладку (начиная от специально настроенного squid-proxy, apt-proxy, и заканчивая docker-registry-proxy) которая кэширует все что выкачено из интернета, чтобы на случай пропажи вытащить из кэша.

gagarin0
()
Последнее исправление: gagarin0 (всего исправлений: 1)
Ответ на: комментарий от gns

Так вот, первое требование: а теперь обеспечьте сборку всего этого ВАшего рантайма дотнета и джаваскрипта без доступа в интернет.

Меня всегда интересовало и продолжает интересовать, как такие вопросы решаются при разработке на Rust.

hobbit ★★★★★
()
Ответ на: комментарий от gagarin0

Чтобы закешировать надо сначала скачать. А у тебя может быть вроде бы скачанный сборочный пакет, ты его запускаешь и он падает т.к. сайт откуда он хотел себе скачать ещё что-то - закрылся. И в кеше у тебя пока что ничего нет, ты его компилируешь первый раз.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Ну знать бы те чексуммы заранее. Если ты заранее знаешь чексуммы, то ты и нужный пакет можешь в локальную репу переложить и собираться с локальных реп. Подписанные коммиты решили бы проблему, но тоже только частично, потому как комрометацию ключей подписи тоже никто не отменял, и оперативной процедуры выявления факта компрометации тоже пока не придумали.

gns ★★★★★
()
Ответ на: комментарий от hobbit

Так вот, первое требование: а теперь обеспечьте сборку всего этого ВАшего рантайма дотнета и джаваскрипта без доступа в интернет.

Меня всегда интересовало и продолжает интересовать, как такие вопросы решаются при разработке на Rust.

Добавь к списку Nodejs(и иже с ними) ,а так же Go. В этом смысле они одинаковы.

Atlant ★★★★★
()
Ответ на: комментарий от hobbit

Я не знаю пока прецедентов по сертификации чего-либо, писанного на Расте. Мне тоже было бы интересно за этим понаблюдать. Но, сам понимаешь, за наездом косы на камень лучше наблюдать из укрытия.

gns ★★★★★
()
Ответ на: комментарий от gagarin0

Еще раз. Сборка локальная, доступа в интенет нет. Провод из свича вынули. Единственный вариант — обеспечить наличие локальной репы со всеми зависимостями.

gns ★★★★★
()
Ответ на: комментарий от firkax

Ну своего — знаешь, а чексумы зависимостей откуда? Если ты знаешь чексумы зависимостей, то ты уже скачал пакет, проверил его и посчитал чексумму. Ну и не качай его больше. Как-то так.

gns ★★★★★
()
Ответ на: комментарий от gagarin0

Действительно, проблема давно решена локальными репами, помощь мне особо не требуется, спасибо. А коллеги и без меня справятся. Как бы я описал сам принцип — сборка локальная. Это требование регулятора. А требование повляется именно из-за проблем, которые в топике и описаны.

gns ★★★★★
()
Ответ на: комментарий от sparkie

Лодка класса «Буратино» нырять не может. --Не может, но ныряет! (с)

Должен — это когда взял и не отдал. Остальное как во всех лицензиях — никаких гарантий :)

gns ★★★★★
()
Последнее исправление: gns (всего исправлений: 1)
Ответ на: комментарий от firkax

Напомнило мне один случай: принёс я однажды сдавать заказчику софтину. Пустил её, а она брымс! и упала. Потом сообразил, в чём причина. Но до этого я испытал немало неприятных минут, мягко говоря.

sparkie ★★★★★
()
Ответ на: комментарий от gns

То есть, никаких внешних реп для джаваскрипта

Хорошо, но мало. Верно будет так:

То есть, никакого джаваскрипта

Smacker ★★★★★
()

Под угрозой оказались пользователи, которые скачали и запустили:

Cemu-2.6-x86_64.AppImage (переносимый пакет)

Почему игра(эмулятор) имеет доступ к SSH-ключам?

На Linux-десктопах user == root: весь прикладной софт имеет полный доступ к домашней директории пользователя, все секреты в 99% в хомяке

Flatpak и прочие Firejail’ы частично решают эту проблему, но только частично: Linux desktop broken by design. Попытки натянуть линукс десктопы на мобилы особенно смешны

Ждём Android-style системы для десктопов: там подобные уязвимости не смогут сильно навредить. И они будут

Когда же народ поймёт, что нельзя в сборочных скриптах что-то тянуть из сети?

Автомобили приводят к авариям. Когда же народ поймёт, что нельзя ездить на автомобилях?

MaZy ★★★★★
()
Ответ на: комментарий от zabbal

очередную

дед, вылазь из землянки, немцев победили

mega_venik ★★★★
()
Ответ на: комментарий от gns

Не, чтобы узнать чексумму, достаточно скачать чексумму (32-64 байта), а не пакет. Я имел ввиду что чексумма зависимости может быть указана в главном пакете и этот главный пакет, когда скачивает зависимость, сверяет чексумму с той что ему известна.

Но я согласен что удобнее просто включить зависимость в скачиваемый пакет, а не качать её отдельно.

firkax ★★★★★
()
Ответ на: комментарий от Smacker

То есть, никакого джаваскрипта

Хотелось бы! :) Твои б слова да ТНБ Столярову в уши :)

Но, как бы, сразу у ФСТЭКа контры против Джаваскрипта не возникает. Видать свыклись с реалиями, к сожалению.

gns ★★★★★
()
Ответ на: комментарий от MaZy

На Linux-десктопах user == root

Только у нубов с sudo.

весь прикладной софт имеет полный доступ к домашней директории пользователя, все секреты в 99% в хомяке

Рут тут ни при чём. Рута надо охранять для того, чтобы тебе руткит (или троян-прошивку в железо) незаметно не установили и не стали красть все будущие секреты в реальном времени.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Ну а доверие к этой чексумме какое? Кто сказал, что в результате атаки чексуммы не пересчитали? Или какой-то зловред, который выкачиваетя как зависимость от зависимости ее локально не подменил при сборке? Чексумм мало.

Ты посчитаешь чексуммы верхнего уровня, а кто будет считать чексуммы на всю глубину дерева зависимостей?

Я имел ввиду что чексумма зависимости может быть указана в главном пакете и этот главный пакет, когда скачивает зависимость, сверяет чексумму с той что ему известна.

Главный пакет где? Он твой? В нем откуда чексуммы появляются? Тут или дурная бесконечность или никакого доверия.

gns ★★★★★
()
Последнее исправление: gns (всего исправлений: 3)
Ответ на: комментарий от gns

Да, нравы нынче не те. А вот в старину оскорбление джаваскриптом считалось одним из самых тяжёлых. Его можно было смыть только кровью!

Smacker ★★★★★
()
Ответ на: комментарий от firkax

На Linux-десктопах user == root

Только у нубов с sudo.

Ты браузер и менеджер паролей запускаешь от юзера – весь прикладной софт имеет к ним доступ. Любая уязвимость – полная компрометация

А рут? Да уязвимостям и твоего юзера достаточно будет

MaZy ★★★★★
()
Ответ на: комментарий от gns

Не особо понятное описание, кто где что подменил.

Ты посчитаешь чексуммы верхнего уровня, а кто будет считать чексуммы на всю глубину дерева зависимостей?

Чексуммы считать должен установочный скрипт. Скрипт знает, что ему надо скачать файл http://freehosting.co.cc/lib.tgz и что правильный хэш этого файла - такой-то. Если хэш не совпадает - значит считаем что скачать не удалось и падаем. Если это lib.tgz само тоже хочет что-то скачать - оно тоже должно знать хэши для проверки.

Главный пакет где? Он твой? В нем откуда чексуммы появляются? Тут или дурная бесконечность или никакого доверия.

Главный пакет предоставлен поставщиком по договору, через безопасный канал, не важно какой. Чексуммы правильных зависимостей в нём зашиты им же. Вопросы доверия поставщику выходят за рамки ИТ. Разумеется, у поставщика есть техническая возможность поставить троян.

Если смотреть со стороны разработчика, то разумеется разработчик в ходе разработки все зависимости должен так или иначе иметь скаченными. Речь про то, как он их доставит своему клиенту - один тарболлом на всё, или же дополнительными скачиваниями в ходе установки.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от gagarin0

Мы обсуждаем последствия действия малвары в пайплайне. Если есть некая технология, которая по-идее должна обезопасить пайплайн, то возможно два варианта: 1) не внедрили, 2) технология так себе. Оба варианта друг другу не противоречат.

gns ★★★★★
()
Ответ на: комментарий от firkax

Не, ну доверенную дистрибуцию можно обсуждать отдельно. Но мне пока не известно, где, как и у кого она организована. Вопрос перезрел, конечно, но технология не реализована. Пока это благопожелания.

gns ★★★★★
()
Ответ на: комментарий от MaZy

Нет, не полная. Полная компрометация это когда ты вынужден выкидывать устройство и покупать новое, опасаясь что тебе там перешили биос, прошивку видеокарты, сетевой карты и накопителей на затрояненные. Вот чтобы этого не случилось - и надо ограждать рута от юзера. Разовая кража паролей - это конечно очень неприятно, но ещё неприятнее когда ты вроде бы почистил систему от вирусов, работаешь на ней, а пароли продолжают вороваться в фоновом режиме и незаметно для тебя.

firkax ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.