Proteggi contro la rinegoziazione avviata dal client DoS in OpenSSL / Python

1

In base ai link , server supportare le connessioni SSL / TLS e consentire rinegoziazioni avviate dal client sono gli attacchi DoS suscettibili da parte di un cliente che rinegozia continuamente la connessione ssl. Sono riuscito a far girare la CPU fino al 15% circa con questo script di "exploit" che ho scritto:

(while [ 1 -eq 1 ]; do echo R; sleep 0.01; done) | openssl s_client -cert agent.crt -key agent.key -connect 192.168.110.100:4959

Ad ogni modo, come posso disabilitare i rinvii avviati dal client per OpenSSL (che sto usando attraverso la libreria openssl di Python)?

    
posta caleb 26.02.2016 - 16:57
fonte

1 risposta

2

Non esiste un modo semplice per disabilitare i rinvii avviati dal client sul lato server. Il modo usuale è di rilevare e conteggiare le rinegoziazioni utilizzando SSL_CTX_set_info_callback con una funzione appropriata e di chiudere la connessione se si verificano troppe negoziazioni.

Un esempio di codice su come questo può essere fatto in C può essere trovato su link . La funzione set_info_callback dovrebbe essere disponibile anche all'interno dell'interfaccia OpenSSL di Python, ma per questo non ho codice in esecuzione. Se hai bisogno di aiuto con la parte specifica di Python, allora potresti chiedere a StackOverflow.

    
risposta data 26.02.2016 - 17:50
fonte

Leggi altre domande sui tag