Проблема:
Агент может быть поднят на внешнем интерфейсе и при этом эндпоинты управления тестом (/run, /stop, /debug/http) не требуют аутентификации. Это позволяет любому, кто видит порт, запускать/останавливать тесты и дергать debug-запросы.
Конкретные места в коде:
agent.json (line 2)
server.go (line 69)
server.go (line 169)
server.go (line 204)
server.go (line 250)
Решение:
Ввести auth middleware (например, Bearer token или X-Perfolizer-Admin-Token) для /run, /stop, /debug/http, /admin/restart.
Разделить роли: минимум operator (run/stop/debug) и admin (restart).
Сделать безопасный default-bind (127.0.0.1) для примеров конфигов и документации.
Добавить явный флаг allow_unauthenticated_local только для локальной разработки.
Критерии приемки:
Без токена запросы к управляющим endpoint возвращают 401/403.
С корректным токеном сценарии run/stop/debug/restart работают.
Из коробки агент не публикуется наружу без явного решения пользователя.
Проблема:
Агент может быть поднят на внешнем интерфейсе и при этом эндпоинты управления тестом (/run, /stop, /debug/http) не требуют аутентификации. Это позволяет любому, кто видит порт, запускать/останавливать тесты и дергать debug-запросы.
Конкретные места в коде:
agent.json (line 2)
server.go (line 69)
server.go (line 169)
server.go (line 204)
server.go (line 250)
Решение:
Ввести auth middleware (например, Bearer token или X-Perfolizer-Admin-Token) для /run, /stop, /debug/http, /admin/restart.
Разделить роли: минимум operator (run/stop/debug) и admin (restart).
Сделать безопасный default-bind (127.0.0.1) для примеров конфигов и документации.
Добавить явный флаг allow_unauthenticated_local только для локальной разработки.
Критерии приемки:
Без токена запросы к управляющим endpoint возвращают 401/403.
С корректным токеном сценарии run/stop/debug/restart работают.
Из коробки агент не публикуется наружу без явного решения пользователя.