ИИ-инструменты и скрипты
Проверка безопасности Dev Container
Проверьте devcontainer.json до того, как его кто-то откроет: привилегированные контейнеры, команды на хосте, передающие curl в bash, секреты в env, смонтированные ~/.ssh и ~/.aws, сокет Docker, незакреплённые Features, пользователь root, открытые порты и широкий доступ Codespaces.
Что вы получите: 1 файл · 36.44 KB · ZIP
Варианты покупкиОписание товара
"initializeCommand": "curl -fsSL https://... | bash" выполняется не в контейнере: он запускается на вашей собственной машине каждый раз, когда кто-либо открывает репозиторий в dev container. А монтирование ${localEnv:HOME}/.ssh передаёт ваши закрытые ключи каждому скрипту установки пакетов внутри контейнера. Этот навык находит такие проблемы и ещё двенадцать рисков dev container до того, как кто-то откроет папку, и подсказывает, как исправить каждый из них.
Ваш агент запускает сканер для .devcontainer/devcontainer.json, .devcontainer.json и конфигураций отдельных папок внутри .devcontainer/ (VS Code Dev Containers, GitHub Codespaces, devcontainer CLI). Он читает JSON с комментариями и завершающими запятыми, знает переменные ${localEnv:NAME} и ${containerEnv:NAME}, строковую, массивную и объектную формы команд жизненного цикла, строки и объекты монтирования, параметры docker run в runArgs, а также то, что runArgs, appPort и workspaceMount не применяются к конфигурациям Docker Compose, что числовые значения appPort остаются на localhost и что devcontainer-lock.json закрепляет Features. Локальные пароли для разработки (postgres, devpass, rootpass), настройки, касающиеся секрета (PASSWORD_HASHER), и заглушки (your-token, django-insecure-...) не считаются секретами. Он никогда не запускает docker, devcontainer CLI или любые найденные команды. Результат: BLOCK, REVIEW или NOT FLAGGED с указанием файла, строки, причины и более безопасного подхода. Секреты никогда не выводятся.
Что проверяется
BLOCK (исправить до публикации)
- D01: initializeCommand (выполняется на хосте), который скачивает скрипт и запускает его: curl | bash, bash <(curl ...), iwr | iex
- D02: пароли, токены и ключи, записанные в containerEnv, remoteEnv, аргументах сборки, runArgs -e, командах жизненного цикла (а также docker login -p, az login -p, sqlcmd -P и литерал, передаваемый через echo в docker login --password-stdin), значениях по умолчанию ${localEnv:NAME:default}, свойстве secrets или любой настройке (имена секретов, пароли в URL, известные форматы токенов)
- D03: ваша домашняя папка, ~/.ssh, ~/.aws, учётные данные облачных CLI и Docker, GnuPG, .npmrc, .netrc и другие файлы с учётными данными, корневая папка хоста или /etc, смонтированные в контейнер
REVIEW (проверить до релиза)
- D11: привилегированные контейнеры ("privileged": true, --privileged в runArgs или Feature docker-in-docker, который включает этот режим)
- D12: смонтированный сокет Docker или Podman либо Feature docker-outside-of-docker, который его монтирует
- D13: onCreateCommand, postCreateCommand и другие команды настройки, передающие загруженные данные в оболочку
- D14: образы без тега или с :latest, а также Features без версии, с :latest или заданные URL-адресом архива (если только их не закрепляет devcontainer-lock.json)
- D15: capabilities сверх стандартных для Docker (один SYS_PTRACE допустим), устройства хоста, а также отключённые seccomp, AppArmor или SELinux (типичная для отладчика связка SYS_PTRACE и seccomp=unconfined не отмечается)
- D16: пространства имён хоста для сети, PID, IPC, UTS, пользователей или cgroup
- D17: remoteUser, containerUser или runArgs --user со значением root
- D18: initializeCommand, запускающий программу или скрипт на хосте (mkdir, touch, cp, docker pull и подобные простые шаги допустимы)
- D19: ~/.kube, ~/.minikube, /proc, /sys, /dev, /var/lib/docker, /run, /boot или /lib/modules, смонтированные с хоста
- D20: порты, опубликованные на всех сетевых интерфейсах (runArgs -p или -P, строки appPort без 127.0.0.1)
- D21: права Codespaces на репозитории с write-all, доступом на запись к owner/* или записью в workflows
Что входит в комплект
- Сканер (Python 3.9+, только стандартная библиотека)
- Руководство по правилам с причиной, более безопасным подходом и официальным источником для каждого правила
- Рискованный и безопасный примеры проектов (dev container для API и dev container с инструментами для кластера), а также реальный отчёт сканера по рискованному примеру
Ограничения
Читаются только файлы devcontainer.json: Dockerfile, файлы Docker Compose, указанные в dockerComposeFile, скрипты установки Features, настройки, которые образы и Features добавляют через собственные метаданные (кроме Docker Features из D11 и D12), и скрипты, вызываемые командами, не читаются. Команды сопоставляются как текст, поэтому скрипт, скачанный в файл и запущенный на следующем шаге, не отмечается. Теги мажорных версий, такие как :1, считаются закреплёнными, хотя издатель может их переместить; точно закрепляет Feature только digest или devcontainer-lock.json. Привилегированный режим и сокет Docker относятся к REVIEW, а не BLOCK: оба передают хост Docker коду в контейнере, но оба являются осознанными, документированными способами запуска Docker в dev container (их используют официальные шаблоны docker-in-docker и docker-outside-of-docker), поэтому привилегированный режим получает один и тот же уровень независимо от того, прописан он явно или включён через Feature. Монтирование всей домашней папки (пример из документации VS Code) относится к BLOCK, потому что каждый ключ в ней становится доступным для чтения в контейнере. NOT FLAGGED не является гарантией.
Содержимое
Один ZIP-файл с 11 файлами: SKILL.md, сканер в scripts/ (4 файла Python), references/rules.md (каждое правило с причиной и более безопасным подходом) и examples/ (4 файла примеров и report.md, реальный вывод сканера по рискованному примеру).
Как использовать: это навык для агента: папка с файлом SKILL.md и скриптами Python, которые может запускать ИИ-агент для программирования, например Claude Code, Cursor или Codex CLI. Распакуйте архив в папку навыков вашего агента (для Claude Code: ~/.claude/skills/), затем попросите агента проверить ваш проект. Скрипты также работают самостоятельно с Python 3.9 или новее, ничего устанавливать не нужно. Они только читают ваши файлы: никакого доступа к сети, ничего никуда не отправляется.
Что вы получите
1 файл · 36.44 KB
- devcontainer-safety-check-1.0.0.zipZIP · 36.44 KB
ИИ-инструменты и скрипты
Проверка безопасности Dev Container
Проверьте devcontainer.json до того, как его кто-то откроет: привилегированные контейнеры, команды на хосте, передающие curl в bash, секреты в env, смонтированные ~/.ssh и ~/.aws, сокет Docker, незакреплённые Features, пользователь root, открытые порты и широкий доступ Codespaces.
Getly открыл загруженные файлы и не нашёл ничего, что помешало бы их открыть. Это не проверка на вирусы и не оценка качества.
Теги
Частые вопросы
Доступ открывается сразу?
Да. Это цифровой товар - скачать его можно сразу после оплаты, прямо из своей библиотеки.
Можно ли использовать в коммерческих проектах?
Да. Коммерческое использование разрешено: в своём бизнесе и в том, что вы продаёте. Перепродавать и распространять сам файл нельзя.
Какие условия возврата?
Запросить возврат можно в течение 30 дней. Если что-то не так, оформите заявку в своём заказе - её рассмотрит команда Getly.
Какие форматы и размеры файлов я получу?
Вы скачаете 1 файл - ZIP - всего 36.44 KB.
Обновления бесплатны?
Да - когда продавец выпускает новую версию, вы можете бесплатно скачать актуальные файлы из своей библиотеки. Последние изменения смотрите в истории версий.
Цена
$5.00



