Supponiamo di avere un codice come questo:
struct somedata {
int a;
int b;
};
struct somedata *data;
/* ... */
data = malloc(sizeof(struct somedata));
data->a = something;
Ora, come puoi vedere, manca il controllo del puntatore NULL. La domanda è: questo ha implicazioni di sicurezza nel caso in cui Malloc fallisce? Supponiamo che il processo in uscita su SEGV da solo non sia un problema in questo caso. C'è un altro modo in cui questo può essere un problema dal punto di vista della sicurezza? L'applicazione che contiene questo codice non è SUID o con privilegi elevati, ma elabora input esterni, quindi alcune parti della sua memoria possono essere controllate dall'utente.
P.S. Sono a conoscenza di CWE-476 ma le implicazioni sulla sicurezza sono descritte in modo molto vago ("In circostanze e ambienti molto rari, l'esecuzione del codice è possibile "- quali circostanze? quali ambienti? Quanto raro - colpire la meteora-tu-in-the-head rari o rari una volta all'anno?) e mi piacerebbe vederne alcuni informazioni più specifiche su quale sia la minaccia.