Skip to content

fix(integrations): защитить HTTP provider от SSRF#719

Merged
konard merged 5 commits into
mainfrom
issue-696-61e5aa9bd4bb
Jul 14, 2026
Merged

fix(integrations): защитить HTTP provider от SSRF#719
konard merged 5 commits into
mainfrom
issue-696-61e5aa9bd4bb

Conversation

@konard

@konard konard commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator

Что исправлено

  • HTTP integration provider теперь проверяет action URL и healthCheckUrl общим outbound URL guard.
  • Блокируются loopback, private, link-local, metadata и IPv6 ULA адреса, включая адреса, полученные после DNS-resolve.
  • Проверенный DNS закрепляется в undici dispatcher, что закрывает DNS rebinding между проверкой и соединением.
  • Автоматические redirect отключены, поэтому ответ 3xx не может перенаправить запрос на непроверенный origin.
  • Сохранена инъекция fetchImpl, чтобы provider и общий guard оставались детерминированно тестируемыми.

Как воспроизвести исходную проблему

  1. Создать HTTP integration без baseUrl либо с allowCrossOrigin: true.
  2. Выполнить action request с url: "http://169.254.169.254/latest/meta-data/".
  3. До исправления URL доходил до fetch; теперь provider возвращает ошибку о private/loopback/metadata address до сетевого вызова.

Проверка

  • Добавлены регрессионные тесты для literal metadata IP, DNS-resolve в private IP, healthCheckUrl, публичного URL через pinned dispatcher и очистки timeout при отказе guard.
  • Integration suite: 20/20 тестов.
  • npm run typecheck.
  • npm run lint.
  • Prettier check и git diff --check.
  • Полный npm test: 3778/3781 прошли; три несвязанных timing-теста не выдержали параллельную нагрузку, каждый затронутый suite отдельно прошёл (17/17 и 2/2).

Fixes #696

Adding .gitkeep for PR creation (default mode).
This file will be removed when the task is complete.

Issue: #696
@konard konard self-assigned this Jul 14, 2026
@konard konard changed the title [WIP] [AUDIT/V7] HTTP integration provider fetches caller-controlled URLs with no private-IP/SSRF guard fix(integrations): защитить HTTP provider от SSRF Jul 14, 2026
@konard konard marked this pull request as ready for review July 14, 2026 02:25
@konard

konard commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator Author

Working session summary

Исправление готово: PR #719 переведён в Ready for review.

Что сделано:

  • Заблокированы private, loopback, link-local, metadata и IPv6 ULA адреса.
  • Проверка применяется к action URL и healthCheckUrl.
  • Добавлено DNS-пиннинг для защиты от DNS rebinding.
  • Запрещены автоматические redirect на непроверенные адреса.
  • Добавлены 5 регрессионных тестов.

Проверки:

  • Integration tests: 20/20.
  • TypeScript, ESLint, Prettier — успешно.
  • Финальные CI, security audit и CodeQL — успешно.
  • Рабочее дерево чистое, ветка синхронизирована и запушена.

This summary was automatically extracted from the AI working session output.

@konard

konard commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator Author

🤖 Solution Draft Log

This log file contains the complete execution trace of the AI solution draft process.

💰 Cost estimation:

  • Model: GPT-5.6 Sol
  • Provider: OpenAI
  • Public pricing estimate: $23.073165

📊 Context and tokens usage:

  • 265.2K / 200K (133%) input tokens, 23.5K / 128K (18%) output tokens

Total: (265.2K + 19.4M cached) input tokens, 23.5K output tokens, $23.073165 cost

🤖 Models used:

  • Tool: OpenAI Codex
  • Requested: gpt-5.6-sol
  • Thinking level: off (disabled)
  • Model: GPT 5.6 Sol (gpt-5.6-sol)

📎 Log file uploaded as Gist (3530KB)


Now working session is ended, feel free to review and add any feedback on the solution draft.

@konard konard merged commit 380dae0 into main Jul 14, 2026
28 checks passed
@konard

konard commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator Author

🎉 Auto-merged

This pull request has been automatically merged by hive-mind.

  • All CI checks have passed

Auto-merged by hive-mind with --auto-merge flag

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[AUDIT/V7] HTTP integration provider fetches caller-controlled URLs with no private-IP/SSRF guard

1 participant