INTECO ha llevado a cabo un análisis minucioso del diseño del protocolo que la plataforma de mensajería
Telegram emplea para autenticar a los usuarios, es decir, el modo en el que éstos se identifican para acceder al servicio.
La conclusión es clara: se trata de un fallo de seguridad en el que un
atacante podría ser capaz de interceptar la información enviada por los
usuarios sin que éstos sean conscientes de que está ocurriendo.
El problema se debe a que Telegram posibilita que cualquier persona que
emplee la plataforma de mensajería pueda crear versiones de su
aplicación y utilizar los servicios que proporcionan a través de sus
servidores. En Telegram
se incluye una clave pública que permite a la
aplicación del usuario asegurarse de que se está comunicando con la
plataforma oficial. Pero como el programa lo puede desarrollar cualquier
persona, un atacante malicioso podría modificar
esa clave, y suplantar,
por tanto, a los servidores de Telegram, interceptando las
comunicaciones que el usuario envíe o reciba.
Descripción del protocolo y del exploit
El
protocolo de autorización y autenticación de Telegram consiste en el envío de 6 mensajes, en los que se establece una clave compartida utilizando el protocolo
Diffie-Hellman.
Típicamente, el primer Data Center con el que
contacta el cliente
indica las direcciones IP y puertos de otros Data Centers con los que el
cliente repite el mismo proceso, estableciendo una clave con cada uno
de ellos. Para finalizar el proceso, uno de los Data Centers “le pide”
al cliente el
número de teléfono móvil al que quiere asociar la clave.
El cliente lo introduce, y Telegram envía a dicho móvil un código, vía
SMS, que el cliente tendrá que enviar de vuelta para completar la
activación del servicio en dicho dispositivo.
Este proceso se muestra en
la Figura 1. Telegram se refiere a las claves negociadas mediante este
protocolo con el nombre de
authorization_keys.
Figura 1. Protocolo de autenticación de Telegram.
Este protocolo autentica al cliente. En cuanto al servidor, se autentica incluyendo la huella digital (
fingerprint
en la figura) asociada a su clave pública. A partir de esto, los
aspectos más destacables de la autenticación son los siguientes:
- El cliente comprobará si la fingerprint recibida coincide con alguna de las claves públicas que tiene preinstaladas.
- En caso afirmativo, el cliente usará la clave pública correspondiente para cifrar el segundo mensaje que envía (req_DH_params).
- Este mensaje cifrado contiene un número aleatorio que se
utilizará como base para derivar una clave AES temporal, con la que se
cifrará el resto de los mensajes del intercambio.
- Dado que el número aleatorio es cifrado con la clave pública de
Telegram, únicamente Telegram podrá descifrarlo, realizando su
autenticación implícitamente de esta manera.
A ojos de la víctima, estará comunicándose con Telegram y, a ojos de
Telegram, la comunicación será con un cliente legítimo. El MITM sólo
tendrá que interceptar los mensajes que van en un sentido, cambiar unos
valores específicos, volver a cifrarlos y reenviarlos a su destinatario
final.
Requisitos para el ataque
Como se ha mencionado, es necesario modificar la clave pública y las
direcciones IP que el cliente tiene preinstaladas o configuradas como
correspondientes a Telegram. Esto puede parecer demasiado restrictivo y
posiblemente así sea en muchos casos. No obstante, como también se ha
dicho, Telegram fomenta el desarrollo por parte de terceros, lo cual
facilita la tarea enormemente. Por un lado, estas aplicaciones no
oficiales probablemente no
hayan sido sujetas a auditorías de seguridad o
a buenas prácticas de programación segura que prevengan
satisfactoriamente la explotación de este problema. Por otra parte, a
partir de los clientes existentes, es trivial crear un cliente
modificado de la forma necesaria para activar el ataque.
Finalmente, además de los clientes no oficiales referenciados desde la
web de Telegram, también existen clientes no incluidos en esa lista. Ejemplos son la versión en
portugués de Webogram Chrome App (que no parece desarrollada
por la misma persona) o una versión para
Ubuntu Touch.
Por supuesto, que las aplicaciones no estén referenciadas desde la web
de Telegram no significa que sean maliciosas. No obstante, pone de
manifiesto que existen métodos
alternativos para obtener clientes de
Telegram y que, probablemente, por dichas vías se puedan introducir
clientes maliciosos que pasen más inadvertidos.
fuente:
http://cert.inteco.es/
0 comentarios:
Publicar un comentario