http://www.iec.csic.es/criptonomicon/cgi/

 

Seguridad en CGI

Cada vez que rellenamos un formulario y enviamos nuestros datos o cada vez que utilizamos un buscador para encontrar información, tanto si lo sabemos como si no, estamos haciendo uso de programas CGI. En esta sección del Criptonomicón se describirán las amenazas a que están expuestos los servidores Web que incluyen aplicaciones CGI para llevar a cabo funciones avanzadas de interacción con el cliente, así como los propios usuarios, que al enviar información posiblemente confidencial, podrían ver violada su intimidad si dicha información fuera capturada por un atacante.

Se describirán a lo largo de estas páginas los riesgos y fallos más comunes, suministrándose abundantes consejos y ejemplos de cómo deben escribirse los CGI y de cómo configurar el servidor para que esta clase de problemas no tenga lugar.

Dónde está el riesgo

Cuando los usuarios envían un formulario o invocan un CGI de alguna otra forma, en definitiva se les está permitiendo ejecutar remotamente un programa en el servidor. Es más, puesto que la mayoría de CGI's aceptan datos de la entrada de usuario (bien después de rellenar un formulario o directamente desde la línea de URL), en esencia se les brinda a los usuarios la oportunidad de controlar cómo se ejecutará el CGI, de manera que podrían intentar la introducción de una serie de parámetros inesperados hábilmente manipulados para que el CGI funcionase maliciosamente.

Vulnerabilidad

El punto vulnerable de la programación en CGI, es decir, la amenaza que representan para la seguridad del servidor, es doble:

Server-side includes (SSI)

Los server-side includes (SSI) son directivas que se pueden incrustar en una página HTML, de manera que presentará como parte de la página el contenido de un fichero o la salida de un comando. Aunque los SSI pueden ser muy útiles y dotan de gran flexibilidad a una página Web, también pueden resultar computacionalmente costosos, pueden impedir la portabilidad de las páginas Web y tal vez más importante, pueden llegar a abrir agujeros de seguridad, ya que el autor de la página HTML decide qué programas se ejecutarán y con qué argumentos. En el caso peor, se podría llegar a ejecutar cualquier comando y así producir daños irreparables o revelar información. Por este motivo, a no ser que se tenga una buena razón para usarlos, lo más conveniente es deshabilitarlos.

Para más información sobre riesgos de las directivas de Server-Side Includes, visita la sección sobre SSI.

Consejos y Orientaciones

Cómo decir si un CGI es seguro

  1. ¿Es muy complejo?
  2. ¿Lee o escribe ficheros en el servidor?
  3. ¿Interactúa con otros programas del sistema?
  4. ¿Corre con privilegios suid?
  5. ¿Se valida la entrada procedente de formularios?
  6. ¿Se emplean nombres de camino explícitos?

Preguntas tomadas de la FAQ sobre seguridad en WWW.

A evitar

No fiarse de los campos ocultos

Los campos ocultos se denominan así porque no se visualizan en la pantalla del navegador, pero sí se ven si se lista el código fuente en HTML de la página. Por lo tanto, cualquiera puede cargar la página en su disco local y editarla, modificando los valores de los campos ocultos. En consecuencia, nunca se deben utilizar para contener información confidencial ni confiar en ellos para almacenar información sensible (como precio de un producto). El servidor deberá contrastar la información recibida procedente de los campos ocultos.

No fiarse del lugar de ejecución

Como ya se ha dicho, los CGI's no tienen por qué ejecutarse necesariamente desde el formulario donde aparecen. Pueden mandarse ejecutar directamente desde la ventana de URL, por lo que podrían faltar parámetros o estar manipulados.

Recursos sobre Seguridad en CGI

A continuación cito los recursos que he utilizado como fuentes para esta sección sobre CGI y otros que me han parecido interesantes.

CGI (Server) Scripts

Capítulo de la FAQ sobre seguridad en WWW de Lincoln Stein, dedicado a CGI. Excelente.

CGI Security

Capítulo 9 del libro CGI Developer's Guide por Eugene Eric Kim.

CGI Security Compilation

Extensa compilación de textos sobre seguridad en CGI, con ejemplos en C y Perl.

CGI Security Tutorial

Completo curso sobre seguridad en CGI.

Security Issues When Installing and Customizing Pre-Built Web Scripts

Recomendaciones a tener en cuenta cuando se instalan guiones CGI en nuestro servidor.

Are You Safe?

Algunas ideas sobre seguridad en el servidor y también en CGI.

Writing secure CGI scripts

Algunos breves consejos a la hora de escribir guiones CGI.

CGI Security

Colección de punteros a recursos sobre seguridad en CGI.

The CGI Collection: Security

Más punteros a recursos sobre el tema.

The CGI Resource Index: Documentation: Security

 

 

Hosted by www.Geocities.ws

1