Si raccomanda, per attenuare POODLE, se SSLv3 non può essere disabilitato completamente, per utilizzare TLS_FALLBACK_SCSV, un valore della suite di crittografia di segnalazione che indica che il fallback si è verificato. La bozza dello standard dice:
If TLS_FALLBACK_SCSV appears in ClientHello.cipher_suites and the highest protocol version supported by the server is higher than the version indicated in ClientHello.client_version, the server MUST respond with an inappropriate_fallback alert.
L'idea, a quanto ho capito, è che se il client ha provato e non è riuscito a negoziare una connessione con, ad esempio, TLS 1.2 (probabilmente perché un MITM ha forzato questa situazione in un attacco di downgrade del protocollo), il server sarà in grado di rilevare la situazione perché questo valore di segnalazione sarà presente nell'elenco delle suite di cifratura.
Non ho molta familiarità con la negoziazione TLS e non capisco perché non sia semplicemente possibile per l'utente malintenzionato anche manipolare l'elenco di suite di crittografia per rimuovere questo valore di segnalazione?
Ad esempio, il client tenta di connettersi al server con TLS 1.1, ma Mallory il MITM intercetta e simula un errore. E lo fa di nuovo quando il client tenta di connettersi con TLS 1.0. Quando il client tenta di connettersi con SSL 3.0, Mallory rimuove TLS_FALLBACK_SCSV dalle suite di crittografia e passa la richiesta al server, quindi restituisce la risposta del server, consentendo la negoziazione della connessione senza che il server visualizzi l'indicatore FALLBACK?
Quali caratteristiche di TLS prevengono un simile attacco? L'elenco delle suite di crittografia è crittografato in qualche modo, anche prima che la sessione sia stata negoziata?