.. image:: https://cdn.sourcecode.ai/imgs/logotype.png
:target: https://aura.sourcecode.ai/
======
.. class:: center
|homepage_flair| |docs_flair| |docker_flair|
|license_flair| |travis_flair| |pypi_flair|
Аудит исходного кода и статический анализ кода
Aura — это фреймворк для статического анализа, разработанный в ответ на постоянно растущую угрозу вредоносных пакетов и уязвимого кода, публикуемого на PyPI.
Цели проекта:
- предоставить автоматизированную систему мониторинга загруженных пакетов на PyPI, оповещать об аномалиях, которые могут указывать на текущую атаку или уязвимости в коде
- позволить организации проводить автоматизированные аудиты безопасности исходного кода и внедрять безопасные практики программирования с фокусом на аудит стороннего кода, такого как зависимости от пакетов Python
- позволить исследователям сканировать репозитории кода в больших масштабах, создавать наборы данных и проводить анализ для дальнейшего продвижения исследований в области уязвимых и вредоносных зависимостей кода
Список возможностей:
- Подходит для анализа вредоносного ПО с гарантией отсутствия выполнения кода
- Продвинутые механизмы деобфускации путем переписывания AST-дерева — распространение констант, развертывание циклов и другие грязные трюки
- Рекурсивное сканирование автоматически распаковывает архивы (zip, wheel и т.д.) и сканирует содержимое
- Поддержка сканирования также файлов, не являющихся Python — плагины могут работать в режиме «сырого файла», например, встроенная интеграция с Yara
- Сканирование на наличие жестко заданных секретов, паролей и другой конфиденциальной информации
- Собственный движок сравнения — вы можете сравнивать изменения между различными источниками данных, например, пакеты PyPI с опечатками, чтобы увидеть, какие изменения были внесены
- Работает с исходным кодом как Python 2.x, так и Python 3.x
- Высокая производительность, предназначен для сканирования всего репозитория PyPI
- Вывод в многочисленных форматах, таких как красивый обычный текст, JSON, SQLite, SARIF и т.д.
- Протестировано на более чем 4 ТБ сжатого исходного кода Python
- Aura способна сообщать о поведении кода, таком как сетевое взаимодействие, доступ к файлам или выполнение системных команд
- Вычисление «оценки Aura», показывающей, насколько надежен исходный код/входные данные
- и многое, многое другое…
Не нашли то, что искали? Архитектура Aura основана на надежной системе плагинов, где вы можете настроить почти все, начиная от набора анализаторов данных и протоколов передачи до пользовательских форматов вывода.
Установка
::
# Via pip:
pip install aura-security[full]
# or build from source/git
poetry install --no-dev -E full
Или просто используйте предварительно собранный docker-образ sourcecodeai/aura:dev
Запуск Aura
::
docker run -ti --rm sourcecodeai/aura:dev scan pypi://requests -v
Aura использует так называемые URI для идентификации протокола и местоположения для сканирования. Если протокол не указан, аргумент сканирования интерпретируется как путь к файлу или каталогу в локальной системе.
.. image:: files/imgs/aura_scan.png
Сравнение пакетов::
docker run -ti --rm sourcecodeai/aura:dev diff pypi://requests pypi://requests2
.. image:: docs/source/_static/imgs/aura_diff.png
Поиск наиболее популярных пакетов с опечатками (сначала нужно выполнить aura update для скачивания набора данных)::
aura find-typosquatting --max-distance 2 --limit 10
.. image:: https://asciinema.org/a/367999.svg
:target: https://asciinema.org/a/367999
.. image:: files/imgs/download_dataset.png
:target: https://cdn.sourcecode.ai/pypi_datasets/index/datasets.html
:align: center
:width: 256
Почему Aura?
Хотя существуют и другие инструменты с функциональностью, пересекающейся с Aura, такие как Bandit, dlint, semgrep и т.д., фокус этих альтернатив отличается, что влияет на функциональность и способы их использования. Эти альтернативы в основном предназначены для использования аналогично линтерам, интегрированы в IDE, часто запускаются во время разработки, что делает важным минимизацию ложных срабатываний и предоставление отчетов с четкими практически применимыми объяснениями в идеальных случаях.
С другой стороны, Aura сообщает о поведении кода, аномалиях и уязвимостях, предоставляя как можно больше информации за счет ложных срабатываний. Aura сообщает о многих вещах, которые не обязательно являются практически применимыми для пользователя, но они многое говорят о поведении кода, например, о сетевом взаимодействии, доступе к конфиденциальным файлам или использовании механизмов, связанных с обфускацией, что указывает на возможный вредоносный код. Собирая такие данные и агрегируя их, Aura по функциональности можно сравнить с другими системами безопасности, такими как антивирусы, IDS или брандмауэры, которые по сути выполняют тот же анализ, но на других типах данных (сетевое взаимодействие, запущенные процессы и т.д.).
Вот краткий обзор различий между Aura и другими подобными линтерами и инструментами SAST:
- входные данные:
- Другие инструменты SAST — обычно ограничены только исходным кодом Python (целевым) и версией Python, под которой установлен инструмент.
- Aura может анализировать как бинарный (или не-Python код), так и исходный код Python. Способна анализировать смесь кода Python, совместимого с разными версиями Python (py2k и py3k), используя одну и ту же установку Aura.
- отчетность:
- Другие инструменты SAST — нацелены на хорошую интеграцию с другими системами, такими как IDE, CI-системы, с практически применимыми результатами, стараясь минимизировать ложные срабатывания, чтобы не перегружать пользователей слишком большим количеством незначительных предупреждений.
- Aura — сообщает как можно больше информации, которая не является сразу практически применимой, такой как анализ поведения и аномалий. Формат вывода предназначен для легкой машинной обработки и агрегации, а не для чтения человеком.
- конфигурация:
- Другие инструменты SAST — инструменты настраиваются под целевой проект путем кастомизации сигнатур для конкретных технологий, используемых целевым проектом. Переопределение конфигурации часто возможно путем вставки комментариев в исходный код, таких как
# nosec, которые подавляют предупреждение в этой позиции.
- Aura — ожидается, что заранее мало или совсем нет знаний о технологиях, используемых сканируемым кодом, например, при аудите нового пакета Python для утверждения его использования в качестве зависимости проекта. В большинстве случаев невозможно изменить сканируемый исходный код, например, с помощью комментариев, чтобы указать линтеру или Aura пропустить обнаружение в этом месте, потому что сканируется копия кода, размещенная на удаленном ресурсе.
Авторы и участники
Пожертвовать
ЛИЦЕНЗИЯ
Фреймворк Aura лицензирован под GPL-3.0.
Наборы данных, полученные в результате глобального сканирования с использованием Aura, выпускаются под лицензией CC BY-NC 4.0.
Используйте следующую цитату при использовании Aura или данных, полученных с помощью Aura, в исследованиях:
::