La escalada de privilegios es el acto de explotar un error , un defecto de diseño o un descuido de configuración en un sistema operativo o una aplicación de software para obtener acceso elevado a recursos que normalmente están protegidos de una aplicación o un usuario . El resultado es que una aplicación o un usuario con más privilegios de los previstos por el desarrollador de la aplicación o el administrador del sistema pueden realizar acciones no autorizadas .
La mayoría de los sistemas informáticos están diseñados para su uso con varias cuentas de usuario, cada una de las cuales tiene capacidades conocidas como privilegios . Los privilegios más comunes incluyen la visualización y edición de archivos o la modificación de archivos del sistema.
La escalada de privilegios significa que los usuarios reciben privilegios que no les corresponden. Estos privilegios se pueden utilizar para eliminar archivos, ver información privada o instalar programas no deseados, como virus. Suele ocurrir cuando un sistema tiene un error que permite eludir la seguridad o, alternativamente, tiene suposiciones de diseño erróneas sobre cómo se utilizará. La escalada de privilegios se produce de dos formas:
Este tipo de escalada de privilegios ocurre cuando el usuario o proceso puede obtener un nivel de acceso más alto que el previsto por un administrador o desarrollador de sistemas, posiblemente realizando operaciones a nivel de kernel .
En algunos casos, una aplicación con privilegios elevados supone que solo se le proporcionará información que coincida con su especificación de interfaz, por lo que no valida esta información. Entonces, un atacante puede aprovechar esta suposición para ejecutar código no autorizado con los privilegios de la aplicación:
/etc/cron.d
, solicitara que se realizara un volcado de memoria en caso de que fallara y luego otro proceso lo eliminara . El archivo de volcado de memoria se habría colocado en el directorio actual del programa, es decir, /etc/cron.d
, y cron
lo habría tratado como un archivo de texto que le indicaba que ejecutara los programas según lo programado. Debido a que el contenido del archivo estaría bajo el control del atacante, este podría ejecutar cualquier programa con privilegios de root .En seguridad informática, el jailbreaking se define como el acto de eliminar limitaciones que un proveedor intentó codificar en su software o servicios. [2] Un ejemplo común es el uso de conjuntos de herramientas para salir de un chroot o jail en sistemas operativos tipo UNIX [3] o eludir la gestión de derechos digitales (DRM). En el primer caso, permite al usuario ver archivos fuera del sistema de archivos que el administrador pretende poner a disposición de la aplicación o el usuario en cuestión. En el contexto de DRM, esto permite al usuario ejecutar código definido arbitrariamente en dispositivos con DRM, así como escapar de las restricciones de tipo chroot. El término se originó con la comunidad de jailbreaking de iPhone / iOS y también se ha utilizado como un término para el hackeo de PlayStation Portable ; estos dispositivos han sido objeto repetidamente de jailbreaks, lo que permite la ejecución de código arbitrario, y algunas veces esos jailbreaks se han desactivado mediante actualizaciones del proveedor.
Los sistemas iOS, incluidos el iPhone , iPad y iPod Touch, han sido objeto de intentos de jailbreak de iOS desde que fueron lanzados y continúan con cada actualización de firmware. [4] [5] Las herramientas de jailbreak de iOS incluyen la opción de instalar interfaces de paquetes como Cydia e Installer.app , alternativas de terceros a la App Store , como una forma de encontrar e instalar ajustes y binarios del sistema. Para evitar el jailbreak de iOS, Apple ha hecho que la ROM de arranque del dispositivo ejecute comprobaciones de blobs SHSH para no permitir cargas de kernels personalizados y evitar degradaciones de software a firmware anterior que se pueda jailbreakear. En un jailbreak "sin ataduras", el entorno de iBoot se cambia para ejecutar un exploit de ROM de arranque y permitir el envío de un cargador de arranque de bajo nivel parcheado o hackear el kernel para enviar el kernel jailbreakeado después de la comprobación SHSH.
Existe un método similar de jailbreak para los teléfonos inteligentes de la plataforma S60 , donde utilidades como HelloOX permiten la ejecución de código no firmado y acceso completo a los archivos del sistema. [6] [7] o firmware editado (similar al firmware pirateado M33 utilizado para PlayStation Portable ) [8] para eludir las restricciones sobre el código no firmado . Desde entonces, Nokia ha emitido actualizaciones para frenar el jailbreak no autorizado, de manera similar a Apple.
En el caso de las consolas de juegos, el jailbreaking se utiliza a menudo para ejecutar juegos caseros . En 2011, Sony , con la ayuda del bufete de abogados Kilpatrick Stockton , demandó a George Hotz, de 21 años, y a los asociados del grupo fail0verflow por jailbreakear la PlayStation 3 (véase Sony Computer Entertainment America v. George Hotz y PlayStation Jailbreak ).
El jailbreaking también puede ocurrir en sistemas y software que utilizan modelos de inteligencia artificial generativos, como ChatGPT . En los ataques de jailbreaking a sistemas de inteligencia artificial , los usuarios pueden manipular el modelo para que se comporte de manera diferente a la programada, lo que permite revelar información sobre cómo se le dio instrucciones al modelo e inducirlo a responder de manera anómala o dañina. [9] [10]
Los teléfonos Android pueden rootearse oficialmente ya sea siguiendo un proceso controlado por el fabricante, usando un exploit para obtener el root o instalando un recovery personalizado. Los fabricantes permiten rootear mediante un proceso que ellos controlan, mientras que algunos permiten rootear el teléfono simplemente presionando combinaciones de teclas específicas en el momento del arranque, o mediante otros métodos autoadministrados. El uso de un método del fabricante casi siempre restablece el dispositivo a la configuración de fábrica, lo que hace que el rooteo sea inútil para las personas que desean ver los datos, y también anula la garantía de forma permanente, incluso si el dispositivo se desrootea y se vuelve a flashear. Los exploits de software comúnmente apuntan a un proceso de nivel raíz que es accesible para el usuario, mediante un exploit específico del kernel del teléfono, o mediante un exploit conocido de Android que se ha parcheado en versiones más nuevas; al no actualizar el teléfono o al degradar intencionalmente la versión.
Los sistemas operativos y los usuarios pueden utilizar las siguientes estrategias para reducir el riesgo de escalada de privilegios:
Investigaciones recientes han demostrado qué puede proporcionar protección eficaz contra ataques de escalada de privilegios. Entre ellas, se incluye la propuesta del observador de kernel adicional (AKO), que previene específicamente los ataques centrados en las vulnerabilidades del sistema operativo. Las investigaciones muestran que AKO es, de hecho, eficaz contra los ataques de escalada de privilegios. [13]
La escalada de privilegios horizontal ocurre cuando una aplicación permite al atacante obtener acceso a recursos que normalmente habrían estado protegidos de una aplicación o usuario . El resultado es que la aplicación realiza acciones con el mismo usuario pero en un contexto de seguridad diferente al previsto por el desarrollador de la aplicación o el administrador del sistema ; esto es efectivamente una forma limitada de escalada de privilegios (específicamente, la suposición no autorizada de la capacidad de suplantar a otros usuarios). En comparación con la escalada de privilegios vertical, la horizontal no requiere actualizar el privilegio de las cuentas. A menudo se basa en los errores del sistema. [14]
Este problema se produce a menudo en aplicaciones web . Considere el siguiente ejemplo:
Esta actividad maliciosa puede ser posible debido a debilidades o vulnerabilidades comunes de las aplicaciones web.
Las posibles vulnerabilidades de las aplicaciones web o situaciones que pueden provocar esta condición incluyen:
Solo quería informarles que el foro está fuera de servicio por mantenimiento. Volverá a estar en línea en un día o dos (me equivoqué un poco con los archivos de configuración y necesito restaurar una copia de seguridad de un día, así que pensé por qué no actualizar toda la plataforma del servidor)