Neaizsargātības OAuth | Kā īstenot drošu atļauju savā tīmekļa lietojumprogrammā

Anonim
Neaizsargātības OAuth | Kā īstenot drošu atļauju savā tīmekļa lietojumprogrammā 2740_1

Šis raksts tiks galā ar pazīstamu OAuth ievainojamību. Lasītāji arī uzzinās, kā ieviest drošu un drošu atļauju tīmekļa lietojumprogrammā.

OAuth ir uzticams protokols, bet tās drošības pakāpe lielā mērā ir atkarīga no tīmekļa izstrādātāju izpratnes, īstenojot atļauju. Tas padara šo tēmu ārkārtīgi svarīgu informācijas drošības speciālistiem. Viņiem ir jānodrošina augsts to lietotāju kontu aizsardzības līmenis. Ir pienācis laiks iepazīties ar efektīviem praktiķiem, kas palīdzēs samazināt nabadzīgo pārdošanas OAuth bīstamību.

Ieviešana

OAuth 2.0 protokols pašlaik tiek plaši izmantots dažādās lietojumprogrammās. Izmantojot to, ērta lietotāja saskarne kļūst pieejama, vieglāka autentifikācija un atļauja, salīdzinot ar tradicionālajām metodēm, lai ievadītu lietotājvārdu un paroli. Ar pienācīgu un pārdomāto īstenošanu OAuth protokols būs drošāks par tradicionālo atļauju, jo lietotājiem nav nepieciešams dalīties ar saviem grāmatvedības datiem ar trešās puses pieteikumu, lai piekļūtu konkrētam resursam. Lietotāji bieži izvēlas pieteikties, izmantojot savus Google kontus, Facebook vai LinkedIn, tā vietā, lai izveidotu jaunu kontu katru reizi, kad nepieciešams reģistrēties kādā tīmekļa vietnē. Tādējādi OAuth protokols ievērojami vienkāršo mūsu dzīvi.

Kopumā populāri OAuth pakalpojumu sniedzēji ir ļoti uzticami. Piesakieties ar Google vai Facebook kontu iedvesmo noteiktu drošības sajūtu, un tas ir pareizs. Protokolu rūpīgi pārbauda eksperti. Visas pieejamās ievainojamības vienmēr ātri koriģē attīstītāja komanda. Tomēr ir vērts atzīmēt, ka pilnīgas drošības sajūta var būt nepatiesa.

OAuth pakalpojumu sniedzēji atstāja lietojumprogrammu izstrādātājiem daudz iemeslu, lai apgalvotu savas programmas drošību. Faktiski sākotnēji aizsargātais OAuth pakalpojums, kas nepareizi ieviests tās instalācijas procesā, var kļūt viegls iebrucēju mērķis. Šāda strautā novedīs pie lietotāju personas datu zādzības.

Tālāk jums vajadzētu apsvērt visbiežāk sastopamās neaizsargātības trešās puses lietojumprogrammās, kas īsteno OAuth protokolu, lai atļautu saviem lietotājiem. Jāatceras, ka pats protokols ir drošs un uzticams. Tikai pēc nepareizas ieviešanas tas kļūst neaizsargāts pret hakeru uzbrukumiem.

OAuth TOCKEY THEFT Izmantojot atsauces galveni

Ja lietojumprogramma pieprasa atļauju lietotāja vārdā OAuth serverī, persona saņem kodu, lai ievadītu un nosūtītu atpakaļ uz serveri tās turpmākajai pārbaudei. Ja darba laikā lietotājs tiks novirzīts uz citu lapu, kods būs redzams HTTP pieprasījuma "referer" galvenē. Tādējādi kods samazināsies ārējā tīmekļa vietnē, kas apdraudēs OAuth serverī reģistrētos lietotāju datus.

PIEZĪME: Referera galvene ir HTTP vaicājuma galvene, tā pārraida URL resursdatoru, no kura tiek nosūtīts pieprasījums.

Lai mīkstinātu šīs neaizsargātības sekas, attīstītājam ir jāpārliecinās, ka tās tīmekļa lietojumprogramma nesatur html injekcijas. Ja injekcijas tika konstatētas, uzbrucējs var viegli iestatīt attēla tagu savā tīmekļa serverī un atrast veidu, kā novirzīt lietotāju par to. Tādējādi viņš saņems iespēju nozagt kodu no HTTP pieprasījuma "atsauces" galvenes.

OAuth TOCKEY zādzība, izmantojot Redirect_uri parametru

Lietojumprogramma uzsāk atļauju izsniegšanas procesu, nosūtot pieprasījumu OAuth serverim:

https://www.example.com/signin/authorize?[...]&redirect_uri=httpps://demo.example.com/loginsuccessful.

Vaicājums vienmēr satur "redirect_uri" parametru, ko OAuth serveris izmanto, lai nosūtītu žetonus atpakaļ uz pieteikumu pēc tam, kad lietotājs deva savu piekrišanu. Ja šī parametra vērtība nav kontrolēta vai nav pārbaudīta, uzbrucējs to var viegli mainīt un novirzīt pieprasījumu uz tās tīmekļa vietni, kur tā izmanto īpašu programmu marķiera apstrādei un piekļūt ierobežotam resursam.

https://www.example.com/signin/authorize?[...]&redirect_uri=httpps://localhost.evil.com.

Dažreiz līdzīgi URL ir bloķēti. Uzbrucējs var novirzīt saņemtos datus par Open URL, piemēram:

https://www.example.com/oauth20_authorize.srf?[...:: &redirect_uri=httpps://accounts.google.com/backtoouthsubtarget?next=htpset://evil.com.

Vai tas:

https://www.example.com/oauth2/authorize? [...]% irect_uri = https% 3a% 2f% 2fapps.facebook.com% 2fattack% 2f.

Īstenojot OAuth, jūs nekad nevar iekļaut veselus domēnus baltajā sarakstā. Tikai daži URL būtu jāpievieno "redirect_uri" nav novirzīts pieprasījumu atvērt novirzīšanu.

Krusta line pieprasījumu viltošana

Interesijas pieprasījuma viltošana var rasties, ja uzbrucējam izdodas padarīt cietušo, lai noklikšķinātu uz viņa saites un tādējādi radītu pieprasījumu, ka viņš nav gatavojas radīt. Krustņu pieprasījumu viltošana parasti ir mīkstināta ar CSRF marķieri, kas ir saistīts ar lietotāja sesiju. Tas palīdz pieteikumam pārbaudīt personu, kas nosūtījusi pieprasījumu. "Valsts" parametrs OAuth protokolā kalpo kā CSRF marķieris.

Ir vērts apskatīt, kā CSRF uzbrukums tiek veikts OAuth, un kā "valsts" parametru var izmantot, lai mazinātu ievainojamības ietekmi.

Hacker atver tīmekļa lietojumprogrammu un uzsāk autorizācijas procesu, lai piekļūtu pakalpojumu sniedzējam, izmantojot OAuth. Pieteikums pieprasa pakalpojumu sniedzējam piekļūt, kas ir jāsniedz. Hacker tiks novirzīts uz pakalpojumu sniedzēja tīmekļa vietni, kur jums parasti ir jāievada jūsu lietotājvārds un parole, lai atļautu piekļuvi. Tā vietā, hacker nozvejas un novērš šo pieprasījumu un ietaupa tās URL. Hacker kaut kā izraisa cietušajam atvērt šo URL. Ja cietušais ievadīja pakalpojumu sniedzēja sistēmu, izmantojot savu kontu, tad tās akreditācijas dati tiks izmantoti, lai izsniegtu autorizācijas kodu. Autorizācijas koda apmaiņa ar piekļuvi piekļuves marķierim. Tagad Hacker konts pieteikumā ir atļauts. Tā var piekļūt cietušā kontam.

Tātad, kā es varu novērst šo situāciju, izmantojot "valsts" parametru?

Lietojumprogrammai ir jāizveido vērtība, kas ir kaut kādā veidā, pamatojoties uz avota kontu (piemēram, izmantojiet lietotāja sesijas taustiņu). Tas nav tik svarīgi, kas tas ir, galvenais ir tas, ka vērtība ir unikāla un radīta, izmantojot privātu informāciju par sākotnējo lietotāju. Tas ir piešķirts "valsts" parametram.

Šī vērtība tiek nosūtīta pakalpojumu sniedzējam, veicot novirzīšanu. Tagad hakeris aicina cietušo atvērt URL, ko viņš saglabāja.

Autorizācijas kodu izsniedz un nosūta atpakaļ klientam sesijā kopā ar "valsts" parametru.

Klients ģenerē parametru vērtību, pamatojoties uz sesijas informāciju un salīdzina to ar "valsts" vērtību, kas tika nosūtīta atpakaļ no atļaujas pieprasījuma pakalpojumu sniedzējam. Šī vērtība neatbilst "valsts" parametru vaicājumā, jo tas ir radīts tikai, pamatojoties uz informāciju par pašreizējo sesiju. Tā rezultātā iegūtā vērtība netiek pieņemta sistēmā.

Citas ievainojamības, kas konstatētas, īstenojot OAuth, ir iespēja veikt XSS (pārrobežu skriptu), izmantojot "Redirect_uri" parametru, OAuth privāto atslēgu iestatījumu (taustiņu dažkārt var iegūt, ja tas ir Mobile lietojumprogramma) un autorizācijas koda noteikumu pārkāpums (kad Autorizācijas kodu var izmantot vairāk nekā vienu reizi, lai izsniegtu vairākus piekļuves žetonus). Šīs neaizsargātības ir mazāk izplatītas nekā iepriekš aprakstītās, bet tas nav padarīt tos mazāk bīstami. Izstrādātājam vajadzētu zināt visu nepieciešamo praksi, lai nodrošinātu uzticamu tās tīmekļa lietojumprogrammas darbību.

Tulkotā raksta autors: Simon Saliba.

Svarīgs! Informācija tikai akadēmiskiem mērķiem. Lūdzu, ievērojiet tiesību aktus un nepiemērojiet šo informāciju nelikumīgiem mērķiem.

Vairāk interesantu materiālu Cisoclub.ru. Abonēt mums: Facebook | Vk | Twitter | Instagram | Telegramma | Zen | Messenger | ICQ NEW | YouTube | Pulss.

Lasīt vairāk