
Static Token And Credential Scanner
Static Token And Credential Scanner
STACS — это статический сканер учётных данных на базе YARA, который поддерживает бинарные форматы файлов, анализ вложенных архивов, компонуемые наборы правил и списки игнорирования, а также формирование отчётов в формате SARIF.
В настоящее время STACS поддерживает рекурсивную распаковку:
Поскольку STACS работает с обнаруженными типами файлов, проприетарные форматы и другие типы файлов, использующие эти форматы, поддерживаются автоматически. Это включает образы Docker, Android APK, Java JAR, RPM, пакеты Debian (.deb), пакеты macOS (.pkg) и многое другое!
STACS предназначен для использования любыми командами, которые выпускают бинарные артефакты. STACS предоставляет разработчикам возможность автоматически проверять случайное включение статических учётных данных и ключевого материала в свои релизы.
Однако это не означает, что STACS не может помочь с SaaS-приложениями, корпоративным программным обеспечением или даже исходным кодом!
Например, STACS можно использовать для поиска статических учётных данных в образах Docker, загруженных в публичные и частные реестры контейнеров. Его также можно использовать для поиска учётных данных, случайно скомпилированных в исполняемые файлы, пакеты для мобильных устройств и «корпоративные архивы» — такие, которые используются серверами приложений Java.
STACS обнаруживает статические учётные данные с помощью «пакетов правил», предоставляемых STACS при запуске. Эти пакеты правил определяют набор YARA-правил для проверки файлов, переданных STACS. При обнаружении совпадения с правилом генерируется «находка». Эти находки представляют собой потенциальные учётные данные в файле и сообщаются разработчику для исправления или «игнорирования».
Если находка оказывается ложноположительной — то есть совпадением с чем-то, не являющимся реальными учётными данными — разработчик может создать набор «списков игнорирования», чтобы такие совпадения не появлялись в будущих отчётах.
Настоящая сила STACS заключается в автоматическом обнаружении и распаковке вложенных архивов, а также в компонуемых списках игнорирования и пакетах правил.
Для обеспечения гибкого и совместного использования STACS поддерживает компонуемые списки игнорирования. Это позволяет одному списку игнорирования включать другие списки игнорирования, что обеспечивает построение «дерева игнорирования» на основе организационных политик. Такие списки особенно полезны в организациях, где используются одни и те же фреймворки или продукты. Если одна команда уже отметила находку как ложноположительную, другие команды получают преимущество, не тратя время на её анализ.
Подобно спискам игнорирования, пакеты правил также являются компонуемыми. Это позволяет организации определить базовый набор правил для использования всеми командами, оставляя при этом командам возможность поддерживать наборы правил, специфичные для их продуктов.
Самый простой способ использовать STACS — с помощью образов Docker, опубликованных на Docker Hub. Однако STACS также можно установить напрямую из Python PyPI или клонировав этот репозиторий. Ознакомьтесь с соответствующими разделами ниже, чтобы начать!
В скором времени появится облачный сервис, позволяющий интегрировать STACS непосредственно в конвейеры сборки и релиза для обнаружения статических учётных данных до выпуска!
Используя опубликованные образы, вы можете сразу приступить к сканированию артефактов! Образы Docker для STACS предоставляют несколько точек монтирования томов для файлов, которые необходимо сканировать, чтобы смонтировать их непосредственно в контейнер сканирования.
Например, чтобы просканировать всё в текущей папке, можно выполнить следующую команду (Docker должен быть установлен).
docker run \
--rm \
-v "$(pwd):/mnt/stacs/input:ro" \
stacscan/stacs:latest
Если вы хотите получить «красивый» читаемый вывод, используйте следующую команду:
docker run \
--rm \
-e STACS_OUTPUT_PRETTY=1 \
-v "$(pwd):/mnt/stacs/input:ro" \
stacscan/stacs:latest
По умолчанию STACS выводит все находки в формате SARIF непосредственно в STDOUT, а для упорядочивания все сообщения журнала отправляются в STDERR. Для более продвинутых случаев использования предусмотрены и другие точки монтирования томов. Они позволяют пользователю управлять используемыми пакетами правил, списками игнорирования и каталогами кэша.
STACS также можно установить напрямую из Python PyPi. Это предоставляет команду stacs, которую разработчики могут использовать для сканирования проектов непосредственно в своих локальных средах разработки.
STACS можно установить напрямую из PyPi с помощью:
pip install stacs
Обратите внимание: Версия STACS из PyPi не содержит никаких правил. Их также необходимо клонировать из репозитория правил сообщества, чтобы STACS работал!
Пока нет. Однако планируется хостинговая версия STACS, которую можно легко интегрировать в существующие системы сборки и которая будет содержать дополнительные предварительно собранные пакеты правил и списки игнорирования.
К сожалению, ложноположительные срабатывания являются неизбежным побочным эффектом при обнаружении статических учётных данных. Если правила слишком точны, обслуживание правил становится обременительным, и STACS может пропустить учётные данные. Если правила слишком грубы, STACS может генерировать слишком много ложноположительных срабатываний!
Чтобы помочь в этом, STACS предоставляет ряд инструментов для уменьшения количества ложноположительных срабатываний, попадающих в итоговые отчёты.
В первую очередь, STACS предоставляет механизм, позволяющий пользователям определять компонуемые списки игнорирования, позволяющие «игнорировать» набор находок. Эти правила могут быть как грубыми (игнорировать все файлы по шаблону), так и точными (конкретная находка на определённой строке файла).
Эта информация автоматически передаётся в отчёты, поэтому «игнорируемые» находки будут помечены как «подавленные» в выводе SARIF, а также будет указана причина игнорирования для отслеживания.
При использовании «красивого» вывода (--pretty / STACS_OUTPUT_PRETTY) результаты выводятся в удобочитаемом формате на консоль.

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

К сожалению, это, по-видимому, связано с ограничением Docker Desktop for Mac. Ввод-вывод для bind-монтирований действительно очень медленный.