Estoy trabajando en un proyecto que usaría bash y FastCGI para crear un pseudo-CMS.
¿Hay algún tipo de preocupación de seguridad a tener en cuenta dentro de FastCGI en un script bash bien escrito (por ejemplo, desbordamientos de búfer y similares)?
Estoy trabajando en un proyecto que usaría bash y FastCGI para crear un pseudo-CMS.
¿Hay algún tipo de preocupación de seguridad a tener en cuenta dentro de FastCGI en un script bash bien escrito (por ejemplo, desbordamientos de búfer y similares)?
Los desbordamientos de búfer no son realmente relevantes para bash. Algo que haces necesita cuidar es la validación de entrada. Debe validar todos los comentarios del usuario para evitar cualquier forma de inyección.
Debería echar un vistazo a la Guía de pruebas de OWASP ya que cubren todo tipo de vulnerabilidades Relevante para aplicaciones web. En gran medida, es independiente del lenguaje, aunque los ejemplos podrían estar más centrados en lenguajes de programación reales diseñados para escribir aplicaciones web.
P.S. Realmente necesito saber: ¿Por qué escribes un CMS en bash ?
Sí . No escriba scripts CGI en bash puro. Bash es uno de los peores idiomas si se trata de una entrada no confiable. Después del incidente de Shellshock, las personas observaron a Bash con más cuidado y notaron que estaba absolutamente empacado con problemas de seguridad. Lamentablemente, bash no solo es malo porque el intérprete en sí mismo es inseguro, aunque ciertamente lo es. El paradigma del lenguaje en sí no se construyó sobre una base segura, por lo que los scripts, incluso cuando siguen las mejores prácticas, son muy difíciles de entender. Aunque generalmente está bien para el uso de la línea de comandos, usarlo para scripts CGI es una receta para el desastre.
Si realmente tiene que escribirlo en bash puro, le recomiendo que ejecute un extenso análisis estático en el script, así como un análisis dinámico (fuzzing). Algunas herramientas de análisis estático que puede querer ver son ABASH , shellcheck , y checkbashisms . El tercero no es una herramienta de seguridad, pero puede ayudar a probar la corrección del código. Debería estar completamente familiarizado con las mejores prácticas para shell scripting, que no se limita a "citar sus variables".
También debe asegurarse de limitar el daño que el proceso CGI puede hacer al resto del sistema. Asegúrese de que los permisos estén ajustados y controle su proceso httpd. También es posible que desee utilizar controles de acceso obligatorios, como SELinux si está en una distribución basada en RHEL, o AppArmor si está en una distribución basada en Debian. Aproveche al máximo el PAM para limitar los recursos del proceso. Suscríbase a varias listas de correo relacionadas con la seguridad para poder actualizar bash lo antes posible cada vez que surjan nuevas vulnerabilidades. También es posible que desee instalar auditd y configurarlo para auditar ampliamente el sistema, así como configurar el script en -x y exportar la traza a los registros. Esto te ayudará a identificar los intentos de explotación mucho más fácilmente. Todas estas son técnicas genéricas de fortalecimiento del servidor, pero debe aplicarlas en la mayor medida posible si va a usar deliberadamente algo como bash para CGI.
Lea otras preguntas en las etiquetas web-application bash