¿Las Mac son vulnerables al error Bash shellshock?

58

Red Hat anunció recientemente un importante error relacionado con la seguridad en el shell Bash. Algunos lo llaman el error "shellshock". Dado que OS X se basa en Unix, ¿es vulnerable a los ataques que explotan este error?

Como usuario final, ¿debo preocuparme por una solución inmediata? ¿O es mejor para mí esperar una actualización de software oficial de Apple?

lancha
fuente
Para ver qué acciones afectan a OSX, consulte security.stackexchange.com/questions/68123/…
Marque el
Se actualizó la pregunta para que sea menos un engaño y más una solicitud de consejo para los laicos.
hairboat
1
Apple ha lanzado una solución ahora: support.apple.com/kb/DL1769
AL

Respuestas:

46

Sí, eres técnicamente vulnerable. Entonces, si tiene ganas de entrar en pánico o facturar a un cliente en pánico por unas horas de trabajo de pánico, ¡adelante!

Pero la realidad es que a menos que permita el acceso SSH desde conexiones remotas o un servidor web que ejecute secuencias de comandos del lado del servidor, no está en riesgo. Solo eres realmente vulnerable si alguien que no conoces puede acceder de forma remota a tu máquina y hacerlo de manera que se pueda ejecutar un comando Bash.

Lo que significa que su Mac de escritorio, que realmente no ejecuta aplicaciones de servidor de ningún tipo, no corre ningún riesgo grave. Estoy dispuesto a comer un proverbial "humilde pastel" aquí, pero no creo que la mayoría de los usuarios de Mac estén en riesgo al final del día.

Por lo tanto, este problema preocupa principalmente a los administradores de sistemas en servidores Mac OS X y Unix / Linux expuestos al mundo, no a los usuarios de escritorio que no permiten el uso compartido de SSH.

Quizás exista un riesgo extremo de que se cree un malware o virus Mac para explotar este riesgo, pero lo dudo.

EDITAR: Y para explicar cómo este problema, en mi humilde opinión, no es realmente un problema para la mayoría de los usuarios promedio, sí, puedo ejecutar el siguiente comando desde bashMac OS X 10.9.5:

env x='() { :;}; echo vulnerable' bash -c 'echo hello'

Y veo esto:

vulnerable
hello

¿Adivina qué? Eso es aterrador si no piensas racionalmente en esto. Ya tenía que haber iniciado sesión en mi Mac para incluso abrir la Terminal. Y para negar lo que dije sobre SSH arriba, incluso para llegar al punto en que puedo ejecutar esta prueba, incluso si SSH está habilitado, para empezar aún tendría que haber iniciado sesión. Y luego, digamos que obtengo acceso a través de SSH, el comando no me permite hacer NADA más allá de mis derechos de usuario normales como este:

env x='() { :;}; echo vulnerable' bash -c 'cat /etc/ssh_host_rsa_key'

Lo que significa que si realmente eres vulnerable a ser explotado por este truco, tu seguridad principal en el sistema tendría que estar tan comprometida que el hecho de que bashtenga una falla es realmente el menor de tus problemas.

Esta es una preocupación de un problema general de control y derechos, ya que es el potencial para permitir el acceso no deseado ya que el comportamiento se extiende más allá de las normas esperadas. Pero en mi humilde opinión, no es un riesgo a la par con OpenSSL o los riesgos de la variedad de jardín "déjenme dejar mi contraseña en una nota pegada a mi pantalla".

Al final del día, todavía estoy reparando todos mis servidores Linux / Unix que ejecuto como procedimiento estándar. Y felizmente parchearé los Mac que administro una vez que se solucione el problema. Pero para el uso práctico del día a día, me siento bien sin preocuparme por esto, ya que no entiendo cómo una falla que no permite privilegios de usuario elevados se suma a cualquier cosa.

ACTUALIZACIÓN: Palabra oficial de Apple publicada aquí ; énfasis mío:

"La gran mayoría de los usuarios de OS X no están en riesgo de sufrir vulnerabilidades de bash recientemente informadas", dijo un portavoz de Apple a iMore. control de sistemas vulnerables. Con OS X, los sistemas son seguros por defecto y no están expuestos a explotaciones remotas de bash a menos que los usuarios configuren servicios avanzados de UNIX. Estamos trabajando para proporcionar rápidamente una actualización de software para nuestros usuarios avanzados de UNIX ".

Traducción: ¿Lo que dije anteriormente sobre esto es un problema del servidor y no un problema del cliente? Exactamente.

Un UDPATE FINAL: Para cualquiera que tenga dificultades para compilar desde la fuente, a partir del 29 de septiembre, Apple ha lanzado oficialmente parches para Mac OS X 10.9.5, 10.8.5 y 10.7.5:

AÚN OTRA ACTUALIZACIÓN FINAL: ¡ Y ahora, Apple acaba de lanzar una actualización de seguridad combinada hoy que también incluye la bashactualización !

Nota: La Actualización de seguridad 2014-005 incluye el contenido de seguridad de OS X bash Update 1.0

JakeGould
fuente
77
"o un servidor web que ejecuta secuencias de comandos del lado del servidor", o tiene una aplicación ejecutándose, escuchando en un puerto abierto que permite realizar llamadas RPC que terminan ejecutando comandos de shell. Esto podría ser cualquier cantidad de cosas, ya que hay muchas aplicaciones estándar que hacen su RPC. Creo que esta respuesta es muy ingenua. Es muy fácil estar "ejecutando un servidor web" sin darse cuenta en el curso de la ejecución de una aplicación que hace algo de tipo cliente-servidor.
Ian C.
3
@IanC. ¿Puede proporcionar un ejemplo donde OS X fuera de la caja sería realmente vulnerable? Por ejemplo, ¿algo como WebEx o GotoMeeting se acercaría incluso a las capacidades de Bash? El punto es que no puedo pensar en un escenario simple de instalación de OS X que realmente exponga las cosas. ¿Puedes?
JakeGould
8
La cuenta de invitado no está disponible para ssh. De hecho, ni siquiera es posible ponerlo a disposición de ssh, IIRC. El hecho es que, para la gran mayoría de los usuarios de OS X, la vulnerabilidad bash no es un problema en absoluto. Para aquellos de nosotros donde es un problema, necesitamos recompilar bash tan pronto como esté disponible una solución probada, pero eso no es ahora.
lbutlr
3
@IanC. Bien, ejemplos justos. Pero todavía se está perdiendo el punto: ¿cómo se puede aprovechar esta vulnerabilidad en cada ejemplo que está brindando? En cada caso, un usuario necesitaría acceso al sistema para comenzar, ¿y luego qué? No estoy siendo impertinente acerca de esto, pero todavía no entiendo cuál sería el riesgo. ¿Alguien, por ejemplo, tendría que abrirse camino a través de la API de Plex para luego hacer qué exactamente para hacer algo fuera de los derechos de usuario normales y los privilegios de acceso?
JakeGould
66
@danielAzuelos "Todos son vulnerables siempre que la cuenta de invitado esté abierta: [!" La cuenta de invitado no tiene nada que ver bash. Entonces, ¿el miedo se basa en qué exactamente? Además, incluso si la cuenta de invitado está abierta y de alguna manera bashes utilizable, ¿entonces qué? Por lo que veo, supongo que usar este exploit no tendría privilegios elevados ni nada parecido. En serio, estoy dispuesto a retroceder desde mi postura, pero esto parece más pánico basado en no mucho, mientras que OpenSSL era un problema real.
JakeGould
37

¡Sí!

Escribe esto en tu caparazón

env x='() { :;}; echo vulnerable' bash -c 'echo hello'

Si dice, vulnerableentonces eres vulnerable.

Si dice

bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
hello

entonces eres bueno.

Editar: enlace a la solución

Chris Aitchison
fuente
44
Gracias. Actualicé la pregunta: si descubrimos que somos vulnerables, ¿cómo puede solucionarlo un usuario de Mac?
hairboat
3
@abbyhairboat Publicó mi respuesta. A menos que esté ejecutando un servidor expuesto al mundo exterior, no existe ningún riesgo práctico. Los administradores del servidor son los que deben preocuparse por esto.
JakeGould
1
→ abby: consulte esta respuesta relacionada: apple.stackexchange.com/a/146851/22003 .
dan
2
Intente esto env X="() { :;} ; echo busted" /bin/sh -c "echo completed": incluso después de parchear mi sistema, este tose un 'roto' en la línea de comando. Bah.
Trane Francks
1
@ Mark no, zsh está a salvo. necesita reemplazar "bash -c" con "zsh -c" para probarlo.
ismail
3

Como usuario final , verifique que:

  • su cuenta de invitado está apagada:

    Preferencias del sistema> Usuarios y grupos> Usuario invitado
    
  • su sshacceso está desactivado:

    Preferencias del sistema> Compartir> Inicio de sesión remoto
    

Por defecto, ambos están apagados en Mavericks.

Como usuario final , es más seguro esperar una actualización de seguridad oficial de Apple que corrija esta bashvulnerabilidad.

dan
fuente
1
Estos son irrelevantes. Cualquiera de estos, por su propia naturaleza, otorga a los usuarios acceso para ejecutar comandos en el sistema, por lo que si los tiene habilitados, es su intención permitir que los usuarios ejecuten comandos. El error Shellshock es un medio para los usuarios a quienes no pretendía ejecutar comandos para poder hacerlo, por ejemplo, un usuario del servidor web que ejecuta. Entonces, su respuesta debería decir "Desactivar el uso compartido de la Web" (pero eso es solo una cosa para verificar)
Josh
Me molesta que Apple no haya aconsejado desactivar esa configuración. ¿Quién los habilitaría? Me gustaría. Soy usuario de Mac desde 1986, desarrollador de aplicaciones web a tiempo completo (así que ssh es mi vida) y padre (por lo que una cuenta de invitado para los niños no es una mala idea). Conozco a muchas personas que son como yo que usan las computadoras portátiles de Apple. ¿Quieres perdernos? Dejar esta vulnerabilidad abierta es una buena manera.
minopret
2

Todas las máquinas Mac OS X son técnicamente vulnerables a "Shellshock", hasta que Apple emite una actualización de seguridad que parchea bash, pero ...

Tu pregunta debería ser: ¿Puedo ser hackeado de forma remota?

Hay tanto software que se usa bashdistraídamente que responder esa pregunta es extremadamente difícil. Si está preocupado, sugeriría varios cambios System Preferencespara evitar exploits remotos:

  • Deshabilite TODOS los servicios para compartir en Preferencias para compartir.
  • Habilite el firewall en Seguridad y privacidad.

Si está particularmente preocupado, presione el Firewallbotón de opciones para:

  • Deseleccionar Automatically allow signed software to receive incoming connections.
  • Compruebe Block all incoming connections.

Todavía hay una posibilidad respetable de que seas vulnerable a un ataque de nivel usando DHCP, Bonjour, etc., pero bueno, si necesitas otro servicio, obviamente podrías dejarlo en funcionamiento mientras esperas que no sea explotado. Y también deberá dejar el firewall más abierto. Probablemente estará bien si su máquina vive detrás de otro firewall.

Además, ¿existen ataques de escalada de privilegios locales habilitados por "Shellshock"? Sí, casi con seguridad. Sin embargo, no me preocuparía porque Mac OS X tiene suficientes ataques similares. Apple no parchea rápidamente los errores de escalada de privilegios locales. Y Apple los crea con frecuencia con los servicios habilitados para Apple Script. Solo asuma que todas las máquinas Mac OS X son siempre vulnerables a los ataques locales. Si necesita asistir a conferencias de hackers como DEFCON, cómprese una caja de Linux para ese propósito.

Actualización: hay instrucciones para recompilar su propio bash fijo y otras preguntas que también se tratan . Lo haré yo mismo, pero en mi humilde opinión, es excesivo si no ejecuta ningún servidor y mantiene el firewall de Apple activado de todos modos.

Actualización: si se siente cómodo con el uso de la terminal, hay un programa llamado execsnoopmencionado aquí que le permitirá probar si bash generalmente es llamado por los procesos de su servidor. No es una bala mágica ya que el proceso del servidor puede llamar a bash solo en situaciones inusuales, pero le dará una buena idea.

Finalmente, Apple no es muy bueno parcheando vulnerabilidades de seguridad, pero son buenos en relaciones públicas, por lo que esto se parcheará relativamente rápido. Por lo tanto, es razonable pensar "No necesito correr más rápido que el oso, solo necesito correr más rápido que la gran cantidad de servidores fácilmente explotables en Internet". :)

Jeff Burdges
fuente
2
No hay posibilidad de que las Mac sean vulnerables a un ataque usando DHCP, ya que no usa Bash.
1
¿Como sabes eso? El aviso inicial fue un cliente DHCP vulnerable. Y muchos artículos especulan que los clientes DHCP de Mac OS X y / o iOS pueden ser vulnerables. Se debe suponer que todos los servidores son vulnerables a menos que se demuestre lo contrario.
Jeff Burdges
1
No, no deberían serlo; eso es FUD absoluto. Puede examinar tanto el código fuente abierto para la implementación dhcp de OS X como medir las llamadas del sistema usted mismo para verificar.
3
@JeffBurdges, OS X no ha utilizado shell exec con DHCP desde 10.3, y antes de que bash no estuviera instalado en el sistema. DHCP en OS X simplemente no es un problema con Shellshock. (Una cosa menos de qué preocuparse. :))
Trane Francks
1
→ Jeff: por favor considere: strings /usr/libexec/bootpd | egrep '/bin|bash'y nm -a /usr/libexec/bootpd | egrep 'fork|exec'. Al leer la salida de estos comandos en diferentes versiones de MacOS X, puede reconsiderar su análisis de riesgos debido a dhcpdMacOS X ... pero este solo :(.
dan
2

Hice esta herramienta tan pronto como escuché sobre esta vulnerabilidad. Le proporcionará un enlace a un artículo para parchear su shell si la herramienta determina que es vulnerable.

Requiere Mac OS X 10.6 y superior.

Thomas Jones
fuente
3
Tal vez solo soy yo ... pero la idea de ejecutar el código de una persona al azar para probar un exploit parece una muy mala idea cuando puedes pegar fácilmente una cadena (eso claramente solo ejecuta la prueba y nada más) en un ventana de terminal.
Joe
Estoy de acuerdo, es por eso que la fuente está en code.google.com/p/shellshock-check
Thomas Jones
A veces, sin embargo, puede ofrecer facilidad de uso para probar múltiples sistemas.
Thomas Jones
No veo el beneficio de esta cosa. Verificar la vulnerabilidad es mucho más fácil al pegar una línea de comando simple en la ventana del terminal.
Albert Godfrind
Sin embargo, cuando pruebo varias máquinas, especialmente en mi caso, como es lo que hago, poner una unidad flash y abrir Shellshock Check.app es mucho más fácil que abrir Safari, buscar el comando bash para verificar, luego abrir Terminal, pegar eso comando y luego presionando Enter. Es mucho más rápido conectar una unidad flash y abrir una aplicación.
Thomas Jones