librerie alternative alla funzione gcc stack-protector / fortity source su linux

0

c'è una libreria / approccio / qualunque cosa da aggiungere

  1. protezione canarino (equivalente protezione stack)
  2. controllo del limite del buffer extra (equivalente alla fonte di Fortity)

su un software C senza utilizzare la funzionalità integrata glibc / gcc?

    
posta boos 26.05.2014 - 17:54
fonte

1 risposta

2

Le protezioni di Carnary si basano sul compilatore aggiungendo il codice prima e dopo ciascun corpo di funzione e, eventualmente, ricorrendo alle variabili locali della funzione, quindi questo è non possibile per l'elemento 1.

Per quanto riguarda l'elemento 2, l'unica cosa che viene in mente è eseguire l'eseguibile sotto Valgrind per l'analisi. Non vorrai farlo in produzione, dato che è lento. Inoltre, alcuni buildin GCC si comportano male con Valgrind (ad esempio il% built-in di% co_de può leggere fino a 3 byte (su i386) oltre la fine di un buffer allocato), quindi emetterà falsi positivi.

Direi che la tua solo soluzione è quella di ricompilare l'applicazione con SSP abilitato (anche, GCC fornisce libssp che contiene le funzioni per fare l'elemento 2). Molte altre librerie C contengono codice di supporto SSP (non è molto codice, in realtà), quindi non usare GNU libc non è un problema.

Alcuni altri compilatori C contengono anche controlli ai confini, controlli di overflow del buffer, controlli di overflow dello stack, ecc. in vari stati di usabilità.

Dovresti anche esaminare la tua implementazione strlen . Alcune implementazioni, in particolare omalloc di OpenBSD, offrono la prenotazione di "pagine di protezione" prima e dopo allocazioni a dimensione di pagina e lo spostamento di allocazioni più piccole all'inizio o alla fine di una pagina per catturare gli accessi oltre il buffer.

    
risposta data 30.05.2014 - 18:22
fonte

Leggi altre domande sui tag