Condividi tramite


Uso di funzioni intere sicure

Un modo per ridurre al minimo i problemi di sicurezza consiste nel prevenire gli overflow e gli underflow integer. Gli overflow integer si verificano quando il risultato di un'operazione aritmetica è maggiore dello spazio di memoria del tipo di dati impostato per riceverlo. Ciò comporta il troncamento dell'intero e un risultato non corretto. Un underflow si verifica quando un'operazione, in genere la sottrazione, restituisce un risultato non corretto. Il cast tra due tipi di dati può anche causare risultati non corretti a causa del troncamento di un risultato che non rientra nel nuovo spazio di memoria.

La libreria ntintsafe fornisce un set di funzioni C che eseguono operazioni aritmetiche intere sicure con controllo dei limiti per evitare overflow e underflow nel codice in modalità kernel. Queste funzioni corrispondono alle funzioni di Windows IntSafe usate dal codice dell'applicazione. Queste funzioni vengono usate per calcolare una dimensione dell'indice o del buffer o per calcolare un altro tipo di controllo dei limiti. Le funzioni sono ottimizzate per la velocità.

Le funzioni Di tipo Integer sicuro offrono i vantaggi seguenti:

  • Le dimensioni del buffer di destinazione vengono sempre fornite alla funzione per garantire che la funzione non venga scritta oltre la fine del buffer.

  • È garantito che i buffer siano con terminazione Null, anche se l'operazione tronca il risultato previsto.

  • Tutte le funzioni restituiscono un NTSTATUS, con un solo codice di esito positivo possibile (STATUS_SUCCESS) e una possibile condizione di errore (STATUS_INTEGER_OVERFLOW).

La libreria ntintsafe ha due categorie di funzioni:

  • Funzioni di conversione: queste funzioni eseguono conversioni tra due tipi di dati.

  • Funzioni aritmetiche: queste funzioni eseguono operazioni di addizione, sottrazione e moltiplicazione per ogni tipo di dati.

Riepilogo delle funzioni integer Kernel-Mode safe

Importazione di funzioni integer sicure Kernel-Mode