Ir ao contido

Práctica Taller: CVE-2014-6271/Shellshock

Vulnerabilidade servizo GNU Bash (Shellshock) – CVE-2014-6271

  • Explicación: Execución remota de código en Bash mediante a manipulación de variables de entorno con funcións maliciosas.
  • CVE: CVE
  • Gravidade: Crítica
  • CVSS: 9.8
  • Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • Recomendación: Actualizar inmediatamente Bash ás versións parcheadas distribuídas polos provedores oficiais. Se non é posible, desactivar temporalmente servizos que dependan de Bash (CGI, DHCP, etc.) e empregar intérpretes alternativos ata aplicar a corrección definitiva.

Obxectivo

Seguir o procedemento descrito en CVE-2014-6271/Shellshock para comprender como se explota esta vulnerabilidade.

A vulnerabilidade CVE-2014-6271 é coñecida como Shellshock.

Consiste nun fallo na shell Bash (Bourne Again SHell). O problema está en como Bash procesa variables de entorno que conteñen funcións:

  • Bash permite exportar funcións a procesos fillos a través das variables de entorno.
  • O bug fai que, se despois da definición dunha función se engade código adicional, ese código tamén se executa ao abrirse unha nova instancia de Bash, aínda que non debería.
  • Isto abre a porta a execución remota de código (RCE) se un atacante consegue que unha aplicación ou servizo pase variables de entorno maliciosas a Bash.

Exemplo simplificado dunha variable maliciosa:

env x='() { :;}; echo VULNERABLE' bash -c "echo test"

Se o sistema é vulnerable, ademais de imprimir test, tamén executará echo VULNERABLE.

Impacto

  • Permite a un atacante executar comandos arbitrarios en servidores que usan Bash como shell para procesar entradas externas.
  • Servizos moi expostos foron, por exemplo, CGI en servidores web Apache, sistemas DHCP, SSH con configuracións concretas, etc.
  • A gravidade foi considerada crítica (CVSS 10.0).

Mitigación

  • Actualizar Bash ás versións parcheadas liberadas polos distintos distribuidores en setembro de 2014.
  • Como medida temporal, podíanse restrinxir servizos que dependían de Bash, ou cambiar a outros intérpretes de comandos.