Italian subtitles

← 02-39 Buffer Overflow

Get Embed Code
4 Languages

Showing Revision 1 created 02/14/2013 by fabio.

  1. Non c'e' bisogno di dire che questo comportamento dei programmi C e C++ apre le porte
  2. a molti molti modi per abusare del sistema.
  3. Avrai sentito parlare di buffer overflows, che sfruttano proprio questa falla del C e C++
  4. in cui degli individui non solo possono leggere ma anche scrivere oltre gli elementi di un array
  5. allo scopo di piazzare del codice dannoso e accedere a zone di memoria.
  6. Cio' apre le porte a tutta una serie di hack interessanti, naturalmente.
  7. Come ci si puo' accorgere di questi errori?
  8. Cio' di cui abbiamo bisogno e' una invariante di sistema che controlli
  9. continuamente che i confini di un array non vengano superati in lettura o scrittura.
  10. Cio' che uno strumento potrebbe fare, per esempio, e' di monitorare costantemente le aree non inizializzate
  11. in letture e scritture da qualsiasi singola istruzione che sia
  12. e ogni qualvolta il programma tenti di accedere a della memoria di sistema non allocata,
  13. succedera' che il controllore invariante sollevera' un eccezione oppure blocchera' il programma
  14. consentendoci percio' di individuare questo tipo di errori.
  15. Sono d'aiuto in questo degli strumenti per il C e C++, compresi strumenti come Electric Fence,
  16. che e' esattamente questo: mette questi blocchi prima e dopo ogni blocco allocato
  17. e percio' rileva quando delle letture e scritture avvengono al di fuori delle aree allocate.
  18. E il secondo importante tool qui e' Valgrind, che e' proprio un interprete per binari x86
  19. il quale ci consente di monitorare gli accesi al codice non inizializzato dei programmi C e C++.