El agente confundido es cuando está operando en nombre de otro programa, pero no verifica los permisos adecuadamente. El ejemplo normal de esto es un cajero de una tienda de comestibles, escaneando artículos usando un código de barras. Si un cliente malicioso cambia el código de barras, por ejemplo, si coloca un código de barras de zanahoria en el filet mignon, y el cajero simplemente escanea y carga los precios de las zanahorias, está siendo un agente confundido. (Por otra parte, si él / ella se da cuenta, está aplicando la verificación apropiada y no es un agente confundido, sino competente)
En este caso, lo que dice Fortify es que estás dispuesto a sustituir tus propios permisos por los permisos de la persona que llama (eso es lo que hace checkCallingOrSelfPermissions) - estás diciendo que no importa lo que pueda hacer la persona que llama, vaya con lo que puedes hacer.
Es posible que esto sea lo que desea: si su programa está diseñado para ejecutar comandos privilegiados en nombre de programas sin privilegios, esto puede ser lo que usted desea. Sin embargo, si ese es el caso, usted es responsable de garantizar que la persona que llama ES la persona que llama realmente y que no esté haciendo nada malicioso. Fortify no puede ayudarlo allí. Ahí es donde realizaría una inspección de código intensa y real y algunas pruebas serias para asegurarse de que ese límite de confianza no pueda ser explotado por nada malicioso. Si su código pasa, normalmente lo anotaría, por lo que Fortify lo ignora. Estos se denominan límites de confianza y son donde desea pasar mucho tiempo de análisis para asegurarse de que está realizando los controles adecuados.
Probablemente solo quieras escuchar Fortify aquí y hacer el cambio, a menos que hayas realizado el trabajo para verificar tus entradas y estés seguro de que esta llamada no se puede usar para hacer algo malicioso Y es la única manera de hacer algo útil.