# Хук network: оценка URL на SSRF

> Оценивайте один или несколько адресов загрузки на SSRF прямо из командной строки.

Канонический URL: https://lagune.ai/ru-RU/docs/hooks/network
Язык: ru-RU
Оригинал: https://lagune.ai/docs/hooks/network
Последнее обновление: 2026-11-03

Хук `network` решает, защищен ли адрес серверной загрузки от **SSRF** (запроса, который можно направить на внутренние сервисы, облачные метаданные или приватные хосты). Это детерминированный движок, стоящий за [специализацией `network`](https://lagune.ai/ru-RU/docs/catalog), и вы можете запускать его сами.

## Запуск

Передайте каждый адрес через `--url`. Хук выводит по одному слову на адрес, значения которых описаны в таблице ниже.

**Один адрес**

```bash
npx lagune read network --url 'http://example.com/'
# => safe

npx lagune read network --url 'http://0x7f000001/'
# => private-target
```

**Несколько адресов**

Повторите `--url`, чтобы оценить весь список разрешенных или запрещенных адресов за один вызов, по одному вердикту на строку, по порядку.

```bash
npx lagune read network \
  --url 'http://example.com/' \
  --url 'http://[::1]/' \
  --url 'http://allowed.com@evil.example/'
# => safe
# => private-target
# => parser-divergent
```

Хук разрешает хост так же, как это делает сеть, поэтому закодированные формы внутреннего адреса не проскальзывают: шестнадцатеричная, восьмеричная, десятичная без точек, сокращенная запись, IPv6 и IPv4-mapped получают вердикт `private-target`. А там, где небрежная проверка и настоящий загрузчик прочитали бы разные хосты, вердикт будет `parser-divergent`.

## Как читать вердикт

| Вердикт            | Значение                                                                                                     |
| ------------------ | ------------------------------------------------------------------------------------------------------------ |
| `safe`             | Адрес ведет к публичному хосту, и небрежная проверка прочитала бы тот же хост.                               |
| `private-target`   | Хост разрешается в приватный, loopback, link-local, неуказанный адрес или адрес облачных метаданных.         |
| `parser-divergent` | Небрежная текстовая проверка прочитала бы другой настоящий хост, чем тот, к которому подключается загрузчик. |
| `invalid url`      | Строка не разбирается как URL, поэтому загружать нечего.                                                     |

Разрешением считается только `safe`. Считайте `private-target`, `parser-divergent` и `invalid url` блокировкой.

### Параметры CLI

| Параметр | Значение     | Описание                                                                                  |
| -------- | ------------ | ----------------------------------------------------------------------------------------- |
| `--url`  | URL или хост | Проверяет один адрес. Повторите, чтобы проверить несколько, по одному вердикту на строку. |

Нужен хотя бы один `--url`. Адрес никогда не передается как голый позиционный аргумент, поэтому его нельзя принять за флаг.

**Почему значение флага**

Каждый адрес передается как значение флага и никогда не подставляется в команду. Значение с кавычками или обратными кавычками остается инертным и не может внедриться в оболочку. Всегда заключайте его в одинарные кавычки, чтобы оболочка не раскрыла его раньше.

**Чего он не охватывает**

Хук чистый и никогда не разрешает DNS, поэтому два пробела времени выполнения находятся вне его охвата: **DNS rebinding** (имя, которое при проверке разрешается в публичный адрес, а при загрузке во внутренний) и **цепочки перенаправлений** (первый шаг проходит проверку, а затем перенаправляет внутрь). Закрывайте их, разрешая имя один раз и подключаясь к проверенному адресу, а также отказываясь следовать перенаправлениям. Зарезервированные loopback-имена (`localhost` и семейство `.localhost`) хук без поиска считает внутренними, но любое другое DNS-имя получает `safe`, потому что утверждать, что оно разрешается внутрь, можно было бы только после разрешения: такие имена охраняет список разрешенных адресов, и именно его проверяет этот инструмент.

**Совет**

Это та же проверка, которую запускает [специализация `network`](https://lagune.ai/ru-RU/docs/catalog), чтобы доказать, что фильтр адресов действует.

## Частые вопросы

### Как проверить URL на SSRF?

Запустите хук network. Он оценивает адрес загрузки и возвращает safe, private-target, parser-divergent или invalid url. Разрешением считается только safe.

### Что такое URL с расхождением парсеров (parser-divergent)?

URL, который разные парсеры читают по-разному, классический способ обойти защиту от SSRF. Хук network помечает его, а не пропускает.
