Che cos’è un puntatore penzolante?

Un puntatore penzolante è un difetto di programmazione che si verifica nella codifica orientata agli oggetti quando un oggetto puntatore punta a un altro oggetto che non esiste più. In questo caso, un puntatore non è un puntatore del mouse, ma un oggetto puntatore che ha lo scopo di inviare l’utente a un altro oggetto. Questo difetto crea bug sottili che possono peggiorare con il tempo e presenta anche un problema di sicurezza che gli hacker esperti possono attaccare. Un puntatore penzolante si verifica quando un programmatore cancella l’oggetto puntato ma non cancella il puntatore stesso.

Nella codifica orientata agli oggetti, in cui la codifica è separata in oggetti, esiste un’istanza chiamata puntatore. L’istanza del puntatore viene posizionata da qualche parte nel programma, in genere in un menu, e conduce l’utente a un altro oggetto. Ad esempio, se l’utente evidenzia una sezione di un menu, viene visualizzato un altro menu, un menu a discesa. Ciò consente al programmatore di impostare più oggetti in una sezione senza affollare la sezione.

L’errore del puntatore sospeso si manifesta quando un programmatore cancella l’oggetto puntato. Se il programmatore cancella anche l’istanza del puntatore, non ci saranno problemi. Se il programmatore dimentica e mantiene il puntatore nella codifica, questo crea un puntatore penzolante e presenta problemi di qualità e sicurezza.

In termini di qualità, un puntatore penzolante sembra sciatto e crea sottili bug. Questo perché il programma non sa come agire, perché gli viene detto di fare qualcosa ma non può perché l’oggetto non c’è più. Questo atto crea codice casuale o deteriora il codice in modi piccoli e sottili che sono difficili da rilevare. Questi bug possono essere così piccoli da far sì che il programma si muova un po’ più lentamente, ma alla fine potrebbero rendere il programma, e persino il computer, non funzionante.

La maggior parte dei programmi con puntatori penzolanti funzionerà inizialmente e potrebbe continuare a funzionare per mesi o addirittura anni prima che gli errori diventino evidenti. Anche i programmi che eseguono calcoli, il che significa che il puntatore penzolante è nella formula, potrebbero essere ancora in grado di eseguire calcoli semplici. Questo è uno dei motivi per cui trovare puntatori penzolanti può essere così difficile.

Fino al 2007, il puntatore penzolante creava solo problemi di sicurezza in teoria. La società di software Watchfire® ha quindi realizzato un programma che ha mostrato come sfruttare i puntatori penzolanti, trasformando in realtà il rischio per la sicurezza. Gli hacker sono in grado di infiltrarsi in un programma tramite questo bug e possono iniettare il proprio codice nel programma difettoso.