Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/xlab-si/iac-scan-runner
Безопасность облачной инфраструктурыСканеры уязвимостейАудит конфигурацииDevSecOpsБезопасность API
GitHubxlab-si/iac-scan-runner

iac-scan-runner

Сервис, который сканирует вашу инфраструктуру как код на предмет распространенных уязвимостей.

Репозиторий
49352 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Сайт
Поделиться

IaC Scan Runner

Сервис, который сканирует вашу инфраструктуру как код (Infrastructure as Code) на предмет распространённых уязвимостей.

GitHub Workflow Status Docker Image Version (latest by date) PyPI Test PyPI

АспектИнформация
Название инструментаIaC Scan Runner
Docker-образxscanner/runner
Пакет PyPIiac-scan-runner
Документацияdocs
Связь с нами[email protected]

Содержание

  • Описание
  • Запуск
    • Запуск с Docker
    • Запуск из CLI
    • Запуск из исходного кода
  • Лицензия
  • Контакты
  • Благодарности

Описание

IaC Scan Runner — это REST API сервис, предназначенный для сканирования пакетов IaC (Infrastructure as Code) и выполнения различных проверок кода с целью поиска возможных уязвимостей и улучшений. Подробнее в документации.

Запуск

В этом разделе объясняется, как запустить REST API.

Запуск с Docker

Вы можете запустить REST API, используя публичный Docker-образ xscanner/runner:

root@kitploit:~
# run IaC Scan Runner REST API in a Docker container and 
# navigate to localhost:8080/swagger or localhost:8080/redoc
$ docker run --name iac-scan-runner -p 8080:80 xscanner/runner

Или вы можете собрать образ локально и запустить его следующим образом:

root@kitploit:~
# build Docker container (it will take some time) 
$ docker build -t iac-scan-runner .
# run IaC Scan Runner REST API in a Docker container and 
# navigate to localhost:8080/swagger or localhost:8080/redoc
$ docker run --name iac-scan-runner -p 8080:80 iac-scan-runner

Запуск из CLI

Для запуска через CLI IaC Scan Runner:

root@kitploit:~
# install the CLI
$ python3 -m venv .venv && . .venv/bin/activate
(.venv) $ pip install iac-scan-runner
# print OpenAPI specification
(.venv) $ iac-scan-runner openapi
# install prerequisites
(.venv) $ iac-scan-runner install
# run IaC Scan Runner REST API
(.venv) $ iac-scan-runner run

Запуск из исходного кода

Для локального запуска из исходного кода:

root@kitploit:~
# Export env variables 
export MONGODB_CONNECTION_STRING=mongodb://localhost:27017
export SCAN_PERSISTENCE=enabled
export USER_MANAGEMENT=enabled

# Setup MongoDB
$ docker run --name mongodb -p 27017:27017 mongo

# install prerequisites
$ python3 -m venv .venv && . .venv/bin/activate
(.venv) $ pip install -r requirements.txt
(.venv) $ ./install-checks.sh
# run IaC Scan Runner REST API (add --reload flag to apply code changes on the way)
(.venv) $ uvicorn src.iac_scan_runner.api:app

Использование и примеры

В этой части будет показано одно из возможных развёртываний и краткие примеры использования API-вызовов.

Сначала клонируем репозиторий iac scan runner и запускаем API.

root@kitploit:~
$ git clone https://github.com/xlab-si/iac-scan-runner.git
$ docker compose up

После этого вы можете использовать различные конечные точки API, обращаясь к localhost:8000. Также можно перейти по адресу localhost:8000/swagger или localhost:8000/redoc и протестировать все конечные точки API там. В этом примере мы будем использовать curl для вызова конечных точек API.

  1. Создадим проект с именем test.
root@kitploit:~
curl -X 'POST' \
  'http://0.0.0.0/project?creator_id=test' \
  -H 'accept: application/json' \
  -d ''

нам будет возвращён идентификатор проекта. Для этого примера идентификатор проекта — 1e7b2a91-2896-40fd-8d53-83db56088026.

  1. Например, предположим, что мы хотим запустить все проверки, кроме ansible-lint. Отключим его.
root@kitploit:~
curl -X 'PUT' \
  'http://0.0.0.0:8000/projects/1e7b2a91-2896-40fd-8d53-83db56088026/checks/ansible-lint/disable' \
  -H 'accept: application/json'
  1. Теперь, когда проект настроен, мы можем просто выбрать файлы для сканирования и заархивировать их. Для работы IaC-Scan-Runner файлы должны быть сжатыми архивами (обычно zip-файлы). В этом случае тип ответа будет json, но его можно изменить на html. Пожалуйста, замените YOUR.zip на путь к вашему файлу.
root@kitploit:~
curl -X 'POST' \
  'http://0.0.0.0:8000/projects/1e7b2a91-2896-40fd-8d53-83db56088026/scan?scan_response_type=json' \
  -H 'accept: application/json' \
  -H 'Content-Type: multipart/form-data' \
  -F '[email protected];type=application/zip'

Вот и всё.

Расширение рабочего процесса сканирования новыми инструментами проверки

В определённый момент может потребоваться включить новые инструменты проверки в рабочий процесс сканирования, чтобы обеспечить более широкий охват стандартов IaC и типов проектов. Поэтому в данном подразделе описана последовательность необходимых шагов для этой цели. Однако шаги необходимо выполнять вручную, как будет описано, но в будущем планируется автоматизировать эту процедуру через API и предоставить удобный интерфейс, который поможет пользователю при импорте новых инструментов, становящихся частью доступного каталога, составляющего рабочий процесс сканирования. На рисунке 16 изображены необходимые шаги, которые нужно предпринять для расширения рабочего процесса сканирования новым инструментом.

Шаг 1 – Добавление класса, специфичного для инструмента, в каталог checks Сначала необходимо добавить новый класс Python, специфичный для инструмента, в каталог checks внутри исходного кода IaC Scan Runner: iac-scan-runner/src/iac_scan_runner/checks/new_tool.py
Класс нового инструмента наследует существующий класс Check, который обеспечивает обобщение инструментов рабочего процесса сканирования. Кроме того, необходимо предоставить реализацию следующих методов:

  1. def configure(self, config_filename: Optional[str], secret: Optional[SecretStr])
  2. def run(self, directory: str) Первый метод предназначен для предоставления необходимых параметров, специфичных для инструмента, чтобы его настроить (таких как пароли, идентификаторы клиентов и токены), а второй определяет, как сам инструмент вызывается через API или CLI и возвращается его сырой вывод.

Шаг 2 – Добавление экземпляра класса инструмента проверки в конструкторе ScanRunner После того как новый класс, производный от Check, добавлен в исходный код IaC Scan Runner, необходимо также изменить исходный код его главного класса, называемого ScanRunner. Что касается изменений этого класса, сначала требуется импортировать класс, специфичный для инструмента, создать новый экземпляр класса инструмента проверки и добавить его в словарь проверок IaC внутри def init_checks(self). A. Импорт класса инструмента проверки from iac_scan_runner.checks.tfsec import TfsecCheck B. Создание нового экземпляра объекта инструмента проверки внутри init_checks """Initiate predefined check objects""" new_tool = NewToolCheck() C. Добавление его в словарь self.iac_checks внутри init_checks

root@kitploit:~
    self.iac_checks = {
        new_tool.name: new_tool,
        …
    }

Шаг 3 – Добавление инструмента проверки в матрицу совместимости внутри класса Compatibility С другой стороны, внутри файла src/iac_scan_runner/compatibility.py также необходимо расширить словарь, представляющий матрицу совместимости. Возможны два случая: а) новый тип файла должен быть добавлен как ключ вместе со списком соответствующих инструментов в качестве значения; б) новый инструмент должен быть добавлен в список совместимости для существующего типа файла.

root@kitploit:~
    compatibility_matrix = {
        "new_type": ["new_tool_1", "new_tool_2"],
        …
        "old_typeK": ["tool_1", …  "tool_N", "new_tool_3"]
    }

Шаг 4 – Обеспечение поддержки сводки результатов Наконец, последний шаг в последовательности необходимых изменений для расширения рабочего процесса сканирования — это модификация класса ResultsSummary (src/iac_scan_runner/results_summary.py). А именно, требуется добавить фрагмент кода в его метод summarize_outcome, который будет искать определённые строки, специфичные для инструмента и используемые для идентификации, прошла проверка или нет. Внутри цикла, проходящего по совместимым проверкам, для каждого нового инструмента следует включить следующую структуру if-else:

root@kitploit:~
        if check == "new_tool":
            if outcome.find("Check pass string") > -1:
                self.outcomes[check]["status"] = "Passed"
                return "Passed"
            else:
                self.outcomes[check]["status"] = "Problems"
                return "Problems"

Лицензия

Эта работа лицензирована в соответствии с Apache License 2.0.

Контакты

Вы можете связаться с командой xOpera, отправив письмо на [email protected].

Благодарности

Этот проект получил финансирование от исследовательской и инновационной программы Европейского Союза Horizon 2020 в рамках Соглашения о гранте № 101000162 (PIACERE).

Скачать инструмент