25 octubre 2010

Bancos y SSL ¿Quien aprueba?

A estas alturas todo el mundo está familiarizado con SSL, es la capa de seguridad mediante cifrado que incorpora HTTP para proteger las comunicaciones.

Bajo las siglas SSL se encuentra un complejo entramado de longitudes, algoritmos y tipos de certificados. La forma en la que se combinan estos parámetros hace que un servidor ofrezca una conexión SSL mas o menos robusta. Como tantas cosas en el mundo de la seguridad, se cumple el axioma: mas robusto = mas inversión.

Teóricamente y sobre el papel la banca online debería ser ejemplo a la hora de implementar SSL en sus servicios por dos motivos:

1- Son entidades que manejan mucha inversión
2- El tipo de actividad a la que se dedican requiere todas las garantías

Pero ... ¿Es así? Hemos realizado un estudio sobre los principales portales de banca online Españoles analizando diversos parámetros para evaluar la robustez del servicio.

Criterios evaluados:
  • Soporte a SSL v2: Se puntúa como Bien no dar soporte a negociaciones SSL v2 (obsoletas y con numerosos vectores inseguros) y Mal si el servidor lo admite 
  • Tipo de certificado: Puntúa como Mal tener un certificado SSL normal y corriente (ver post sobre Agencia Pituitaria) y bien tener un certificado con Validación extendida (mucho mas riguroso y caro)    
  • Longitud de la clave RSA del certificado: Puntúa como Mal tener un certificado de 1024 o menos y Bien tener 2048
  • Soporte de algoritmos 'débiles': Se entiende por algoritmo débil aquel que cuya longitud de clave es 56 o 64 bits y  puntúa como Mal admitir esos algoritmos para cifrar la conexión y Bien no hacerlo
Los resultados (click en la imagen para mayor definición):


Destaca sobremanera el caso del BBVA, que ha puntuado en todo Mal, incluso sospecho que el hecho de que la longitud de su clave pública sea de 1023 y no 1024 se deba a un bug en la generación del CSR (hay documentados bugs de ese tipo en algunas plataformas).

Por contra, hay que destacar muy positivamente al Banco Popular, Bankinter, Deutsche Bank y Bancaja que sacan un Sobresaliente merecido.

Por último mencionaré de soslayo algo que me llama poderosamente la atención. En el mundo bancario existe una normativa llamada PCI-DSS que especifica niveles de seguridad y buenas prácticas en las entidades bancarias. En el punto 4.1 dice: 'Utilice criptografía y protocolos de seguridad sólidos como SSL/TLS o IPSEC para salvaguardar los datos confidenciales de los titulares de las tarjetas durante su transmisión a través de redes públicas abiertas' Y mas concretamente: 'Controle que se implemente la solidez de cifrado adecuada para la metodología que se utiliza'

Esto, que suena tan vago e inconcreto, por lo general se suele interpretar como el NO uso de SSL v2 y el NO uso de algoritmos débiles. 

Ficha técnica
Urls analizadas:

Banco Pastor    https://pastornetparticulares.bancopastor.es/
Banco Popular   https://www2.bancopopular.es
Banco Santander https://www.gruposantander.es
Banesto         https://extranet.banesto.es
Bankinter       https://www.bankinter.com/
BBVA            https://www.bbva.es
Deutsche Bank   https://ww3.deutsche-bank.es
Citibank        https://www.production.citibank.es
ING             https://www.ingdirect.es/
Bancaja         https://www.bancaja.es/
Caja España     https://www.cajaespana.net/
Caja Madrid     https://oi.cajamadrid.es/
La Caixa        http://portal.lacaixa.es/

Metodología empleada:

Verificación SSL v2:

openssl s_client -ssl2 -connect servidor:443

Tipo de certificado (Normal / EV):

Cualquier navegador actual (Chrome, Firefox, IE)

Longitud clave pública:

openssl s_client -connect servidor:443

Soporte de algoritmos débiles:

openssl s_client  -cipher LOW:EXP -connect servidor:443

34 comments :

damontero dijo...

Me ha gustado mucho la comparativa, y sobretodo la explicación a los 1023 bits de BBVA. Si lo hubiera visto antes, no le habría encontrado ningún sentido. Gracias por la aclaración.

Por otro lado comentar que la CAM también sale bien parada. La longitud de su clave pública es de 2.048 bits, y supera todas las otras pruebas. Por si alguien que tuviera cuenta allí tuviera curiosidad por saberlo :)

Román Ramírez dijo...

Me parece bastante sospechoso que una entidad financiera como es BBVA, tenga ese tipo de "configuración". Y con esa clave de 1023 bits... a mí me huele a intención más que otra cosa...

He revisado https://www.bbva.es y la clave que observo es RSA/1024, ¿de qué url has sacado ese certificado? (el que yo estoy viendo caduca el 14 de agosto de 2011)

Anónimo dijo...

La URL de ING Direct, destinada al acceso clientes no es la que analizais en este documento, sino https://ing.ingdirect.es que es la que aparece en las contrataciones y el acceso a clientes. En esa configuración no se permiten cifrados débiles.

Un saludo

Antonio Ramos [sorani] dijo...

Solo una puntualización en referencia al estándar PCI-DSS. Es importante tener en cuenta que el alcance de dicho estándar es para las plataformas que almacenan, transmiten o procesan datos de titulares de tarjeta (entendiendo por estos, el PAN y la fecha de caducidad, el nombre del titular y el CVV2).

Por tanto, en la medida en la que las webs comentadas no estuvieran dentro del alcance, no estarían obligadas a cumplir con el estándar y con ese requerimiento en concreto.

No obstante, una vez dicho esto, está claro que las entidades financieras deberían dar ejemplo y asumir el cumplimiento con el estándar de la manera más global posible y no escatimando medios en su cumplimiento (sobre todo, cuando lo que establece son medidas de protección más que razonables).

omarbv dijo...

A mi me ocurre lo mismo conel certificado que se genera en BBVA, es de 1024, y con la misma fecha de caducidad que han mencionado.

Salu2,

SiD dijo...

bbva.es --> 1023

bbva.com --> 1024

Yago Jesus dijo...

@Roman y @omarbv, ¿Que software estáis empleando para ver la longitud? con openssl obtengo esto:

openssl s_client -connect www.bbva.es:443

SSL handshake has read 2755 bytes and written 311 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 1023 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:

Yago Jesus dijo...

@Anónimo De ING, tengo apuntada esta URL como 'portal de acceso' https://www.ingdirect.es/WebTransactional/Transactional/AccesoING_1408.asp ¿ha cambiado hace poco?

Anónimo dijo...

En efecto, esa URL está deprecated desde hace más de 6 meses, se sigue dejando activa por ciertos usuarios que lo tienen en favoritos, no obstante hace un redirect a la nueva que es la que se enlaza desde el portal de clientes:

https://ing.ingdirect.es/W/Transactional/faces/selectOption?select_op=initLogin

En esa instancia SSl no se permiten cifrados débiles.

Un saludo

@anonimo ;-)

jcea dijo...

Sería interesante también el mostrar si esos bancos están actualizados para contrarrestar el bug de renegociación SSL/TLS, que es un bug muy grave (y ya está solucionado... si actualizas).

omarbv dijo...

Tienes toda la razón Yago. Tal y como indica SiD, bbva.com es 1024 y bbva.es a 1023.

Juan David dijo...

Tambien es posible efectuar estas pruebas con la herramienta CryptoNark: "CryptoNark is a perl-based PCI compliance remediation validation checker. It's primary purpose is to allow an administrator to check to see whether configuration changes have been successfully implemented when fixing PCI Compliance related vulnerabilities."

Rubén dijo...

Ya verás cuando vayas a pedir la hipoteca al BBVA Yago.

Gerard AB dijo...

He visto que la Caixa soporta SSLv3 aunque no soportan SSLv2

canales dijo...

Desde el Cajamar nos parece muy interesante este post. Hemos aprovechado para pedir a nuestro departamento de Seguridad que haga el mismo test y hemos obtenido este resultado:
- Soporte a SSL v2: No.
- Tipo de certificado:Certificado SSL EV.
- Longitud de la clave: 2048
- Soporte de algoritmos débiles: No.

Creo que salimos bastante bien :-)
¡No nos olvidéis en próximos estudios|

Anónimo dijo...

Te faltó poner en la picota a bancoonline.openbank.es

Anónimo dijo...

Te faltó poner en la picota a bancoonline.openbank.es

Anónimo dijo...

Te faltó poner en la picota a bancoonline.openbank.es

Anónimo dijo...

Para un usuario que aunque sigue tu blog tiene más bien poca idea de todos estos temas, podriáis comentar la seguridad de la bbk??

https://portal.bbk.es

Arturo Quirantes dijo...

Estupendo trabajo. Puede que os resulte interesante compararlo con otro estudio que yo hice hace poco ... !en 1998!

http://www.cripto.es/informes/info
005.htm

Salu2. Arturo Quirantes.

avirgosm dijo...

Hola, si interesa a alguíen. He hecho pruebas con www.uno-e.com y tengo generado un documento. No me atrevo a sacar conclusiones públicamente (aunque me huele mal, muy mal los resultados) pero si alguien me ayuda a entender los mensajes de openssl le ofrezco el documento.

Anónimo dijo...

una pena que no hayais incluido a triodos (www.triodos.es) en la comparativa :(

SiD dijo...

Realmente acojonante

http://losbancosycajas.com/2010/10/26/analisis-de-la-seguridad-en-los-bancos-online/

No hay palabras...

¿Cómo era aquello de apuntar a la fuente?

:)

eduardo dijo...

Hola a todos,

Hay que tener en cuenta una cosa ...

Si hay un proxy con modsecurity protegiendo el servidor, es posible que dé como permitido sslv2 y que no sea así. Lo mismo pasa con los cifrádos débiles permitidos (de menos de 128 bits). Los permite modsecurity, pero ahí se quedan.

Obviamente habría que configurar el servidor con modsecurity para que eso no ocurra.

Saludos
Eduardo.

Yago Jesus dijo...

@Eduardo: Dices que mod_security sobrepasa las rules de mod_ssl a la hora de configurar los ciphers ?? Tienes algun link sobre el tema ?

Anónimo dijo...

Me ha gustado tu artículo.

Quería pedirte permiso para, como cliente de La Caixa, hacerles llegar tu comparativa y "pedir explicaciones" sobre el bajo nivel de seguridad.

eduardo dijo...

@Yago: el test del ssl va contra el servidor proxy corriendo modsecurity que hay delante del servidor web.

Por eso, si no has tocado la config del ssl en el proxy, aunque el servidor web esté bien, el resultado del test está mal.

Nos saltó a nosotros en una auditoría justo hace unos días ...

Anónimo dijo...

¿Por qué ponéis como mala nota que el certificado usado por la entidad sea de 1024 bits?

Aunque muchos de los certificados en la sentidades bancarias no se hayan obtenido por EV, son firmados por CA's da alta confianza (VerySign, por ejemplo)

Lo que sñi es grave es lo de permitir comunicación con claves simétricas débiles.

Yago Jesus dijo...

@Anónimo: Los certificados cuya longitud sea de 1024 no están recomendados actualmente (debido a los significativos avances en factorización de claves RSA). Se recomiendan de 2048

Yago Jesus dijo...

@Eduardo: Dices que mod_security sobrepasa las rules de mod_ssl a la hora de configurar los ciphers ?? Tienes algun link sobre el tema ?

Anonymous dijo...

Para un usuario que aunque sigue tu blog tiene más bien poca idea de todos estos temas, podriáis comentar la seguridad de la bbk??

https://portal.bbk.es

Anonymous dijo...

Te faltó poner en la picota a bancoonline.openbank.es

Simplicius dijo...

Curioso el tema de la caixa, a día de hoy salvo que se teclee expresamente https://..... entra con http!! estoy pensando en sslstrip, etc...esto es así?

Yago Jesus dijo...

Depende, si la parte del acceso a la banca electrónica es igualmente accesible desde http, entonces si