Heap Overflow

Wprowadzenie

Heap Overflow (Przepełnienie sterty) to typ podatności pamięci, w której program zapisuje więcej danych do obszaru zaalokowanego na stercie (heap), niż zostało dla niego przeznaczone. W przeciwieństwie do klasycznego Stack Overflow, heap jest dynamiczny, co czyni exploity bardziej skomplikowanymi, ale często bardziej niebezpiecznymi.

Jak działa Heap Overflow?

Gdy program alokuje pamięć na stercie (np. za pomocą malloc, new), a następnie zapisuje dane poza tym obszarem, nadpisuje sąsiednie struktury w pamięci. Atakujący może nadpisać:

  • Metadane chunków sterty (size, flags)
  • Wskaźniki do funkcji (vtable, function pointers)
  • Dane aplikacji (np. flagi autoryzacji, klucze)

Główne techniki exploitacji

  • Heap Spraying – zalewanie sterty kontrolowanym kodem
  • Use-After-Free (UAF) – częste połączenie z heap overflow
  • Double Free
  • Heap Feng Shui – precyzyjne układanie pamięci
  • Modern techniques (2026): House of Orange, House of Force, tcache attacks

Heap Overflow w kontekście AI

Podatność jest szczególnie groźna w systemach AI:

  • Interpreter Pythona / PyTorch / TensorFlow C++ extensions
  • Uruchamianie kodu generowanego przez LLM w sandboxie
  • Przetwarzanie dużych tensorów i embeddingów
  • Model serving engines (vLLM, TensorRT, ONNX Runtime)
  • Ataki na infrastrukturę inferencji

Zapobieganie Heap Overflow (2026)

  • Używanie bezpiecznych języków: Rust, Go
  • ASLR, DEP/NX, Stack Canaries, Heap Hardening
  • Compiler flags: -fstack-protector-strong, -fsanitize=address (ASan)
  • Automatyczne narzędzia: AddressSanitizer, Valgrind, Heap Protector
  • Secure allocators (mimalloc, jemalloc z hardening)
  • Code review + fuzzing (libFuzzer, AFL++)

Powiązane pojęcia

Buffer Overflow • Stack Overflow • Integer Overflow • Use-After-Free • Memory Corruption • ASLR • AddressSanitizer • Binary Exploitation • Secure Coding • AI Supply Chain Security

Dodano: 21.05.2026