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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-7777-Rust-Use-After-Free-in-Unsafe-Web-Server — Демонстрирует use-after-free в Rust в веб-сервере с уязвимым кодом и многопоточным триггером, чтобы показать повреждение памяти и возможное выполнение кода. | Kitploit
Инструменты/GitHubGitHub/george0papasotiriou/cve-2026-7777-rust-use-after-free-in-unsafe-web-server
Анализ уязвимостейЭксплуатацияОбучение и ОбразованиеЭксплуатация Бинарных ФайловЛаборатории и Практика
GitHubgeorge0papasotiriou/cve-2026-7777-rust-use-after-free-in-unsafe-web-server

CVE-2026-7777-Rust-Use-After-Free-in-Unsafe-Web-Server

Демонстрирует use-after-free в Rust в веб-сервере с уязвимым кодом и многопоточным триггером, чтобы показать повреждение памяти и возможное выполнение кода.

Репозиторий
31 месяц назадЕщё не проверено

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

CVE-2026-7777 – Использование после освобождения в небезопасном веб-сервере на Rust

Программный код (Rust)

root@kitploit:~
// uaf_server.rs - Vulnerable Rust HTTP server with use-after-free
use std::sync::{Arc, Mutex};
use std::thread;
use std::io::prelude::*;
use std::net::{TcpListener, TcpStream};

struct SharedBuffer {
    data: Vec<u8>,
}

impl SharedBuffer {
    fn new() -> Self { SharedBuffer { data: vec![0; 1024] } }
}

fn handle_client(mut stream: TcpStream, buffer: Arc<Mutex<SharedBuffer>>) {
    // Simulate reading request and writing response.
    let mut buf = [0; 512];
    stream.read(&mut buf).unwrap();
    let b = buffer.lock().unwrap();
    let ptr = b.data.as_ptr() as *mut u8; // raw pointer
    // Drop the lock early? In unsafe block we might send the pointer to another thread.
    // Here we simulate a bug: the SharedBuffer is dropped, but we later use the pointer.
    drop(b);
    // After lock is released, another thread could replace the Vec, freeing the old allocation.
    // Unsafe write through the dangling pointer.
    unsafe {
        *ptr = 42; // use after free!
    }
    stream.write(b"HTTP/1.1 200 OK\r\n\r\nHello").unwrap();
}

fn main() {
    let listener = TcpListener::bind("127.0.0.1:7878").unwrap();
    let buffer = Arc::new(Mutex::new(SharedBuffer::new()));
    for stream in listener.incoming() {
        let stream = stream.unwrap();
        let buf_clone = Arc::clone(&buffer);
        thread::spawn(move || {
            handle_client(stream, buf_clone);
        });
    }
}

CVE-2026-7777 – Небезопасное использование после освобождения в веб-сервере на Rust

Severity: High

Обзор

Веб-сервер на Rust использует небезопасный код для совместного использования буфера между потоками. Состояние гонки приводит к использованию после освобождения, что потенциально может вызвать повреждение памяти или раскрытие информации.

Детали уязвимости

  • Тип: Использование после освобождения (безопасность памяти)
  • Воздействие: Отказ в обслуживании, возможное произвольное выполнение кода.
  • Корневая причина: Необработанный указатель получается из Vec под блокировкой, блокировка снимается, а вектор заменяется другим потоком, что освобождает память, пока указатель всё ещё используется.

Демонстрация эксплуатации

  1. Скомпилируйте и запустите уязвимый сервер:
    root@kitploit:~
    rustc uaf_server.rs
    ./uaf_server
    
  2. Запустите многопоточный триггер:
    root@kitploit:~
    python trigger_uaf.py
    
Скачать инструмент