¿Cómo detectar y mitigar la vulnerabilidad de escalada de privilegios de Intel en un sistema Linux (CVE-2017-5689)?

26

Según la publicación del centro de seguridad de Intel del 1 de mayo de 2017, existe una vulnerabilidad crítica en los procesadores Intel que podría permitir que un atacante obtenga privilegios (escalada de privilegios) usando AMT, ISM y SBT.

Debido a que el AMT tiene acceso directo al hardware de red de la computadora, esta vulnerabilidad de hardware permitirá que un atacante acceda a cualquier sistema.

Existe una escalada de vulnerabilidad de privilegios en Intel® Active Management Technology (AMT), Intel® Standard Manageability (ISM) e Intel® Small Business Technology versiones firmware versiones 6.x, 7.x, 8.x 9.x, 10 .x, 11.0, 11.5 y 11.6 que pueden permitir a un atacante sin privilegios obtener el control de las funciones de administración proporcionadas por estos productos. Esta vulnerabilidad no existe en las PC de consumo basadas en Intel.

Intel ha lanzado una herramienta de detección disponible para Windows 7 y 10. Estoy usando información de dmidecode -t 4y al buscar en el sitio web de Intel descubrí que mi procesador usa Intel® Active Management Technology (Intel® AMT) 8.0.

Productos afectados:

El problema se ha observado en las versiones de firmware de capacidad de administración de Intel 6.x, 7.x, 8.x 9.x, 10.x, 11.0, 11.5 y 11.6 para Intel® Active Management Technology, Intel® Small Business Technology e Intel ® Capacidad de gestión estándar. Las versiones anteriores a 6 o posteriores a 11.6 no se ven afectadas.

La descripción:

Un atacante local no privilegiado podría proporcionar funciones de capacidad de administración obteniendo privilegios de red local o privilegios del sistema local en las SKU de capacidad de administración de Intel: Intel® Active Management Technology (AMT), Intel® Standard Manageability (ISM) e Intel® Small Business Technology (SBT)

¿Cómo puedo detectar y mitigar fácilmente la vulnerabilidad de escalada de privilegios de Intel en un sistema Linux?

GAD3R
fuente
1
El caso se complica aún más cuando muchos de nosotros estamos usando máquinas virtuales; para máquinas reales, ¿sería suficiente buscar la presencia de servicio en UDP 16992? +1
Rui F Ribeiro
2
Pasos preventivos: use SPARC (lo sé, lo sé, no es una solución factible). Tener un +1
Fox
3
@Fox es bastante divertido que la CPU ME en los procesadores Intel sea un SPARC hoy en día ;-).
Stephen Kitt
2
@StephenKitt ¿En serio? ¡Podría tener que repensar mi postura sobre los chips de Intel! Casi todas mis máquinas son PPC o SPARC, así que tengo que admitir que mi sesgo es real
Fox

Respuestas:

18

La publicación más clara que he visto sobre este tema es la de Matthew Garrett (incluidos los comentarios).

Matthew ahora ha lanzado una herramienta para verificar su sistema localmente: compílelo, ejecútelo con

sudo ./mei-amt-check

e informará si AMT está habilitado y aprovisionado, y si es así, las versiones de firmware (ver más abajo). El archivo README tiene más detalles.

Para escanear su red en busca de sistemas potencialmente vulnerables, escanee los puertos 623, 624 y 16992 a 16993 (como se describe en el propio documento de mitigación de Intel ); por ejemplo

nmap -p16992,16993,16994,16995,623,664 192.168.1.0/24

analizará la red 192.168.1 / 24 e informará el estado de todos los hosts que responden. Ser capaz de conectarse al puerto 623 puede ser un falso positivo (otros sistemas IPMI usan ese puerto), pero cualquier puerto abierto de 16992 a 16995 es un muy buen indicador de AMT habilitado (al menos si responden adecuadamente: con AMT, eso significa una respuesta HTTP en 16992 y 16993, este último con TLS).

Si ve respuestas en los puertos 16992 o 16993, conectarse a ellos y solicitar el /uso de HTTP devolverá una respuesta con una Serverlínea que contiene "Intel (R) Active Management Technology" en sistemas con AMT habilitado; esa misma línea también contendrá la versión del firmware AMT en uso, que luego se puede comparar con la lista dada en el aviso de Intel para determinar si es vulnerable.

Vea la respuesta de CerberusSec para un enlace a un script que automatiza lo anterior.

Hay dos formas de solucionar el problema "correctamente":

  • actualizar el firmware, una vez que el fabricante del sistema proporcione una actualización (si alguna vez)
  • evite utilizar el puerto de red que proporciona AMT, ya sea mediante el uso de una interfaz de red no compatible con AMT en su sistema, o mediante el uso de un adaptador USB (muchas estaciones de trabajo AMT, como los sistemas C226 Xeon E3 con puertos de red i210, solo tienen un AMT- interfaz de red capaz: el resto es seguro; tenga en cuenta que AMT puede funcionar a través de wi-fi, al menos en Windows, por lo que el uso de wi-fi incorporado también puede comprometer).

Si ninguna de estas opciones está disponible, está en territorio de mitigación. Si su sistema compatible con AMT nunca se ha aprovisionado para AMT, entonces está razonablemente seguro; aparentemente, habilitar AMT en ese caso solo se puede hacer localmente y, por lo que puedo decir, es necesario usar el firmware de su sistema o el software de Windows. Si AMT está habilitado, puede reiniciar y usar el firmware para deshabilitarlo (presione CtrlPcuando aparezca el mensaje AMT durante el arranque).

Básicamente, si bien la vulnerabilidad de privilegios es bastante desagradable, parece que la mayoría de los sistemas Intel no se ven realmente afectados. Para sus propios sistemas que ejecutan Linux u otro sistema operativo similar a Unix, la escalada probablemente requiera acceso físico al sistema para habilitar AMT en primer lugar. (Windows es otra historia). En los sistemas con múltiples interfaces de red, como lo señala Rui F Ribeiro , debe tratar las interfaces compatibles con AMT de la misma manera que trataría cualquier interfaz administrativa (compatible con IPMI o la interfaz de host para un hipervisor VM) y aislarlo en una red administrativa (física o VLAN). No puede confiar en un host para protegerse: iptablesetc. aquí no son efectivos, porque AMT ve los paquetes antes que el sistema operativo (y guarda los paquetes de AMT para sí mismo).

Las máquinas virtuales pueden complicar las cosas, pero solo en el sentido de que pueden confundir AMT y, por lo tanto, producir resultados de escaneo confusos si AMT está habilitado. amt-howto(7)da el ejemplo de los sistemas Xen donde AMT usa la dirección dada a una DomU a través de DHCP, si la hay, lo que significa que un escaneo mostrará AMT activo en la DomU, no en la Dom0 ...

Stephen Kitt
fuente
¿No hay una forma local de detectar AMT desde Linux en la máquina? Usando /proc/cpuinfoo dmidecode?
dolmen
¿Eso significa que si un sistema no responde a ninguno de estos puertos, está a salvo de esta vulnerabilidad o aún puede explotarse localmente?
Comfreak
La mitigación en las computadoras portátiles puede tomar la forma de usar NIC USB en lugar de integradas.
Michael Mol
1
Usted escribe "tenga en cuenta que AMT puede funcionar a través de wi-fi, al menos en Windows". ¿Pensé que esta vulnerabilidad funcionaba independientemente del sistema operativo?
wurtel
1
@wurtel la vulnerabilidad es independiente del sistema operativo en las interfaces cableadas, pero en el AMT wi-fi parece necesitar la cooperación del controlador del sistema operativo en ejecución: no intercepta paquetes, se basa en que el sistema operativo le reenvíe los paquetes apropiados (según tengo entendido) Tenga en cuenta que no he probado este lado de las cosas).
Stephen Kitt
8

Simplemente detectar los puertos abiertos para este servicio es insuficiente, no indica si la versión está afectada o no. Nuestro equipo ha creado un script de Python disponible en nuestro github: CerberusSecurity / CVE-2017-5689 que detecta si un sistema objetivo es vulnerable a ataques remotos.

Uso de la muestra:

python CVE_2017_5689_detector.py 10.100.33.252-255

Esto debería permitirle verificar si es explotable de forma remota. Si está interesado, también escribimos una breve publicación de blog en http://cerberussec.org/ con nuestra opinión sobre esta vulnerabilidad.

CerberusSec
fuente