CRLF-ін’єкція — це небезпечна уразливість веб-додатків, яка використовується для маніпуляції HTTP-заголовками, XSS-атак та інших загроз. Ця атака дозволяє зловмисникам вставляти небажані заголовки або навіть змінювати поведінку серверних відповідей.
У цій статті ми детально розглянемо, як працює CRLF-ін’єкція, які ризики вона несе та які методи дозволяють захистити ваш сайт або веб-додаток від цієї загрози.
🔹 Що таке CRLF?
CRLF (Carriage Return Line Feed) — це два спеціальні символи, які позначають кінець рядка:
CR(Carriage Return,r, код 13)LF(Line Feed,n, код 10)
У веб-протоколах CRLF використовується для розділення HTTP-заголовків. Наприклад:
HTTP/1.1 200 OKrn
Content-Type: text/htmlrn
Set-Cookie: session=abc123rn
rn
<html>...</html>Зловмисники можуть використовувати CRLF для зміни структури HTTP-відповіді та впровадження нових заголовків або скриптів.
🔹 Як працює CRLF-ін’єкція?
CRLF-ін’єкція виникає, коли сервер приймає некоректно відфільтровані вхідні дані, дозволяючи зловмиснику вставляти rn у HTTP-запити чи відповіді.
🔸 Приклад атаки:
Припустимо, що веб-додаток дозволяє вказувати URL для редиректу:
HTTP/1.1 302 Foundrn
Location: https://example.com?next=userrnЯкщо веб-додаток не фільтрує введення, зловмисник може передати:
https://example.com?next=user%0D%0ASet-Cookie:%20admin=trueЦе змусить сервер повернути відповідь із новим заголовком Set-Cookie: admin=true, що може дати зловмиснику підвищені привілеї.
🔹 Наслідки CRLF-ін’єкції
CRLF-ін’єкція може призвести до різних атак:
1️⃣ Вставка додаткових HTTP-заголовків
Зловмисник може змінювати або додавати заголовки, впливаючи на поведінку браузера.
2️⃣ XSS-атака (крос-сайтний скриптинг)
Якщо зловмисник впроваджує код у тіло відповіді, можливе виконання JavaScript на стороні користувача.
3️⃣ Перенаправлення користувачів
Маніпуляція заголовком Location може змусити браузер відвідати шкідливий сайт.
4️⃣ Використання у лог-атаках
Зловмисник може вбудовувати підроблені записи в журнали сервера, що ускладнює аналіз безпеки.
🔹 Як захиститися від CRLF-ін’єкції?
Щоб захистити ваш веб-додаток, використовуйте наступні методи безпеки.
1️⃣ Санітаризація введення
Фільтруйте всі вхідні дані та видаляйте символи r та n:
$user_input = str_replace(["r", "n"], '', $_GET['input']);2️⃣ URL-кодування введених даних
Кодуйте дані перед передачею у HTTP-заголовках:
import urllib.parse
safe_input = urllib.parse.quote(user_input)3️⃣ Використання безпечних HTTP-бібліотек
Сучасні веб-фреймворки (Flask, Django, Express) автоматично обробляють HTTP-запити без ризику ін’єкцій.
4️⃣ Контроль HTTP-заголовків на сервері
Забороняйте використання rn у заголовках, наприклад, у Nginx:
proxy_set_header X-Safe-Header $safe_value;5️⃣ Використання WAF (Web Application Firewall)
Модулі безпеки, такі як ModSecurity, можуть автоматично блокувати небезпечні запити:
SecRule REQUEST_URI "[rn]" "deny,log"🔹 Висновок
CRLF-ін’єкція — серйозна вразливість, яка може призвести до маніпуляцій HTTP-заголовками, XSS-атак та інших загроз. Основні заходи захисту включають:
✅ Фільтрацію та кодування введення
✅ Використання безпечних бібліотек
✅ Контроль заголовків та використання WAF
Дотримуючись цих рекомендацій, ви зможете значно знизити ризик CRLF-ін’єкцій та покращити безпеку вашого веб-додатку.
🤔 Часті питання (FAQ)
1️⃣ Що таке CRLF у веб-розробці?
CRLF (Carriage Return Line Feed) — це спеціальні символи (rn), які використовуються для розділення рядків у HTTP-заголовках.
2️⃣ Як перевірити, чи мій сайт уразливий до CRLF-ін’єкції?
Ви можете протестувати сайт за допомогою спеціальних інструментів, таких як Burp Suite або OWASP ZAP, вводячи %0D%0A у параметри URL.
3️⃣ Чи може CRLF-ін’єкція використовуватися для XSS-атак?
Так, якщо зловмисник може вставити довільний JavaScript у тіло відповіді, це може призвести до виконання XSS-атаки.
4️⃣ Які мови програмування найбільш вразливі до CRLF-ін’єкцій?
Найбільший ризик існує у веб-додатках на PHP, JavaScript (Node.js), Python, Java, якщо не використовується фільтрація введених даних.
5️⃣ Чи варто використовувати WAF для захисту?
Так, WAF (Web Application Firewall) може автоматично виявляти та блокувати запити з CRLF-символами.
📌 Додаткові ресурси:
- CWE-93 MITRE – Детальна інформація
- CRLF Injection Attacks – Детальна інформація




