Расширяемый инструмент безопасности Azure (далее E.A.S.T.) — это инструмент для оценки Azure и, в некоторой степени, средств безопасности Azure AD. Основное применение EAST — сбор данных безопасности для оценки в рамках Azure Assessments. Эта информация (в формате JSON) затем может использоваться в различных инструментах отчетности, которые мы применяем для дальнейшей корреляции и анализа данных.
Этот инструмент лицензирован по лицензии MIT.


Участники
- Я
- Nixu — команда облачной безопасности
Содержание
Примечания к выпуску
v 0.5
- Рефакторинг:
- Роли управляемых удостоверений и назначения Azure AD теперь выполняются через единый модуль; предыдущая версия устарела, и логика больше не была корректной. Новый модуль —
miGeneral.js
- ASB больше не ASB, теперь это Microsoft cloud security benchmark, см.
query.js
v 0.4
-
Введена ветка предварительного просмотра
Изменения:
-
Установка теперь учитывает использование обновленной версии Azure Cloud Shell в отношении зависимостей (Cloud Shell теперь имеет установленную версию Node.JS v 16)
-
Проверка типов кластеров Databricks в соответствии с рекомендациями
- Аудит кластеров Databricks на предмет возможного повышения привилегий — этот контроль обычно требует разрешений на кластер Databricks
-
Content.json теперь имеет сортировку на основе ключа и содержимого. Это позволяет выполнять дельта-проверки с помощью git diff HEAD^1 ¹, поскольку content.json имеет предопределенный порядок результатов

¹ ⚠️ Предупреждение: если вы хотите проверить дельты content.json, то content.json нужно будет «разыгнорировать» из .gitignore, что приведет к раскрытию результатов для любого вышестоящего репозитория, который вы могли настроить.
Используйте эту функцию с осторожностью и убедитесь, что для ветки, в которой вы используете эту функцию, не настроен публичный вышестоящий репозиторий
-
Изменение шаблонов программирования для предотвращения возможных состояний гонки с большими наборами данных. В основном это изменения использования var на let в циклах стиля for await
Важно
⚠️ Текущий статус инструмента — бета
- Исправления, обновления и т.д. выполняются по принципу «best effort» (наилучшие усилия) без гарантии сроков или качества возможного исправления.
- Мы проводим дополнительную настройку перед использованием EAST в нашей повседневной работе, например применяем различные ограничения запуска и среды, а также предварительно знакомимся с рассматриваемой средой. Поэтому мы в настоящее время рекомендуем запускать EAST только в тестовых средах и с правами только на чтение.
- Все вызовы в сервисе в основном направлены на IP-адреса Azure Cloud, поэтому инструмент должен хорошо работать в усиленных средах, где применяются ограничения исходящих IP-адресов. Это снижает риск того, что инструмент содержит вредоносные пакеты, которые могут «связываться с домом» без наличия C2 в Azure.
- По сути, запуск в режиме только для чтения значительно снижает риск, связанный с возможной компрометацией пакетов NPM (Скомпрометированные NPM-пакеты (Google))
- Ошибки и т.д.: Вы можете защитить свою среду от некоторых ошибок в этом коде, запуская инструмент с правами только на чтение.
- Большая часть кода предоставляется «КАК ЕСТЬ»: то есть он служит только для создания определенного результата; предстоит еще много работы по очистке и модуляризации.
- В настоящее время нет тестов, за исключением некоторых ручных проверок, которые запускаются после изменений в main.js и различных более сложных контролях.
- Описания контролей на данном этапе не являются окончательным продуктом, поэтому обратная связь по ним, хотя и приветствуется, не является основной целью инструментария на данном этапе.
- Как следует из названия, мы используем его как инструмент для оценки сред. В настоящее время он не предназначен для запуска без мониторинга и не должен запускаться в любом интернет-сервисе, который принимает входящие соединения.
- Документацию можно назвать неполной на данный момент.
- EAST в основном ориентирован на ресурсы PaaS, поскольку большинство наших оценок Azure сосредоточено на этом типе ресурсов.
- ⚠️ Очистка входных данных не выполняется для параметров запуска, поскольку всегда предполагается, что ввод этих параметров контролируется. Тем не менее, инструмент широко использует
exec() — хотя я не проверял все пути, я полагаю, что выполнение шелл-кода достигается тривиально. Этот инструмент не предполагает враждебного ввода, поэтому рекомендуется не вставлять аргументы запуска в командную строку без предварительной проверки.
Работа инструмента
Зависимости
Чтобы уменьшить объем кода, мы используем следующие зависимости для работы и эстетики (Спасибо сопровождающим этих замечательных пакетов)