È stato pubblicato il rilascio del server proxy outline-ss-server 1.4, che utilizza il protocollo Shadowsocks per nascondere la natura del traffico, aggirare i firewall e ingannare i sistemi di ispezione dei pacchetti. Il server è sviluppato dal progetto Outline, che fornisce anche un'interfaccia di gestione e un insieme di applicazioni client, consentendo un rapido deployment di server Shadowsocks multi-utente basati su outline-ss-server in ambienti cloud pubblici o su hardware proprio, gestendoli tramite un'interfaccia web e organizzando l'accesso degli utenti tramite chiavi. La sviluppo e la manutenzione del codice sono gestite da Jigsaw, una divisione di Google creata per sviluppare strumenti per aggirare la censura e promuovere il libero scambio di informazioni.
Outline-ss-server è scritto in linguaggio Go e distribuito sotto licenza Apache 2.0. Come base è stato utilizzato il codice del proxyserver go-shadowsocks2, creato dalla comunità degli sviluppatori di Shadowsocks. Negli ultimi tempi, l'attività principale del progetto Shadowsocks è focalizzata sullo sviluppo di un nuovo server in linguaggio Rust, mentre l'implementazione in linguaggio Go non è stata aggiornata da oltre un anno e mostra un ritardo significativo nelle funzionalità.
Le differenze di outline-ss-server rispetto a go-shadowsocks2 riguardano il supporto per la connessione di più utenti attraverso una singola porta di rete, la possibilità di aprire più porte di rete per ricevere connessioni, il supporto per il riavvio a caldo e l'aggiornamento della configurazione senza interrompere le connessioni, nonché strumenti incorporati di monitoraggio e modifica del traffico basati sulla piattaforma prometheus.io.

In outline-ss-server è stata inoltre aggiunta una protezione contro attacchi legati all'invio di richieste di verifica e alla riproduzione del traffico. L'attacco tramite richieste di verifica mira a determinare la presenza del proxy, ad esempio l'attaccante può inviare al server Shadowsocks target set di dati di diverse dimensioni e analizzare quale volume di dati il server leggerà prima di rilevare un errore e chiudere la connessione. L'attacco di riproduzione del traffico si basa sull'intercettazione della sessione tra il client e server con un successivo tentativo di reinvio dei dati intercettati per determinare la presenza del proxy.
Per proteggere dalle attacchi tramite richieste di verifica, il server outline-ss-server non interrompe la connessione e non mostra errori quando riceve dati errati, ma continua ad accettare informazioni, comportandosi come una sorta di buco nero. Per evitare la riproduzione dei dati, le informazioni ricevute dal cliente vengono ulteriormente verificate per evitare ripetizioni basate su checksum, conservati per le ultime migliaia di sequenze di handshake (massimo 40.000, la dimensione è impostata all'avvio del server e consuma 20 byte di memoria per sequenza). Per bloccare le risposte ripetute dal server, vengono utilizzati codici di autenticazione HMAC con tag a 32 bit in tutte le sequenze di handshake server.
Per il livello di occultamento del traffico, il protocollo Shadowsocks nell'implementazione di outline-ss-server è simile al trasporto connesso Obfs4 nella rete anonima Tor. Questo protocollo è stato creato per superare i sistemi di censura del traffico in Cina (il “Grande firewall cinese”) e consente di nascondere in modo abbastanza efficace il traffico instradato attraverso un altro server (il traffico è difficile da identificare grazie all'allegato di un campione casuale e alla simulazione di un flusso continuo).
Il protocollo utilizzato per il proxy delle richieste è SOCKS5: un proxy con supporto SOCKS5 viene avviato nel sistema locale che tunnelizza il traffico verso un server remoto, da cui vengono effettivamente eseguite le richieste. Il traffico tra client e server è collocato in un tunnel crittografato (è supportata la crittografia autenticata AEAD_CHACHA20_POLY1305, AEAD_AES_128_GCM e AEAD_AES_256_GCM), il cui occultamento è l'obiettivo primario di Shadowsocks. È supportata l'organizzazione di tunnel TCP e UDP, così come la creazione di tunnel arbitrari, non limitati a SOCKS5, attraverso l'uso di plugin che somigliano ai trasporti connessi in Tor.
Fonte: opennet.ru
