либо ухудшают производительность, либо нарушают отладку, либо требуют доверия
Традиционные средства защиты от несанкционированного доступа
Злоумышленники модифицируют его, внедряют инъекции и автоматизируют атаки.
Ваше приложение работает на устройствах, которые вы не контролируете.
Мы поднимаем ваш «забор» выше, чем у соседей — и атакующие идут дальше.
Конвейер усиления релизных сборок с минимальными требованиями к доверию.
Решение
Мы усиливаем защиту ваших релизных сборок так, чтобы после каждого обновления реверс-инжиниринг приходилось начинать с нуля — без доступа к исходному коду, без агентов и без нарушения рабочего процесса разработчиков.
Что мы предоставляем
(результаты, а не обещания)
Сборки для разработчиков и тестировщиков остаются читаемыми и отлаживаемыми; защита включается только при запуске.
Никаких проблем для разработчиков
Каждый релиз компилируется в разный, но функционально эквивалентный бинарный файл. Предыдущие заметки и скрипты реверс-инжиниринга больше не работают.
Диверсификация от сборки к сборке
Ваш бэкэнд остается источником достоверной информации. Подозрительные сессии корректно переходят в режим карантина, защищая добросовестных пользователей.
Авториитет сервера + сигналы риска
Мы никогда не видим ваш код или CI. Вы запускаете всё сами. Мы предоставляем открытые, проверяемые рецепты и контрольные списки для проверки.
Доверие не требуется
Ротация по 6 параметрам (форма графа контекста, граф вызовов, варианты инструкций, заглушки импорта, кодирование данных, компоновка/компоновка) позволяет получить сотни допустимых перестановок из одной кодовой базы.
Вы проверяете подлинность с помощью стандартных инструментов (`dumpbin`, `readelf`, `codesign` и т. д.) и, при желании, прикрепляете аттестации SLSA/in-toto, подписанные вашими ключами CI.
Один FENCE_SEED на каждый релиз
Для каждого релиза используется детерминированный параметр `FENCE_SEED`, который изменяет код и данные. Репозитории должны отменять каждое обновление.
Рецепты, а не доступ
Мы предоставляем текстовые пресеты для сборки, линковки, упаковки, а также дополнительные вспомогательные скрипты с открытым исходным кодом. Вы копируете, адаптируете и запускаете их в своей системе непрерывной интеграции.
Выборочное усиление защиты
Интенсивные преобразования для небольших уязвимых мест (проверка лицензий, пути доступа); упрощенная очистка всего остального.
Даже при консервативном подходе к микшированию из одного и того же кода автоматически получается 200+ уникальных бинарных файлов.
Выборочное встраивание и выстраивание функций, обёртки для слияния и разделения функций.
Оптимизация графа вызовов
Ключи для строк, констант при каждой сборке. Перестановки индексов таблиц.
Поворот кодировки данных
Законные замены (LEA/ADD, CMOV/филиал), различное распределение, дополнительные ресурсы.
Разнообразие в обучении
Рандомизация порядка разделов и функций. Разделение на «горячие» и «холодные» секции.
Перестановка ссылок и макетов
Перемешивание таблиц API для каждой сборки. Скрипты обработчика импорта перестают работать.