Memory Corruption in C / C ++

4

Sto facendo uno studio sulla corruzione della memoria. Devo compilare un elenco di tutti i problemi di corruzione della memoria sfruttabili che sono stati riconosciuti fino alla data e fornire un codice vulnerabile di esempio per questo.

Ho bisogno di aiuto dalla comunità. Ho provato a cercare ma non sono riuscito a trovare nessuna di queste liste.

Cose che ho compilato

  1. Overflow dello stack
  2. Heap Overflow
  3. Off by One Byte
  4. Sfruttamento bug non inizializzato della memoria variabile
  5. Bug firmati / non firmati
  6. Utente gratuito
  7. Double Free
  8. ?????

Per favore correggimi se la lista è sbagliata. Ho bisogno di un elenco di tutti i bug sfruttabili nel software scritto in C / C ++.

Grazie.

    
posta john4tech 23.05.2014 - 11:45
fonte

3 risposte

3

Potresti voler controllare il catalogo CWE (Common Weakness Enumeration) per questo tipo di ricerca: link

La voce più vicina è probabilmente CWE-633: CWE-633: Punti deboli che incidono sulla memoria

Mi piace molto il CWE quando si tratta di categorizzare i bug (controlla anche le "Relazioni" per ogni voce). Ogni voce contiene una spiegazione e possibili CVE.

Il CAPEC potrebbe anche essere interessante: (capec.mitre.org/index.html)

Si noti che la coercizione dei numeri interi (CWE-192) o l'overflow dei numeri interi (CWE-190) potrebbe solo portare a un calcolo errato, ma non necessariamente a un problema di memoria (vedere CWE-680).

    
risposta data 23.05.2014 - 12:46
fonte
1

Condizioni di gara, dereferenze ai puntatori NULL, vulnerabilità delle stringhe di formato, overflow integer ma c'è un numero quasi infinito di possibili vulnerabilità, queste sono tutte categorie. Ad esempio, i parser binari spesso si fidano degli offset di memoria all'interno dei file per andare a: quale categoria inseriresti? Non è in realtà un buffer overflow, ma è un bug di corruzione della memoria.

E se hai intenzione di elencare tutte le posizioni in cui un buffer può esistere, potresti essere lì per un po '(stai solo elencando le regioni di memoria), ma il buffer overflow di .bss è un altro.

Anche il nome corretto per 4) è "usa prima dell'inizializzazione".

    
risposta data 29.05.2014 - 17:55
fonte
0

Il soggetto è abbastanza grande. Questo articolo può aiutare, copre alcuni aspetti interessanti. Dovresti anche controllare Valgrind e la sua documentazione.

Per lo sfruttamento raccomanderei questo parlare e questo articolo. Potrebbero aiutarti con la tua ricerca.

Inoltre, esiste una nuova tecnologia chiamata MPX di Intel per proteggere la memoria dallo sfruttamento malevolo. Dovresti andare oltre il documento Intel & questo link GCC se vuoi approfondire ulteriormente.

    
risposta data 23.05.2014 - 12:00
fonte

Leggi altre domande sui tag