Articulo de referencia

Problema del diputado confundido

En seguridad informática , un agente confundido es un programa informático que, engañado por otro programa (con menos privilegios o derechos), abusa de su autoridad en el sistem...

En seguridad informática , un agente confundido es un programa informático que, engañado por otro programa (con menos privilegios o derechos), abusa de su autoridad en el sistema. Se trata de un tipo específico de escalada de privilegios . [ 1 ] El problema del agente confundido se cita a menudo como ejemplo de la importancia de la seguridad basada en capacidades .

Los sistemas de capacidades protegen contra el problema del agente confundido, mientras que los sistemas basados ​​en listas de control de acceso no lo hacen. [ 2 ]

Estos sistemas pueden mitigar el problema del agente confuso eliminando la autoridad ambiental, lo que permite que los programas actúen solo sobre los recursos para los que poseen capacidades explícitas, mientras que los sistemas basados ​​en listas de control de acceso son más susceptibles a este problema. Sin embargo, esta protección depende de una implementación correcta; en sistemas de capacidades formalmente verificadas, como seL4, se puede demostrar que el núcleo aplica correctamente las restricciones de capacidad, evitando este comportamiento a nivel del sistema.

Ejemplo

En el ejemplo original de un agente confundido, [ 3 ] había un programa compilador proporcionado en un servicio comercial de tiempo compartido . Los usuarios podían ejecutar el compilador y, opcionalmente, especificar un nombre de archivo donde escribiría la salida de depuración, y el compilador podría escribir en ese archivo si el usuario tenía permiso para escribir allí.

El compilador también recopilaba estadísticas sobre el uso de las características del lenguaje. Dichas estadísticas se almacenaban en un archivo llamado "(SYSX)STAT", en el directorio "SYSX". Para que esto fuera posible, se le otorgó al programa compilador permiso para escribir en archivos dentro de SYSX.

Pero había otros archivos en SYSX: en concreto, la información de facturación del sistema se almacenaba en un archivo llamado "(SYSX)BILL". Un usuario ejecutaba el compilador y especificaba "(SYSX)BILL" como el archivo de salida de depuración deseado.

Esto generó un problema de dependencia confusa. El compilador solicitó al sistema operativo que abriera el archivo (SYSX)BILL. Aunque el usuario no tenía acceso a dicho archivo, el compilador sí, por lo que la apertura se realizó correctamente. El compilador escribió el resultado de la compilación en el archivo (en este caso, "(SYSX)BILL") como de costumbre, sobrescribiéndolo, y la información de facturación se perdió.

El ayudante del sheriff, confundido,

En este ejemplo, el programa compilador actúa como agente porque lo hace a petición del usuario. El programa se considera "confundido" porque fue engañado para sobrescribir el archivo de facturación del sistema.

Cuando un programa intenta acceder a un archivo, el sistema operativo necesita saber dos cosas: qué archivo solicita y si tiene permiso para acceder a él. En el ejemplo, el archivo se identifica por su nombre, “(SYSX)BILL”. El programa recibe el nombre del archivo del usuario, pero desconoce si este tenía permiso para escribir en él. Al abrir el archivo, el sistema utiliza los permisos del programa, no los del usuario. Cuando el usuario envió el nombre del archivo al programa, los permisos no se transfirieron junto con él; el sistema aumentó los permisos de forma automática y silenciosa.

Para que el ataque funcione, no es esencial que el archivo de facturación esté designado con un nombre representado como una cadena de caracteres. Los puntos esenciales son los siguientes:

  • La persona designada para el archivo no posee la autoridad completa necesaria para acceder a él;
  • El permiso del propio programa para acceder al archivo se utiliza implícitamente.

Otros ejemplos

El prototipo de ayudante del sheriff confundido, Barney Fife.

La falsificación de solicitudes entre sitios (CSRF) es un ejemplo de ataque de intermediario confuso que utiliza el navegador web para realizar acciones sensibles contra una aplicación web. Una forma común de este ataque ocurre cuando una aplicación web usa una cookie para autenticar todas las solicitudes transmitidas por un navegador. Mediante JavaScript , un atacante puede forzar al navegador a transmitir solicitudes HTTP autenticadas.

El gusano informático Samy utilizó la técnica de secuencias de comandos entre sitios (XSS) para convertir la sesión autenticada de MySpace del navegador en un servidor malicioso. Mediante XSS, el gusano obligó al navegador a publicar una copia ejecutable del mismo como mensaje de MySpace, que posteriormente fue vista y ejecutada por los amigos del usuario infectado.

El clickjacking es un ataque en el que el usuario actúa como un agente confundido. En este ataque, el usuario cree que está navegando inofensivamente por un sitio web (un sitio web controlado por el atacante), pero en realidad es engañado para realizar acciones sensibles en otro sitio web. [ 4 ]

Un ataque de rebote FTP puede permitir que un atacante se conecte indirectamente a puertos TCP a los que su máquina no tiene acceso, utilizando un servidor FTP remoto como intermediario.

Otro ejemplo se relaciona con el software de cortafuegos personal . Este puede restringir el acceso a Internet para aplicaciones específicas. Algunas aplicaciones eluden esta restricción iniciando un navegador con instrucciones para acceder a una URL específica. El navegador tiene autorización para abrir una conexión de red, aunque la aplicación no la tenga. El software de cortafuegos puede intentar solucionar esto solicitando la autorización del usuario cuando un programa inicia otro que luego accede a la red. Sin embargo, el usuario a menudo no dispone de información suficiente para determinar si dicho acceso es legítimo; los falsos positivos son comunes y existe un riesgo considerable de que incluso los usuarios más experimentados se acostumbren a hacer clic en "Aceptar" ante estas solicitudes. [ 5 ]

No todos los programas que hacen mal uso de la autoridad son agentes confusos. A veces, el mal uso de la autoridad es simplemente el resultado de un error de programación. El problema del agente confuso se produce cuando la designación de un objeto se transfiere de un programa a otro y el permiso asociado cambia involuntariamente, sin ninguna acción explícita por parte de ninguno de los programas. Es insidioso porque ninguno de los programas hizo nada explícito para cambiar la autoridad.

Otro ejemplo se da cuando un administrador autoriza a un agente de IA a actuar en su nombre, y esa IA posteriormente delega autoridad a otro agente de IA que no ha sido ni verificado ni autorizado por el administrador original. La IA no verificada puede entonces actuar sin permisos ni supervisión del desarrollador original. [ 6 ]

Soluciones

En algunos sistemas es posible solicitar al sistema operativo que abra un archivo utilizando los permisos de otro cliente. Esta solución tiene algunos inconvenientes:

  • Requiere que el servidor preste especial atención a la seguridad. Un servidor ingenuo o descuidado podría no tomar esta medida adicional.
  • Resulta más difícil identificar el permiso correcto si el servidor es a su vez cliente de otro servicio y quiere ceder el acceso al archivo.
  • Esto requiere que el cliente confíe en que el servidor no abuse de los permisos prestados. Cabe señalar que la intersección de los permisos del servidor y del cliente tampoco resuelve el problema, ya que entonces el servidor podría tener que recibir permisos muy amplios (de forma permanente, en lugar de los necesarios para una solicitud específica) para poder atender a clientes arbitrarios.

La forma más sencilla de resolver el problema del agente confuso es agrupar la designación de un objeto con el permiso para acceder a él. Esto es precisamente lo que es una capacidad .

En el ejemplo del compilador, al usar la seguridad de capacidades, el cliente pasaría al servidor una capacidad para el archivo de salida, como un descriptor de archivo , en lugar del nombre del archivo. Dado que carece de una capacidad para el archivo de facturación, no puede designarlo para la salida. En el ejemplo de falsificación de solicitud entre sitios, una URL proporcionada entre sitios incluiría su propia autoridad, independiente de la del cliente del navegador web.

Véase también

Referencias

  1. Wu, Jianliang; Cui, Tingting; Ban, Tao; Guo, Shanqing; Cui, Lizhen (2015-09-10). "PaddyFrog: detección sistemática de la vulnerabilidad del agente confundido en aplicaciones Android: PaddyFrog: detección sistemática de la vulnerabilidad del agente confundido en aplicaciones Android" . Security and Communication Networks . 8 (13): 2338– 2349. doi : 10.1002/sec.1179 .
  2. "Las ACL no lo hacen" . sourceforge.net .
  3. "El diputado confundido (o por qué podrían haberse inventado las capacidades)" . Archivado del original el 5 de diciembre de 2003. Consultado el 31 de diciembre de 2003 .
  4. "clickjacking: ¡El ayudante del sheriff confundido vuelve a la carga!" . sourceforge.net .
  5. Alfred Spiessens: Patrones de colaboración segura, tesis doctoral. http://www.evoluware.eu/fsp_thesis.pdf Sección 8.1.5
  6. https://krebsonsecurity.com/2026/03/how-ai-assistants-are-moving-the-security-goalposts/#more-73278
  • Norman Hardy, El diputado confundido: (o por qué podrían haberse inventado las capacidades) , ACM SIGOPS Operating Systems Review, Volumen 22, Número 4 (octubre de 1988).
    • Documento publicado por ACM .
    • Texto del documento en el sitio web de Norm Hardy .
    • Texto del documento en el sitio web de la Universidad de Pensilvania .
    • Referencia cruzada de Citeseer .
  • Notas sobre la teoría de las capacidades procedentes de diversas fuentes (recopiladas por Norm Hardy) .
  • Everything2: El ayudante del sheriff confundido (texto de nivel introductorio).