Accesso crittografato in siti web di partiti politici

Visto l’interesse per l’argomento, riassumo lo stato dell’accesso protetto da crittografia di 5 siti web di partiti politici.
Di questi, solo il sito web del Partito Democratico ha un accesso crittografato in maniera sicura. Accettabile con riserva.
Il Movimento 5 Stelle ha un ottimo sistema, Rousseau, ma non tutto è in sicurezza. Fratelli d’Italia, Forza Italia e Lega Nord, totalmente assente.

Unico pensiero politico da parte mia (prendetelo in maniera costruttiva): mi aspettavo maggiore cura dal Movimento 5 Stelle considerando che la rete è il suo cavallo di battaglia.

Immaginate ad esempio che un utente visiti quei siti web da un accesso pubblico (wifi pubblico, albergo, aeroporto etc). Un attaccante potrebbe:

  • intercettare in chiaro le credenziali (tra cui in chiaro le passwords, spesso riutilizzate).
  • reindirizzare la richiesta (alterando il form html) verso siti web malevoli.
  • alterare la risposta di ritorno, inserendo un javascript che funziona da keylogger in modo da intercettare poi ogni possibile interazione anche futura.

Questi ESEMPI di potenziali attacchi valgono per tutti, PD compreso, dato che non ha attivato alcuna forzatura alla versione sicura nei form di credenziali.

La maggior parte di produttori di browser hanno piani a lungo termine per l’abolizione delle connessioni in chiaro (es. Firefox), e i primi passi imminenti sono l’implementazione di warning di sicurezza (es. FireFox, Chrome).

Chrome pubblico usato dalla gente comune è la versione 55. La versione che notificherà che i siti web sopra-citati sono insicuri sarà la 56. E’ davvero molto imminente, imho.


Movimento 5 Stelle / Beppe Grillo

Rousseau https://rousseau.movimento5stelle.it è ottimamente configurato.
Certificato hash algorithm sha256 ok, rating ssl-labs: A+ altissimo (il massimo, abbastanza raro),
ottimo l’uso di HSTS che garantisce a monte che il sito sia interamente sotto crittografia. Versione web-server nascosta.

Una pesante pecca: l’iscrizione punta ad un’altra macchina, malmessa a livello di configurazione:

  • Riporta un vecchio Apache/2.2.15, che ha parecchie vulnerabilità note.
    Può essere che alcune vulnerabilità siano chiuse (ad esempio come i package debian in repo stable su distro LTS), non ho investigato sulle singole vulnerabilità.
    Dei penetration-testing sono più impegnativi di questa mia ricerca da tempo libero.
  • Restituisce un certificato scaduto da diversi giorni.
  • common-name errato (www.beppegrillo.it), che porta a una pagina web inesistente (404).
  • hash algorithm sha1, male.
  • Vulnerabile a POODLE e weak cipher.
  • Scelta incredibile. Di solito è accettabile avere un sito in chiaro con la sezione di autenticazione (login/register) sotto crittografia. Ma avere Rousseau protetto e registrazione in chiaro è tutto il contrario.

L’iscrizione quindi è obbligatoriamente in chiaro, perchè usare un accesso scarso di rating ssl-labs: T equivale a non usarlo.

Vedo ottime premesse, a spanne basta che il team di Rousseau prenda in carico anche l’altra macchina malconfigurata.


Partito Democratico

Buono, non ottimo.

Accesso crittografato https://www.partitodemocratico.it/ è OK.

La pecca è che la versione in chiaro funziona, potrebbe redirigere direttamente alla versione crittografata, o meglio ancora implementare HSTS come Rousseau.
E’ una pecca importante perchè la versione di login funziona anche da accesso non crittografato.
Obiettivamente se un accesso è insicuro e la versione sicura esiste, non è possibile venire incontro alla vita agli utenti che non conoscono la differenza o manco sanno che possono scegliere?

Piccola pecca, https://partitodemocratico.it restituisce ERR_BAD_SSL_CLIENT_AUTH_CERT. Pare solo mal-configurato il terzo livello “www.”.

Certificato SSL, ok per sha256. ssl-labs: B migliorabile, degli accessi con cipher weak andrebbero chiusi. Rousseau è configurato meglio.

Pare usino Apache 2.2.22 su FreeBSD. Non conosco decentemente FreeBSD.

Curiosità: Dal sito web, cliccare Accedi porta a un url da 3228 caratteri/bytes. Tutti fondamentali eh. (ironico).


Fratelli d’Italia

In http://www.fratelli-italia.it praticamente l’accesso cifrato non esiste.

Tesseramento e login solo in chiaro.

La versione cifrata del tesseramento mostra un 503 Service Unavailable, con un certificato self-signed che non corrisponde neanche come common-name.

ssl-labs: F. Vulnerabile al POODLE attack, weak cipher, etc.

Se non altro, nascondono che software web-server usano.


Forza Italia

http://www.forzaitalia.it è solo in chiaro, l’accesso crittografato per il sito principale non risponde.

La login è in chiaro.
L’accesso crittografato per il login spara pagina non trovata (HTTP 404).
Certificato SSL self-signed, scaduto 3 anni fa. 1024 bits. In pratica come se non ci fosse.

ssl-labs: F Tutto weak. Due diverse vulnerabilità, POODLE e CVE-2016-2107.

Praticamente l’accesso crittografato non esiste.

Apache/2.2.25 Amazon.


Lega Nord

http://www.leganord.org/ tutto in chiaro. L’accesso crittografato non esiste.

Apache 2.4.10 su Fedora.

https://www.beppegrillo.it e disclosure

Recentemente ho notato che il certificato SSL di https://www.beppegrillo.it è scaduto.

La cosa mi ha incuriosito perchè quel sito web è uno dei più frequentati d’Italia, e mi è parso strano che nessuno nell’arco di 5 giorni si sia indignato di dover inserire una password in una connessione in chiaro (esempio).
Anche perchè la figura di m. è imminente, le beta o candidate-release di browser moderni mostrano degli avvisi espliciti laddove è richiesta una password in una connessione non cifrata. Vedi ad esempio https://blog.mozilla.org/tanvi/2016/01/28/no-more-passwords-over-http-please/

Ieri sera l’ho fatto notare a Paolo Attivissimo via Twitter:

Poco dopo, Paolo ha twittato:

Immediatamente ho precisato che un certificato SSL non scaduto per il dominio www.beppegrillo.it esiste, ma non è configurato sulla macchina relativa:

Claudio d’Angelis mi ha fatto notare che l’approccio non è proprio professionale, dato che normalmente il protocollo non dovrebbe determinare il tipo di contenuti, mentre invece pare evidente che il blog sia necessariamente in chiaro, e la crittografia riservata ad altro (non so di più, mai frequentato il sito di Grillo).

A questo punto ho indagato (parolone…) altri 5 minuti (neanche), e ho notato che il webserver risponde fornendo informazioni sulla versione di Apache installata

Non che questo sia grave di per sè, ma di solito i professionisti evitano di fornire questo genere di info per rendere almeno un pelo più difficile la ricerca di vulnerabilità.

Un veloce controllo su SSL-Labs ha evidenziato vulnerabilità note (PODDLE), cipher weaks e altre varie.

Cosa prevedibile con un Apache 2.2.15, che è un po’vecchiotto. POODLE confermato anche dallo scan online di Comodo.

Più di una persona su Twitter fa notare che il sito di gestione del Movimento è su un’altra macchina, https://rousseau.movimento5stelle.it/ , che a una prima occhiata pare ben configurata.
Ma obiettivamente in questo settore non è che se un qualcosa è obsoleto lo si abbandona senza aggiornamenti, anche perchè se quell’accesso presenta vulnerabilità da remote-code-execution, significa accesso all’intera macchina (ed eventualmente al database annesso).

E qui arriviamo al motivo di questo riassunto.
Mi preme precisare che ho usato il termine colabrodo perchè è evidente la situazione, ma NON ho MAI detto che è una situazione grave.
Mi ritengo un professionista nel mio settore (sicurezza IT), ma qui sono sempre rimasto a livelli di chiacchere da bar.
Stabilire la gravità di noncuranze richiederebbe un’analisi più accurata, dei penetration-testing, notifiche private, disclosure concordate etc.
Potrebbe anche essere che la macchina in questione è solo un vuoto reverse proxy o un load-balancer a una macchina di backend meglio configurata, per dire.

Estote parati! (@lastknight docet)

(Editato in seguito per correggere il mio italiano..)

An alternative approach to so-called WebRTC leaks

Posted on Reddit here: http://redd.it/32d94q

Recently there were a lot of discussions about the WebRTC IP Leak. Almost all of them are talking about a “Security flaw” or treat it as a bug.

However, many articles about the WebRTC [leaks] talk about a solution: disable WebRTC in favorite browser.
Two questions:

  • Is it really a “Security flaw” that needs to be fixed in browsers? Look at browsers bug-reports to understand how many different opinions exist on this.
  • Why the browser can go outside the VPN tunnel? How many app/protocols can do the same things of the WebRTC leak? So, is disabling WebRTC a sufficient solution for those who use a VPN to avoid exposing their ISP IP address or traffic?

I will explain details of the issue. But first, if you are connected to a VPN service right now, try this:

ipdetection.zip (source available here )

or, under Unix try this (try also as root):

for s in `ifconfig -a | sed 's/[ \t].*//;/^\(lo\|\)$/d'`; do curl --interface $s http://www.clodo.it/projects/whatismyip/; done

Is your real ISP IP leaked?

Details

When a user connects to OpenVPN, the main interface (ethernet, wifi etc) is still available (also to talk with the VPN server itself).
And another network interface is opened (tun/tap).
This is the scope of OpenVPN: create a tunnel.

As a plus, OpenVPN can be configured to push a directive from the server to their client: “redirect-gateway”.
This tells at client-side that ALL traffic needs to be redirected inside the tunnel by default.

Almost all VPN services use a specific option of that directive: “redirect-gateway def1”.
From OpenVPN manual

def1 — Use this flag to override the default gateway by using 0.0.0.0/1 and 128.0.0.0/1 rather than 0.0.0.0/0. This has the benefit of overriding but not wiping out the original default gateway.

Now, this means that the original 0.0.0.0/0 route are still active, but there are other routes created by OpenVPN that override the original based on precedence.
But 0.0.0.0/0 is a route assigned to the standard interface, while the new 0.0.0.0/1 and 128.0.0.0/1 are assigned to the TUN interface.

In every OS, when a connection/socket is opened, the program can choose a specific network interface that needs to be used.
This is not common, because most applications don’t need that and let the OS use the default network interface.

The program above do exactly this: bind to specific network interface to query an external what is my ip address service.
When binding to the standard interface, the overriding rules of OpenVPN are simply ignored, at least under Windows.

I think browsers do the same thing in WebRTC discovery.

Can a VPN service based on OpenVPN resolve the issue server-side, transparently to their users?

Yes.
Simply don’t use the def1 option in redirect-gateway directive.
Without def1, OpenVPN client removes totally the 0.0.0.0/0 route, and re-creates it at disconnection.

But I don’t recommend this approach: with def1, if the OpenVPN process is terminated, the overriding routes are automatically deleted or unused, and traffic continues to flow over the standard interface.
Without def1, if OpenVPN process is killed/terminated, the user remains without any route for his/her traffic.

For me, a good VPN service needs to use the def1 option, for the final consideration below.

Final consideration

WebRTC IP Leak is not a fault of browsers.

It is not a fault of OpenVPN (that is designed to be a Tunneling software, not an Always hide my traffic software).

It is a fault of users, because they trust the standard OpenVPN client for things out of its scope, or trust a badly-written VPN service client software.

Users need to use a VPN service that has a software addressing this kind of issue, or need to understand how to configure a firewall or a router.

*Disclaimer: *
I’m the author of the client software of a known VPN service. Anyway I don’t cite it in this reddit.