Малвари на курсе и верификация модов

7,159
329
1,540
Недавно происходили стремные события, о которых подробнее можно почитать тут: GitHub - fractureiser-investigation/fractureiser: Information about the fractureiser malware
На нашем форуме это почему-то до сих пор не обсуждалось.
Если коротко: **** на модераторах курса доигрались и на курс были успешно залиты и скачаны с полсотни зараженных модов, которые крали у юзеров кукисы, крипту и данные авторизации.
То, что происходит на курсе и подобных сервисах - не что иное, как бигдата, а бигдата должна обрабатываться не ленивыми модераторами, а автоматизированными средствами.
Поэтому предлагаю обсудить здесь, как могут выглядеть подобные средства верификации модов.
Приведу некоторые свои размышления на этот счет:
Т.к. на кону стоит много всего, то для такого инструмента предпочтительней не иметь ложно-отрицательных срабатываний даже ценой некоторого количества ложно-положительных срабатываний.
В качестве маркеров подозрительного кода могут выступать:
  1. литералы массивов байтов, чаров и других примитивов
  2. работа с класс-лоадерами
  3. работа с сетью, кроме форж и ванильных пакетых систем
  4. работа с какими-то специфичными классами майна и форжи, из юза которых можно сконструировать опасную семантику
    • было хорошо определить границы множества опасных кирпичей и определять их универсально

Может быть, у кого-то найдутся идеи, как подобные казусы предупредить другими способами. В статье fractureiser-investigation кратко рассмотрели запуск игры в песочнице, например.
 
Последнее редактирование модератором:
тех. часть: можно ли этот тред закрепить?
тема, вероятно, не потеряет актуальности в ближайший год
 
Надо сразу признать, что вредоносы в модах, лаунчерах и плагинах на Minecraft появились не вчера. В частности, в целях предотвращения "плохого" поведения на Curse запрещена обфускация, а на многих площадках есть модерация. Фракчурайзер не открыл какой-то ящик пандоры.
Разработчики поступили слишком нагло: из-за сомнительной наживы вирус было решено сделать максимально агрессивным, а из-за человеческой глупости на хост (сиэнси) был залит билд без обфускации и, кажется, без всякого криптования.
Все критерии статического анализа выше можно довольно просто обойти. Например, с помощью стеганографии, рефлексии, JNI, иных средств. Поверх этого всего ожидается жёсткая обфускация, так что разработка антивируса, заточенного под MC, будет крайне трудоёмка. Тем более, что детект у самописов зачастую нулевой.
Оптимальным решением будет запуск модов в песочнице, это довольно-таки давно используется.
Также решением может выступить определение нового интерфейса (либо коренное изменение) самого загрузчика Forge, который будет определять ограниченный набор методов взаимодействия, либо добавление виртуализации в сам MC.
Логично делегировать такие задачи самим разработчикам Forge, но эти люди... Ладно, не мне говорить про их уникальные подходы к разработке ПО, и, наверное, лень.
 
на многих площадках есть модерация
как видим, она не работает
и не может работать, слишком много данных
Все критерии статического анализа выше можно довольно просто обойти
согласен с этим
тогда зайдет другим путем:
допустим, разрешаем в модах только сложение целых чисел
можно ли с таким набором операций хакнуть компудахтер?
если ответ нет, то подтверждаем эту операцию и переходим к следующей
итого получается вайтлист разрешенных операций
чтобы программа могла делать что-то сомнительное, хотя бы один компонент должен мочь делать что-то сомнительное
ограниченный набор методов взаимодействия
по сути тот же вайтлист, только во время выполнения, а не до
 
В дополнение ко всем вышеперечисленным решениям я вижу еще одно - требовать валидную подпись бинарей модов перед их запуском. Такой схемой давно пользуется весь серьезный энтерпрайз и это показатель того, что это работает.

Чтобы соблюсти такое требование к безопасности, девелоперам придется озаботиться финансовым и юридическим аспеком т.к.:
1) Сам сертификат стоит денег: пр. CodeSign продает это дело начиная с ~25к рублей в год
2) Центры сертификация вроде GlobalSign требуют наличие юридического лица у владельца сертификата в рамках проверки его репутации: пр. ~50к рублей в год за статус ИП в РФ

Это порождает 4 важных фактора предупреждения распространения вредоносов:
1) На девелопера можно подать в суд т.к. инфа о юрлице является публичной. Такая мера способна остудить даже самого оборзевшего девелопера.
2) Центры сертификации откажут тебе в услугах, если ты запятнал свою добросовестную репутацию.
3) У юзера появится возможность проверить оригинальность модов перед их запуском, чекнув цифровую подпись
4) В случае компроментации добросовествности девелопера, антивирусы смогут блокнуть любой код, подписанные его сертификатом

И хотя это ультимативное работоспособное решение, большинство нищебродских девелоперов модов не могут позволить себе купить сертификат. Это можно отчасти решить самоподписанным сертификатам и тогда уже пользователь должен принять решение доверяет ли он девелоперу или нет. И хотя понятно что юзер инстинктивно тыкнет на кнопку "Да" лишь бы поскорее заюзать новый чит на скайблоке, у него хотя бы будет возможность провалидировать оригинальность запускаемого бинаря и оценить риски. Но если пользователь добровольно скипает любые проверки и предупреждения - его не спасти вовсе.
 
Я правильно понимаю? Авторы модов сбилдили jar-ники с подлянкой и выложили это на CurseForge? Можно же просто сравнивать то, что они выкладывают, и то, что находится в их публичном репозитории.
 
Я правильно понимаю? Авторы модов сбилдили jar-ники с подлянкой и выложили это на CurseForge
Да


Можно же просто сравнивать то, что они выкладывают, и то, что находится в их публичном репозитории.
Обычный юзер подобным не занимается, а на курсе нету так-таковой проверки насколько мне известно.
 
Я правильно понимаю? Авторы модов сбилдили jar-ники с подлянкой и выложили это на CurseForge? Можно же просто сравнивать то, что они выкладывают, и то, что находится в их публичном репозитории.
Допустим, новый автор публикует новый мод
 
Это я про проверку обновлений уже проверенных модов.
А если новый мод - то только смотреть исходник полностью. Любое использование файловой системы, сети и прочее должно проверятся вручную.
 
Не знаю можно ли это использовать при запуске игры, но силами Jav'ы можно ограничивать доступ к файлам и сокетам с помощью аргументов: -Djava.security.manager -Djava.security.policy=example.policy и с помощью конфигурации:
example.policy:
grant {
    permission java.net.SocketPermission "google.com:443", "connect,resolve";
    permission java.net.SocketPermission "www.google.com:443", "connect,resolve";
};
В примере кидает ошибку при чтении файла и при подключении к forum.mcmodding.ru
Test.java:
import java.io.FileInputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;

public class Test {
    public static void main(String[] args) throws IOException {
        try (FileInputStream inputStream = new FileInputStream("test.txt")) {
            System.out.println(new String(inputStream.readAllBytes()));
        } catch (Exception e) {
            // throws java.security.AccessControlException
            e.printStackTrace();
        }

        try {
            HttpURLConnection urlConnection = (HttpURLConnection) new URL("https://google.com").openConnection();
            System.out.println(urlConnection.getResponseCode());
            urlConnection.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }

        try {
            HttpURLConnection urlConnection = (HttpURLConnection) new URL("https://forum.mcmodding.ru").openConnection();
            System.out.println(urlConnection.getResponseCode());
            urlConnection.disconnect();
        } catch (Exception e) {
            // throws java.security.AccessControlException
            e.printStackTrace();
        }
    }
}
 
Это я про проверку обновлений уже проверенных модов.
Это очевидно бэкдор в системе
На модринхе так и делали и это заюзали, чтобы получить апрув вредоносного мода
Даже если автор с многолетним стажем, его аккаунт может быть скомпрометирован, как было с LunaPixelStudio
 
Даже если автор с многолетним стажем, его аккаунт может быть скомпрометирован, как было с LunaPixelStudio
Вроде на двух плащадках такого нету что, какой-то пользователь имеет больше доверия. Каждый файл всё равно проверяется одинаково.
 
У меня был мод заражëнный, но так как я играл через эмулятор в ПК майн на телефоне вирус не просочился я думаю 🤔
 
Назад
Сверху