Пентест клиентских приложений
Анализ защищённости десктопных приложений, Electron, браузерных расширений и других программ, которые работают на рабочей станции пользователя и общаются с вашими серверами. Проверяем и клиент, и API, с которыми он работает.
- Объект
- Приложения для Windows, macOS и Linux, Electron, браузерные расширения, ActiveX, их серверные API
- Модель
- Серый ящик с тестовыми учётными записями; белый ящик при наличии кода
- Сроки
- 2–3 недели на приложение, отчёт до недели
- Результат
- Отчёт с находками по клиенту и API, CVSS, PoC и рекомендациями; перепроверка
Почему клиент нужно проверять отдельно
Код клиентского приложения выполняется на машине, которую контролирует пользователь, а значит и злоумышленник. Его можно декомпилировать, подменить проверки, извлечь встроенные ключи и посмотреть, что приложение хранит на диске. Поэтому проверки серверных API дополняются анализом того, что приложение оставляет на рабочей станции и как оно обрабатывает внешние данные.
Для приложений на Electron и браузерных расширений риски особые: ошибка конфигурации или XSS в интерфейсе могут превратиться в выполнение кода в операционной системе или доступ к данным всех сайтов пользователя.
Классы уязвимостей
| Класс | Что проверяем | К чему приводит |
|---|---|---|
| Хранение данных | Небезопасное логирование, запись секретов в общедоступные директории, доступ к сохранённым паролям и идентификаторам сессий | Токены и пароли в открытом виде на диске, доступные другим пользователям и программам |
| Передача данных | Передача в открытом виде, отсутствие проверки сертификатов и SSL pinning, запросы по HTTP, WebSocket, gRPC и другим протоколам | Перехват и подмена трафика в недоверенной сети |
| Приватность | Секретные данные в общем буфере обмена, кеширование, передача данных на сторонние сервисы | Утечка данных через окружение рабочей станции |
| Криптография и секреты | Слабые алгоритмы, ключи шифрования, пароли и API-ключи в коде приложения | Извлечение ключей из дистрибутива, доступ к серверным API от имени приложения |
| Обработка внешних данных | SQL-инъекции в локальные базы, чтение произвольных файлов, обработка URL-схем и файлов | Выполнение кода на рабочей станции при открытии подготовленного файла или ссылки |
| Реверс-инжиниринг | Слабая защита от анализа и модификации, пароли и ключи в явном виде, обход лицензионных проверок | Подмена логики клиента, обход проверок на стороне клиента |
| Electron | Ошибки конфигурации: nodeIntegration, contextIsolation, обработчики навигации; XSS, приводящий к исполнению кода | Удалённое выполнение кода на рабочей станции через содержимое веб-страницы |
| Браузерные расширения и ActiveX | UXSS, UI redressing, небезопасные обработчики сообщений, локальное исполнение кода | Доступ к данным всех сайтов пользователя, выполнение кода в системе |
| Логика и серверная часть | Логические уязвимости, ошибки авторизации в API, с которыми работает клиент | Доступ к чужим данным и функциям через серверные методы |
Этапы тестирования
- 01
Сбор информации об объекте
Изучаем документацию и структуру приложения, декомпозируем его и выделяем потенциально уязвимые интерфейсы. Анализируем сетевое взаимодействие с серверной частью: запросы по HTTP, WebSocket, gRPC и другим протоколам, обращения к файловой системе и реестру, работу с буфером обмена и внешними источниками данных.
- 02
Инструментальное сканирование и фаззинг
Определяем уязвимые и устаревшие версии сторонних библиотек в сборке. Сканируем и фаззим приложение средствами класса DAST, а при наличии исходного кода — SAST. Результаты верифицируем вручную, отсеиваем ложные срабатывания и уточняем уровни риска.
- 03
Ручной и полуавтоматический поиск уязвимостей
Проверяем хранение и передачу данных, соблюдение приватности, криптографию и управление секретами. Ищем специфичные уязвимости: обработку внешних данных, защиту от реверс-инжиниринга, ошибки конфигурации Electron, уязвимости браузерных расширений и ActiveX, логические ошибки. Декомпилируем и инструментируем приложение в рантайме.
- 04
Эксплуатация обнаруженных уязвимостей
Подтверждаем находки эксплуатацией и демонстрируем получение доступа: исполнение кода на рабочей станции, извлечение секретов, доступ к серверным функциям и данным других пользователей. Показываем возможности полной или частичной компрометации ресурсов приложения.
- 05
Отчёт и перепроверка
Описание целей, модели нарушителя и угроз; каждая уязвимость с уровнем риска, процессом эксплуатации и рекомендацией; статус исправления по результатам перепроверки; резюме с оценкой защищённости и приоритизированный перечень рекомендаций. Одна контрольная перепроверка исправленных уязвимостей выполняется в течение 10 рабочих дней после запроса заказчика; гарантийный срок — 12 месяцев после завершения основных этапов работ.
Смежные проверки
Клиент редко живёт один: у него есть серверные API, мобильная версия и исходный код. Эти работы объединяются в один проект.
Вопросы о пентесте клиентских приложений
Какие приложения относятся к клиентским?
Чем пентест клиентского приложения отличается от веб-пентеста?
Что нужно предоставить для начала работ?
Проверяется ли серверная часть?
Сколько длится проект?
Проводится ли повторная проверка после исправлений?
Заказать пентест клиентского приложения
Укажите платформы, тип приложения и есть ли исходный код. Предложим состав работ, включая серверные API, и зафиксируем стоимость после скоупинга.
- Почта
- info@deteact.ru
- Телефон
- +7 499 444-12-46
- Офис
- Москва, Пресненская набережная, 10с2 (IQ-квартал, Москва-Сити)
- Лицензия
- ФСТЭК России №Л024-00107-00/00581935
