tarnish
tarnish — это инструмент статического анализа, предназначенный для помощи исследователям в аудите безопасности расширений Chrome. Он автоматизирует большую часть рутинной работы и помогает быстро выявить потенциальные уязвимости безопасности. Этот инструмент сопровождает исследовательскую статью в блоге, которую можно найти здесь. Если вы не хотите возиться с настройкой, вы можете просто использовать инструмент по адресу https://thehackerblog.com/tarnish/.

Предупреждение о недоработанности и заметки
Следует отметить, что это недоработанный выпуск. Это тот же исходный код, который используется в развёртывании по адресу https://thehackerblog.com/tarnish/. В будущем я, возможно, приведу его в порядок и сделаю гораздо более простым в запуске, но сейчас у меня нет на это времени.
Чтобы настроить это, вам нужно понимать, как:
- Настроить корзину S3
- (при использовании автоматического масштабирования) Настроить ElasticBeanstalk
- Использовать
docker-compose
- Настроить redis
Настройка немного сложна из-за нескольких целей проектирования:
- Эффективно выполнять статический анализ расширений Chrome
- Автоматически масштабироваться при увеличении нагрузки с помощью дополнительных экземпляров и уменьшаться при её спаде.
- Работать при минимальном бюджете (поэтому используется ElasticBeanstalk с Spot Instances).
Несколько кратких замечаний, которые помогут тому, кто попытается это настроить:
tarnish использует Python Celery для анализа расширений.
- Конфигурация Python Celery использует redis в качестве брокера (его необходимо создать).
- Работники, обрабатывающие задания по анализу расширений, запускаются на AWS ElasticBeanstalk spot-экземплярах. Для тех, кто не знаком: spot-экземпляры — это, по сути, торги за неиспользуемые вычислительные мощности. Это позволяет сервису работать очень дёшево.
- Для работы работников требуется как минимум экземпляр AWS
t2.medium.
- Интерфейс
tarnish — это просто набор статических файлов, загружаемых в настроенную корзину S3 для статического хостинга.
Смотрите файл docker-compose.yaml.example для конфигурации переменных окружения. В идеале вы запустите ./start.sh и перейдёте к статическому интерфейсу, чтобы всё заработало. Вы можете использовать S3 для статического сайта или просто простой статический веб-сервер, например python -m SimpleHTTPServer (вам придётся изменить файлы JavaScript, чтобы обеспечить совпадение источника и т.д.).
Возможности
Загружает любое расширение Chrome по предоставленной ссылке из Chrome Web Store.
- Просмотрщик
manifest.json: просто отображает JSON-отформатированную версию манифеста расширения.
- Анализ отпечатков: обнаружение
web_accessible_resources и автоматическая генерация JavaScript для снятия отпечатков расширения Chrome.
- Анализ потенциального кликджекинга: обнаружение HTML-страниц расширения с директивой
web_accessible_resources. Они потенциально уязвимы для кликджекинга в зависимости от назначения страниц.
- Просмотрщик предупреждений о разрешениях: показывает список всех предупреждений о разрешениях Chrome, которые будут показаны пользователю при попытке установить расширение.
- Опасные функции: показывает расположение опасных функций, которые могут быть использованы злоумышленником (например, такие функции, как innerHTML, chrome.tabs.executeScript).
- Точки входа: показывает, где расширение принимает ввод от пользователя/извне. Это полезно для понимания поверхности расширения и поиска потенциальных точек для отправки вредоносных данных в расширение.
- Как сканер опасных функций, так и сканер точек входа содержат следующее для сгенерированных предупреждений:
- Соответствующий фрагмент кода и строка, вызвавшая предупреждение.
- Описание проблемы.
- Кнопка «Просмотреть файл» для просмотра полного исходного файла, содержащего код.
- Путь к файлу, на который поступило предупреждение.
- Полный URI расширения Chrome для предупреждённого файла.
- Тип файла, например, скрипт фоновой страницы, скрипт содержимого, действие браузера и т.д.
- Если уязвимая строка находится в JavaScript-файле, то пути всех страниц, в которые он включён, а также тип этих страниц и статус
web_accessible_resource.
- Анализатор Content Security Policy (CSP) и проверка обходов: укажет на слабые места CSP вашего расширения, а также выявит возможные способы обхода CSP из-за разрешённых CDN и т.д.
- Известные уязвимые библиотеки: использует Retire.js для проверки на наличие известных уязвимых JavaScript-библиотек.
- Скачать расширение и отформатированные версии.
- Скачать исходное расширение.