Il delegato confuso è quando si sta operando per conto di un altro programma, ma non si controllano appropriatamente le autorizzazioni. Il normale esempio di questo è un cassiere di un negozio di generi alimentari, che scansiona gli oggetti usando un codice a barre. Se un cliente malintenzionato cambia il codice a barre, ad esempio mettendo un codice a barre di carota su filet mignon, e la cassiera semplicemente scansiona e carica i prezzi delle carote, lui / lei è un vice confuso. (D'altra parte, se lui / lei nota, sta applicando un controllo appropriato e non è un deputato confuso, ma uno competente)
In questo caso, ciò che Fortify sta dicendo è che sei disposto a sostituire le tue autorizzazioni per le autorizzazioni del chiamante (questo è ciò che fa checkCallingOrSelfPermissions) - stai dicendo che non importa ciò che il chiamante può fare, andare con cosa puoi farlo.
È possibile che questo sia ciò che desideri - se il tuo programma è destinato a eseguire comandi privilegiati per conto di programmi non privilegiati, questo potrebbe essere ciò che desideri. In tal caso, tuttavia, sei responsabile di garantire che il chiamante sia il vero chiamante e che non stia facendo nulla di malvagio. Fortify non può aiutarti - è lì che eseguirai una vera e intensa ispezione del codice e alcuni seri test per assicurarti che quel limite del trust non possa essere sfruttato da qualcosa di malevolo. Se il tuo codice passa, normalmente annoteresti in modo che Fortify lo ignori. Questi sono definiti trust-boundaries e sono dove vuoi dedicare molto tempo all'analisi per assicurarti di eseguire controlli appropriati.
Probabilmente vuoi semplicemente ascoltare Fortify qui e apportare la modifica, a meno che tu non abbia fatto il lavoro per verificare i tuoi input e sia positivo che questa chiamata non possa essere usata per fare qualcosa di malevolo E è l'unico modo per fare qualcosa utile.