flawopen.com/xss/C-cpp

● CWE-79 · Высокий
Исследования · FlawOpen

Анализ уязвимости: Cross-Site Scripting in C/C++

Learn how to fix Cross-Site Scripting (XSS) (CWE-79) in C and C++. Side-by-side vulnerable vs secure code examples for contextual entity escaping in CGI / Crow web services.

💡 Простыми словами (ELI5)

Представьте, что кто-то прикрепил записку на общую доску объявлений: 'Каждый прочитавший обязан отдать свой кошелек стоящему рядом человеку'. Если бы прохожие слепо подчинялись запискам на доске, любой мог бы украсть деньги всех посетителей.

Ключевые понятия и термины

Web Application Security
Технический термин (Web Application Security): Core architecture component affected by CWE-79.
CWE-79
Технический термин (CWE-79): Standard Common Weakness Enumeration classification for xss-c-cpp.
Defense-in-Depth
Технический термин (Defense-in-Depth): Multi-layered engineering verification and runtime boundary isolation.

Пошаговый сценарий атаки

Step 1

Внедрение вредоносного скрипта

Атакующий вводит HTML-теги или JavaScript-код (например, <script> или <img onerror=...>) в поля форм или параметры URL.

Step 2

Вывод в DOM без экранирования

Приложение отображает введенные данные в HTML-странице без контекстного экранирования специальных символов.

Step 3

Разбор и выполнение в браузере жертвы

Браузер пользователя распознает спецсимволы как исполняемый код и запускает вредоносный сценарий.

Step 4

Кража сессии и перехват управления

Скрипт читает document.cookie и токены из localStorage, передавая управление учетной записью злоумышленнику.

Исходный код: Уязвимый vs Защищённый вариант

✕ УЯЗВИМАЯ РЕАЛИЗАЦИЯ
/* comment text written with no encoding */
fprintf(response,
  "<div>%s</div>", comment_text);
✓ БЕЗОПАСНЫЙ ИСПРАВЛЕННЫЙ ВАРИАНТ
/* encode before insertion */
char *encoded = html_encode(comment_text);
fprintf(response,
  "<div>%s</div>", encoded);
free(encoded);

Чек-лист по защите системы для инженеров

References