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

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

Канонічна URL-адреса: https://lagune.ai/uk-UA/docs/hooks/network
Мова: uk-UA
Оригінал: https://lagune.ai/docs/hooks/network
Останнє оновлення: 2026-11-03

Хук `network` вирішує, чи захищена адреса призначення серверного запиту від **SSRF** (запиту, який можна спрямувати на внутрішні сервіси, хмарні метадані чи приватні хости). Це детермінований рушій [спеціалізації `network`](https://lagune.ai/uk-UA/docs/catalog), і ви можете запускати його самі.

## Запуск

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

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

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

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

**Кілька адрес**

Повторіть `--url`, щоб оцінити весь allowlist чи denylist одним викликом, по вердикту на рядок, у тому самому порядку.

```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`, бо стверджувати, що воно вказує всередину, можна лише після розпізнавання: такі імена охороняє allowlist, і саме його перевіряє цей хук.

**Порада**

Це та сама перевірка, яку виконує [спеціалізація `network`](https://lagune.ai/uk-UA/docs/catalog), щоб довести, що фільтр адрес призначення діє.

## Часті запитання

### Як перевірити URL на SSRF?

Запустіть хук network. Він оцінює адресу призначення запиту й повертає safe, private-target, parser-divergent або invalid url. Дозволом є лише safe.

### Що таке URL типу parser-divergent?

Це URL, який різні парсери читають по-різному, класичний спосіб обійти захист від SSRF. Хук network позначає його, а не дозволяє.
