Files
portal/docs/security/ward-setup.md
T
Дмитрий 3fc5501dc5 docs(infosec): A8 ZAP #68 + Ward #70 установлены портативно — PENDING INSTALL снят
- ZAP cross-platform 2.17.0 + MCP-аддон mcp-alpha-0.0.1 на portable Temurin JRE 17 (bin/, gitignored)
- Ward v0.4.1 собран portable Go 1.26.3 (bin/ward.exe); smoke app/ → 2 находки (APP_DEBUG/APP_ENV)
- setup-доки docs/security/zap-setup.md + ward-setup.md
- нормативный синк: Tooling v2.21 / CLAUDE.md v2.25 / PSR_v1 v3.21 / Pravila v1.38
- ADR-014 amended (Status/Decision/Consequences) + routing-off-phase v1.5
- gates GREEN: cross-ref + l1-watcher 0 drift / markdownlint / lychee / gitleaks

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-21 15:36:06 +03:00

66 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Ward (#70) — установка и использование
**Узел A8:** #70 — безопасность настроек Laravel (.env / config / заголовки / cookie / secrets / deps).
**Источник (IS9-вет принят):** `Eljakani/ward` (MIT, Go), **заменил** Enlightn (abandoned + без поддержки Laravel 13 — см. `infosec-vet.md` §ПЕРЕСМОТР #70).
**Тип:** CLI-сканер (Go-бинарь) — **не MCP-сервер, не Composer dev-dep** (как Nuclei #69 / gitleaks #8). Go-бинарь → **не зависит от версии Laravel** (проблема Enlightn снята).
---
## Установка (native-Windows, портативно, без choco)
Готовых бинарей в релизе Ward нет — только `go install`. Go ставится **портативно** (zip, без choco), всё под `bin/` (gitignored).
```powershell
# 1. Portable Go (официальный zip, проверка SHA256)
$ProgressPreference='SilentlyContinue'
Invoke-WebRequest -Uri 'https://go.dev/dl/go1.26.3.windows-amd64.zip' -OutFile 'bin\_dl\go.zip' -UseBasicParsing
# ожидаемый SHA256: 20d2ceafb4ed41b96b879010927b28bc92a5be57a7c1801ce365a9ca51d3224a
Expand-Archive 'bin\_dl\go.zip' -DestinationPath 'bin\_runtimes' -Force # → bin\_runtimes\go\
# 2. Собрать Ward (локальные GOPATH/GOCACHE — всё остаётся под bin/)
$root=(Get-Location).Path
$env:GOROOT="$root\bin\_runtimes\go"; $env:GOPATH="$root\bin\_runtimes\gopath"; $env:GOCACHE="$root\bin\_runtimes\gocache"
$env:PATH="$env:GOROOT\bin;$env:PATH"
& "$env:GOROOT\bin\go.exe" install github.com/eljakani/ward@v0.4.1
# 3. Положить бинарь рядом с прочими security-CLI
Copy-Item "$env:GOPATH\bin\ward.exe" 'bin\ward.exe'
```
- **Расположение:** `bin/ward.exe` (рядом с nuclei/gitleaks/lychee/squawk; `bin/*` в `.gitignore` → бинарь машинно-локальный, в репозиторий не коммитится).
- **Go SDK** (`bin/_runtimes/go`, ~256 МБ) сохранён для обновлений (`go install ...@latest`); можно удалить — `ward.exe` статичный и работает без Go.
- **Verified (2026-05-21):** `bin\ward.exe version` → v0.4.1.
## Smoke (verified 2026-05-21)
```powershell
bin\ward.exe scan app -o json --no-color
```
Результат: 2 находки в Laravel-приложении `app/`**[High] APP_DEBUG включён**, **[Medium] APP_ENV = 'local'** (env-scanner: 2, config-scanner: 0, dependency-scanner: 0). Это ожидаемые dev-настройки, и одновременно — те самые go-live-проблемы, которые Ward и должен ловить (перед публикацией нужны `APP_DEBUG=false` + `APP_ENV=production`). Доказывает: Ward устанавливается и реально сканирует проект.
## Использование
```powershell
# несколько форматов сразу; report-файл(ы) пишутся в текущую папку
bin\ward.exe scan app -o json,sarif,html --no-color
# гейт по severity (exit 1 при находках ≥ уровня) — для CI/go-live
bin\ward.exe scan app --fail-on high --no-color
# подавить известные находки baseline-файлом
bin\ward.exe scan app --baseline docs/security/ward-baseline.json --no-color
```
- **TUI по умолчанию** (`-o tui`) — в неинтерактивной оболочке зависнет; всегда задавать `-o json`/`sarif`/`html`/`markdown`.
- **Артефакт:** `ward scan ... -o json` пишет `ward-report.json` в CWD — это временный отчёт, не коммитить.
- **Сеть:** локальный анализ кода/конфигов; единственный outbound — OSV.dev для проверки CVE в зависимостях (как Enlightn security-checker — функциональный запрос, не телеметрия).
## Границы (ADR-014)
IS3 — Ward (misconfig/secrets/deps Laravel) ≠ Larastan #12 (типы) ≠ Semgrep #25 (generic-паттерны кода). Dep-скан Ward ↔ Trivy #26 / Dependabot #27 — информационно, не дублирующий гейт.
## Caveat
Молодой проект (фев 2026), single-maintainer → bus-factor. Митигация: pin версии (`@v0.4.1`); MIT → форкабелен при забрасывании.