Gestire i Webhook API che si rifiutano di autenticarsi

4

Attualmente sto scrivendo un connettore su un'API. È per un sistema di spedizione automatizzato e mi viene richiesto di ascoltare gli eventi da quella data API, inviati tramite Webhooks.

Il proprietario dell'API non aggiunge intestazioni di autenticazione alla richiesta che inviano al mio webhook, ma utilizza un campo all'interno del corpo per simulare un qualche tipo di autenticazione. Ciò significa che devo analizzare il corpo di ogni richiesta in entrata, il che rende facile per gli aggressori il mio server DDOS (tra gli altri attacchi). Ho chiesto loro di cambiarlo, ma si sono rifiutati.

{
   "token": "myToken",
   "otherData": ...
}

Sono molto preoccupato di pubblicare un tale endpoint non autenticato sul www.

1) La mia preoccupazione è legittima?

2) Cosa posso fare per forzare l'utilizzo dell'autenticazione?

    
posta baao 23.08.2018 - 11:23
fonte

2 risposte

3

Per rispondere alla tua prima domanda: No, non credo che tu abbia molto di cui preoccuparti. In particolare, stanno autenticandosi, e penso che tu abbia una certa confusione nella terminologia che sta succedendo qui. Il fatto che il token di autenticazione si trovi nel corpo della richiesta non modifica nulla sull'autenticazione. Molte chiamate API funzionano in questo modo (sebbene il passaggio del token di autenticazione nell'intestazione possa essere più comune). Se li hai contattati e hai cercato di risolvere la mancanza di autenticazione (come se fossi qui) sono sicuro che avrebbero respinto le tue preoccupazioni, perché in realtà si autenticano.

Per quanto riguarda i dubbi su DDOS, la differenza tra ottenere un token di autenticazione da un'intestazione (che è probabilmente l'unico altro posto che può vivere) e analizzarlo da un corpo JSON è molto minimale dal punto di vista dell'utilizzo della CPU. Non mi aspetto che faccia alcuna differenza pratica nell'aiutare un aggressore ad avere successo in un attacco DDOS. Con ogni probabilità hai comunque più pagine con molta più CPU di così, quindi se qualcuno dovesse eseguire un attacco mirato contro il tuo sistema e prendersi il tempo per cercare di trovare l'endpoint più debole, ci sono probabilmente molte pagine molto più allettanti da trovare.

Tuttavia, anche questo non è una vera preoccupazione. La maggior parte degli attacchi DDOS in questi giorni funziona semplicemente lanciando quante più richieste al bersaglio possibile per saturare la larghezza di banda della rete. Di conseguenza, l'endpoint effettivo non ha nemmeno importanza, e le richieste che gli hacker inviano sono richieste molto raramente valide. Dubito che molti utenti malintenzionati si preoccuperebbero di fare di più che cercare l'indirizzo IP dei tuoi server, e ci sono probabilmente pochissime circostanze in cui inizialmente passerebbero il loro tempo a cercare nel tuo sito web la pagina più vulnerabile.

Se sei preoccupato che DDOS ottenga un partner per la mitigazione del DDOS come il bagliore del cloud. Come menziona Josef, puoi anche provare i limiti dell'indirizzo IP sulla pagina. Tuttavia, ci sono modi molto più efficaci per dedicare tempo a proteggere il tuo sito contro DDOS e poi provare a cambiare la struttura API di un servizio di terze parti quando l'applicazione ha molti più endpoint che un utente malintenzionato deve colpire comunque.

Chiarimenti aggiuntivi

Nel mondo della sicurezza nessuna risposta è particolarmente utile senza una buona modellazione delle minacce. Di conseguenza, vale la pena abbattere il "modello di minaccia" di cui si è preoccupati. Avere una richiesta che passa il token di autenticazione nel corpo è importante se :

  1. Qualcuno sta prendendo di mira il tuo sistema per l'attacco DDOS
  2. Non hanno abbastanza larghezza di banda a disposizione per sovraccaricare semplicemente le risorse di rete ( DDOS delle risorse di rete tramite attacchi di amplificazione rappresenta circa la metà di tutti gli attacchi DDOS )
  3. Decidono quindi di indirizzare determinati endpoint nel tuo sistema che richiedono molte risorse
  4. Capita di imbattersi in questo endpoint non pubblicato e sono in grado di capire come funziona la chiamata all'API
  5. Non trovano un altro endpoint nel tuo sistema che richiede più risorse

Se tutte queste condizioni sono soddisfatte, in effetti, qualcuno potrebbe utilizzare questo endpoint su DDOS del sistema e la differenza tra l'autenticazione nell'intestazione e nel corpo potrebbe in effetti essere importante. Tuttavia, nel caso in cui non sia chiaro, queste condizioni non saranno mai soddisfatte . Se qualcuno vuole DDOS i tuoi sistemi probabilmente andranno via e affitta un DDOS che invada i tuoi sistemi con traffico di rete senza senso. È sia più facile che più efficace, quindi cerca di identificare un vero punto debole nel tuo sistema. Questo è il motivo principale per cui questo non ha importanza dal punto di vista di un DDOS: l'attacco DDOS di cui sei preoccupato non accadrà mai perché ci sono modi più semplici e veloci per DDOS su un sito web rispetto a questo. L'unico modo per proteggersi da tipi realistici di attacchi DDOS è con un provider di attenuazione DDOS.

Questo è il motivo per cui la modellazione e la comprensione delle minacce reali sono così importanti. Puoi passare settimane a lavorare con un fornitore di terze parti per modificare le API in modo da ridurre al minimo il tempo di utilizzo della CPU da parte tua, per poi sottoporre i tuoi sistemi a un DDOS che invia ciecamente richieste non valide alla tua rete e travolge la tua capacità di rete. Se passi il tuo tempo a proteggere dai tipi errati di minacce, puoi finire per perdere un sacco di tempo e (cosa più importante) implementare i tipi sbagliati di guardie protette.

    
risposta data 21.09.2018 - 12:50
fonte
1

Per rispondere alle tue domande esatte:

  1. La mia preoccupazione è legittima?
    • Penso di sì
  2. Che cosa posso fare per costringerli a utilizzare l'autenticazione?
    • questo dipende interamente dal contratto con loro. Se vuoi andare in questa direzione, law.stackexchange.com potrebbe essere più adatto alla tua domanda.

Se cerchi una soluzione tecnica, potresti chiedere loro se le richieste provengono da un gruppo specifico di indirizzi IP e consentire solo il traffico da tali indirizzi al tuo sistema.

    
risposta data 21.09.2018 - 12:21
fonte

Leggi altre domande sui tag