¿Qué comandos de Linux pueden ejecutar el código proporcionado por el usuario? [cerrado]

3

Como se explica aquí ( enlace ), el comando tar Se puede utilizar para ejecutar código arbitrario.

¿Hay una lista de comandos de Linux, que incluya preferiblemente comandos en paquetes en las repositorios oficiales de la distribución, junto con si se sabe que tienen alguna funcionalidad que ejecute el código suministrado por el usuario? Por supuesto, tal análisis no podría determinar que un comando sea seguro, solo que no hay una forma bien publicada de ejecutar código arbitrario.

EDITAR: El sistema tiene una gran cantidad de comandos en la lista blanca, y aunque hay un uso legítimo para todos ellos (por ejemplo, kill para eliminar una conexión VPN bloqueada), creo que también podría haber algunos usos ilegítimos. No estoy preguntando si aplicar el principio de privilegio mínimo, pero si lo estoy aplicando de manera efectiva aquí. En lugar de solo preguntar sobre los comandos específicos de mi sistema, decidí hacer una pregunta más general.

    
pregunta Arcanum 28.06.2018 - 04:02
fuente

2 respuestas

1

¿Contra qué estás tratando de protegerte? Parece que está tratando de protegerse contra usuarios malintencionados que intentan obtener acceso adicional al sistema de forma deliberada.

En ese caso, sugeriría tratar de encontrar otra forma para que los usuarios logren lo mismo, sin usar sudo. Escritos suid bien escritos que logran lo mismo, por ejemplo. sudo debe limitarse a los usuarios en los que confía, y los usuarios lo suficientemente competentes para comprender los comandos de Linux (más abajo).

También debe considerar el caso en que los usuarios no son maliciosos, pero tienen una combinación mortal de incompetencia y confianza excesiva. Hace varios años le di acceso sudo en un servidor de desarrollo a un desarrollador que no era linux savy. En una semana, destruyó completamente el entorno del servidor linux con un comando buscar-exec que encontró en Google para corregir su código. Ella no entendió las implicaciones del comando find -exec, y cambió por completo todos los permisos en el sistema de archivos (incluida la configuración de binarios críticos del sistema como no ejecutables). Reconstruí el servidor, hablé con ella sobre el poder del comando de búsqueda y eliminé el acceso a sudo.

En ambos casos, es probable que aún puedas utilizar la lista blanca para brindarte un cierto nivel de protección. El problema con este enfoque es que los comandos de linux en bruto ejecutados como root son extremadamente poderosos, y es difícil anticipar todas las formas en que la malicia o la incompetencia podrían morderlo. Honestamente, eliminar la necesidad de sudo en primer lugar es probablemente la mejor opción.

    
respondido por el Steve Sether 28.06.2018 - 17:21
fuente
0

El comentario de @ Muhammad tiene el derecho de hacerlo. Si desea limitar lo que pueden hacer sus usuarios / software local e impedir un comportamiento arbitrario, pero también desea otorgar acceso a sudo , su opción only es agregar comandos a la lista blanca (ya sea combinaciones del programa completo) rutas con parámetros o una falta de parámetros explícitamente especificada, o simplemente rutas de programa completas que no tienen forma de sobrescribir archivos arbitrarios o de ejecución de código (lo que equivale a la misma cosa) sin importar los parámetros). El archivo sudoers admite esto.

Además, debe asegurarse de que esos comandos solo se instalen en ubicaciones en las que los usuarios no root no puedan escribir. Además, debe evitar los comandos que permiten la modificación arbitraria de nombres de archivos o contenidos. Si permite sudo con /bin/ls (lo que podría ser seguro; no estoy haciendo ninguna promesa aquí) pero también permite algún comando que me permita poner texto arbitrario en un archivo, puedo usar el segundo comando para reemplazar a /bin/ls con un script de shell que hace lo que quiero, y luego ejecuta sudo ls y realiza acciones arbitrarias como root (o cualquier usuario que /bin/ls esté configurado para ejecutarse como en sudoers).

En general, el acceso a sudo debe estar restringido a usuarios de plena confianza o a comandos muy específicos que deben ejecutarse con ciertos privilegios, pero no pueden usarse como apalancamiento para obtener esos privilegios de manera más amplia. Tenga en cuenta que puede mezclarlos (por ejemplo, permitir que todos los miembros del grupo "rueda" utilicen comandos arbitrarios y agregar a la lista blanca comandos específicos para otros usuarios).

EDITAR. Anteriormente dije que tenías que asegurarte de que estabas filtrando en rutas completas, pero los sudoers solo permiten rutas completas y sudo builtins, por lo que es una especie de pista falsa.

    
respondido por el CBHacking 28.06.2018 - 13:29
fuente

Lea otras preguntas en las etiquetas