L'estensione MPX di Intel renderà C / C ++ completamente sicuro da usare?

4

Questa è apparentemente un'estensione che eliminerà l'overflow del buffer e formerà le vulnerabilità delle stringhe nei programmi C / C ++, direi fornendo supporto hardware, ad es. convertire scanf in fgets automaticamente o qualcosa del genere. Questa estensione cambierà la reputazione di C / C ++ come linguaggio pericoloso? C / C ++ sarà finalmente completamente sicuro da usare? O altre vulnerabilità come gli overflow integer saranno ancora una preoccupazione? C'è qualche motivo per cui MPX non trasformerebbe C / C ++ in un linguaggio completamente sicuro? Non ho molta familiarità con MPX e voglio sentire le persone che lo sono.

Mi scuso se questa domanda è troppo generica. I suggerimenti per restringerlo sono i benvenuti.

    
posta Zen Hacker 03.01.2016 - 00:03
fonte

1 risposta

4

In primo luogo, il C ++ ha abbastanza gradi di libertà che un computer non può rendere completamente sicuro. C ++ ti dà letteralmente pieno accesso a tutto ciò che la CPU può fare.

Funzioni come fscanf sono solo routine che eseguono il looping e il controllo internamente per darti funzionalità di livello superiore. Tuttavia, fscanf non ha alcuna conoscenza di quanto lontano debba essere un buffer (per esempio quanto è grande). L'unica parte del codice che fa ha quell'informazione è la libreria malloc, ma è anche solo un algoritmo di livello superiore per rendere le cose più facili di cui l'hardware non sa nulla.

In teoria, il compilatore può memorizzare queste informazioni e passarle alle estensioni MPX, ma in molte applicazioni che sarà quasi impossibile da fare perché la maggior parte delle cose sono memorizzate come void* e passate manualmente così un analizzatore statico non può avere informazioni necessarie per impostare tali registri. L'unico modo per farlo sarebbe quello di memorizzare ulteriori informazioni in fase di runtime, cambiando così la dimensione di void* che violerebbe le regole del C ++, quindi dovrebbe essere un tipo speciale che pochissimi sviluppatori implementeranno realmente perché sarà costa troppo.

Un overflow del buffer si verifica quando lo sviluppatore è pigro con la sua alimentazione, non quando l'hardware si guasta.

Questo è solo uno dei possibili bug nel software che lo rendono insicuro. Ci sono stati diversi bug che sono overflow interi, logica non valida, ecc.

Quindi no, non renderà C ++ completamente sicuro da usare - niente lo farà.

    
risposta data 03.01.2016 - 03:08
fonte

Leggi altre domande sui tag