September 25, 2014

"CVE-2014-6271: remote code execution through bash" panico esagerato!

Come forse avrete già letto ieri è stata rilasciata una patch per risolvere un problema grave di bash.
Praticamente è possibile eseguire codice da remoto o da locale, semplicemente mediante un assegnamento di variabile "speciale".
Per esempio:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

Secondo me però c'è più panico di quello che serva. Un blog famoso (uno fra tanti) ha scritto una serie di castronerie giganti e ora cerco di chiarire, una volta per tutte, qual è l'incidentalità di questo problema.

  1. Quasi nessun dispositivo embedded usa bash, per il semplice motivo che è grossa e occupa tante risorse. La stragrande maggioranza usano una shell che si chiama ash e che si trova nel pacchetto busybox. Quindi il problema di dover aggiornare tv, router, etc , descritto da attivissimo, è un falso-problema.
  2. Debian e Ubuntu (che sono fra le distro più usate) usano dash come shell di default (#!/bin/sh), per cui meno soggetti al problema.
  3. sudo, il pacchetto usato di default su Ubuntu per poter diventare root e/o eseguire comandi come root non è soggetto (di default) al problema, in quanto le variabile d'ambiente sono ripulite (opzione env_reset). Quindi se anche avete in sudoers dei comandi di shell da far eseguire a un altro utente come root, in linea di massima non può sfruttare questa vulnerabilità.
  4. Praticamente nessuno usa CGI scritte in bash nel 2014! Inoltre il server web non gira con i privilegi di root, per cui l'eventuale attaccante dovrebbe poi trovare un altro modo di diventare root.
Aggiornate pure bash, o usate qualche workaround se non volete aggiornarlo, ma non preoccupatevi eccessivamente!