Raziskovalci varnostnega podjetja za spletno kodiranje SALT so pravkar objavili zanimiv opis, kako so našli napaka pri preverjanju pristnosti poimenovan CVE-2023-28131 v priljubljenem spletnem kompletu orodij za izdelavo aplikacij, imenovanem Expo.
Dobra novica je, da je Expo se je odzval zelo hitro do SALT-jevega poročila o hroščih, s čimer smo našli popravek v samo nekaj urah po SALT-ovem odgovornem razkritju.
Na srečo se popravek ni zanašal na to, da bodo stranke kar koli prenesle, ker je bil popravek implementiran znotraj storitve v oblaku Expo in ni zahteval popravkov za nobeno vnaprej nameščeno aplikacijo ali kodo na strani odjemalca.
Razstave svetovanje ni samo razložil, kaj se je zgodilo in kako je podjetje to popravilo, temveč je svojim strankam ponudil tudi programske nasvete o tem, kako se izogniti tovrstni možni ranljivosti pri drugih spletnih storitvah.
SALT je nato čakal tri mesece, preden je objavil svoje poročilo, namesto da bi ga takoj, ko bi lahko, objavil za namene oglaševanja, s čimer bi uporabnikom Expa dal priložnost, da prebavijo odziv Expa in ukrepajo na podlagi njega.
Naj bo preprosto
Postopek preverjanja pristnosti z napakami je podrobno razložen v SALT-ovo poročilo, vendar bomo tukaj predstavili zelo poenostavljen opis tega, kaj je šlo narobe v storitvi Expo OAUTH.
OAUTH, kratek za Odprto avtorizacijsko ogrodje, je postopek, ki vam omogoča dostop do zasebnih podatkov v spletni storitvi (kot je urejanje vašega spletnega profila, dodajanje novega članka v spletni dnevnik ali odobritev spletne storitve za objavljanje objav v družabnih omrežjih za vas), ne da bi kdaj nastavili geslo z , ali pa se prijavite neposredno v samo to storitev.
Ko vidite spletne storitve, ki vam ponujajo a Prijavite se z Googlom ali Facebookom možnost, na primer, skoraj vedno uporabljajo OAUTH v ozadju, tako da vam ni treba ustvariti novega uporabniškega imena in novega gesla s še enim spletnim mestom ali posredovati svoje telefonske številke še eni spletni storitvi.
Strogo povedano, posredno preverjate pristnost, tako da svoje poverilnice za Google ali Facebook vedno postavite na eno od teh spletnih mest.
Nekaterim uporabnikom to ni všeč, ker se ne želijo avtentikirati pri Googlu ali Facebooku samo zato, da bi dokazali svojo identiteto drugim, nepovezanim spletnim mestom. Drugim je to všeč, ker domnevajo, da imajo spletna mesta, kot sta Facebook in Google, več izkušenj pri upravljanju postopka prijave, varnem shranjevanju zgoščenih vrednosti gesel in izvajanju 2FA kot butična spletna stran, ki je poskušala spletati lastne kriptografske varnostne procese.
Zunanje preverjanje pristnosti
Zelo poenostavljena, prijava v slogu OAUTH prek vašega Facebook računa na spletno mesto, imenovano example.com
, gre nekako takole:
- Mesto
example.com
pravi vaši aplikaciji ali brskalniku, "Pozdravljen, X, pojdi in pridobi čarobni žeton za dostop do tega mesta od Facebooka." - Obiščete poseben Facebook URL in se prijavite, če se še niste, in recite: »Daj mi čarobni žeton za dostop do
example.com
«. - Če je Facebook prepričan, da ste tisti, za katerega trdite, odgovori: "Pozdravljeni, X, tukaj je vaš čarobni žeton za dostop."
- Izročite žeton za dostop
example.com
, ki se lahko nato sam obrne na Facebook, da potrdi žeton.
Upoštevajte, da samo Facebook vidi vaše geslo za Facebook in kodo 2FA, če je potrebno, zato storitev Facebook deluje kot posrednik pri preverjanju pristnosti med vami in example.com
.
V zakulisju je končna potrditev, kot je ta:
- Mesto
example.com
pravi Facebooku, »Ste vi izdali ta žeton in ali potrjuje uporabnika X?« - Če se Facebook strinja, pove
example.com
, "Da, menimo, da je ta uporabnik preverjen."
Subvertibilno zaporedje
Napaka, ki so jo raziskovalci SALT odkrili v kodi Expo, se lahko sproži z zlonamernim spodkopavanjem Expo-jevega ravnanja s tem, kar bi lahko imenovali proces »posredovanja pri preverjanju pristnosti«.
Ključne točke so naslednje:
- Expo sam doda ovoj okoli postopka preverjanja, tako da namesto vas obravnava avtentikacijo in validacijo ter na koncu posreduje čarobni žeton za dostop do želenega spletnega mesta (
example.com
v zgornji izmenjavi) nazaj v aplikacijo ali spletno mesto, s katerega se povezujete. - Parametri, uporabljeni pri preverjanju so pakirani v velik URL, ki je poslan v storitev Expo.
- Eden od teh parametrov je začasno shranjen v spletnem piškotku ki določa URL, na katerega bo poslan končni čarobni varnostni žeton za omogočanje dostopa.
- Preden je varnostni žeton dostavljen, pojavno okno vas prosi, da preverite URL, ki bo kmalu avtoriziran, tako da lahko ujamete vsakogar, ki poskuša v prijavnem procesu zamenjati lažni URL.
- Če odobrite pojavno okno, Expo vas preusmeri na postopek preverjanja na Facebooku.
- Če Facebook odobri preverjanje, storitvi Expo vrne čarobni žeton za dostop, Expo pa ga posreduje URL-ju, ki ste ga pravkar odobrili v pojavnem oknu, imenovanem
returnURL
. - Aplikacija ali spletno mesto, ki posluša določeno
returnURL
prejme povratni klic Expa, pridobi žeton za dostop in je zato overjen kot vi.
Na žalost so raziskovalci SALT ugotovili, da bi lahko spodkopali postopek prijave z uporabo kode JavaScript za sprožitev dostopa do začetnega URL-ja za prijavo v Expo, nato pa uničili pojavno okno za preverjanje, preden ste ga imeli čas prebrati ali odobriti sami.
Na tej točki pa je storitev Expo že nastavila piškotek z imenom ru
(kratek za returnURL
), da mu poveste, kam naj pokliče nazaj z vašim čarobnim dostopnim žetonom na koncu.
To je pomenilo, da bi kiberkriminalec lahko preslepil kodo Expa, da bi si »spomnil« a returnURL
kot https://roguesite.example
, ne da bi kdaj videli pogovorno okno, ki bi vas opozorilo, da je napad v teku, kaj šele, da bi ga pomotoma odobrili.
Nato so raziskovalci uporabili drugi del kode JavaScript za simulacijo preusmeritve Expa na Facebookov postopek preverjanja, ki bi samodejno uspel, če bi bili (kot mnogi ljudje) že prijavljeni v sam Facebook.
Facebookovo preverjanje pa bi preusmerilo postopek prijave v Expo nazaj v lastno kodo JavaScript Expa ...
... ki bi zaupljivo, a zmotno grabila nikoli dejansko preverjeno returnURL
za njegov povratni klic iz te čarovnije ru
piškotek, ki ga je nastavil na začetku, brez vaše odobritve ali vednosti.
Neuspešno odprto ali neuspešno zaprto?
Kot lahko vidite iz zgornjega opisa, je ranljivost povzročila neustrezna napaka kode Expo.
Koda za preverjanje pristnosti bi morala na splošno neuspešno zaprto, v žargonu pomeni, da postopek ne bi smel uspeti, razen če je bila signalizirana nekakšna aktivna odobritev.
Ugibamo, da Expo ni nameraval sistema ne odpreti, glede na to, da SALT-jevo poročilo kaže, da je njegovo pojavno pogovorno okno za odobritev izgledalo takole:
Aplikacija na https://roguesite.example vas prosi, da se prijavite v svoj Facebook račun. Ali popolnoma zaupate https://roguesite.example in se strinjate, da ga dovolite: [Ne] [Da]
Kot bi pričakovali, je bil privzeti odgovor nastavljen na [No]
, vendar bi to povzročilo samo neuspešno zaprtje sistema, če bi versko uporabili lastno kodo Expo na strani odjemalca za nadzor postopka preverjanja.
Z zagotavljanjem lastnega JavaScripta za zagon zaporedja zahtev za preverjanje so lahko raziskovalci obravnavali pogovorno okno za odobritev, kot da bi pisalo:
Če nam izrecno ne poveste, naj blokiramo prijavo https://roguesite.example prek vašega Facebook računa, bomo to dovolili: [Dovoli] [Blokiraj]
Rešitev, med drugimi spremembami, je bila, da Expo-jeva začetna prijavna koda nastavi to čarobnost ru
piškotek šele potem, ko ste izrecno odobrili t.i returnURL
, tako da se poznejša koda za prijavo v JavaScript Expa ne bi zaprla, če bi preskočili pojavno okno za preverjanje, namesto da bi slepo zaupali URL-ju, ki ga niste nikoli videli ali odobrili.
V mnogih pogledih je ta hrošč podoben Pametni vtič Belkin Wemo hrošč, o katerem smo pisali pred dvema tednoma, čeprav je bil glavni vzrok v Belkinovem primeru prekoračitev medpomnilnika, ne lažni spletni klic.
Belkinova koda je v kodi na strani strežnika dodelila 68-bajtni medpomnilnik, vendar se je zanašala na preverjanje kode na strani odjemalca, da niste poskušali poslati več kot 68 bajtov, s čimer je strežnik prepustil na milost in nemilost napadalcem, ki so se odločili za pogovor s strežnikom z uporabo lastne kode na strani odjemalca, ki je zaobšla postopek preverjanja.
Kaj storiti?
- Pri poročanju in pisanju napak, razmislite o sledenju SOLI Primer. Razkrivajte odgovorno in dajte prodajalcu razumen čas za odpravo ranljivosti ter razumen čas za svetovanje lastnim uporabnikom, preden objavite podrobnosti, ki bi komur koli drugemu omogočile, da ustvari lastno izkoriščanje.
- Ko prejmete poročila o napakah, razmislite o spremljanju Expa Primer. Hitro odgovorite, ostanite v stiku s prijaviteljem hrošča, čim prej popravite ranljivost, zagotovite koristno preiskovalno poročilo za svoje uporabnike in naj bo objektivno. (Upirajte se predlogom vaše marketinške ekipe, da se hvalite, ker »varnost jemljete resno«, ali da težavo zavrnete kot nepomembno. O tem se morajo odločiti vaši uporabniki na podlagi hitrosti in ustreznosti vašega odgovora ter lastne ocene tveganja.)
- Prepričajte se, da se vaša koda za preverjanje pristnosti ne zapre. Prepričajte se, da nimate korakov za preverjanje ali odobritev, ki bi jih bilo mogoče nevtralizirati preprosto tako, da jih ignorirate ali prekličete.
- Nikoli ne domnevajte, da bo vaša koda na strani odjemalca nadzorovala postopek preverjanja. Predpostavimo, da bodo napadalci izvedli obratni inženiring vašega protokola in ustvarili lastno kodo odjemalca, da bi se izognili čim več preverjanjem.
- Odjava iz spletnih računov, ko jih ne uporabljate aktivno. Veliko ljudi se prijavi v račune, kot so Google, Amazon, Facebook, Apple in drugi, nato pa ostanejo prijavljeni za nedoločen čas, ker je to priročno. Če se odjavite, preprečite, da bi se številna dejanja (vključno s preverjanji pristnosti, objavami, všečki, delitvami in še veliko več) zgodila, ko jih ne pričakujete – namesto tega boste videli poziv za prijavo.
Ne pozabite, da z odjavo iz spletnih storitev, kadar koli je to mogoče, in s pogostim brisanjem vseh piškotkov brskalnika in shranjenih spletnih podatkov zmanjšate tudi količino sledilnih informacij, ki jih lahko spletna mesta zberejo o vas med brskanjem.
Navsezadnje, če niste prijavljeni in nimate sledilnih piškotkov, ki so ostali od prej, spletna mesta ne vedo več natančno, kdo ste ali kaj ste naredili, ko ste nazadnje obiskali.
- Distribucija vsebine in PR s pomočjo SEO. Okrepite se še danes.
- PlatoAiStream. Podatkovna inteligenca Web3. Razširjeno znanje. Dostopite tukaj.
- Kovanje prihodnosti z Adryenn Ashley. Dostopite tukaj.
- Kupujte in prodajajte delnice podjetij pred IPO s PREIPO®. Dostopite tukaj.
- vir: https://nakedsecurity.sophos.com/2023/05/30/serious-security-verification-is-vital-examining-an-oauth-login-bug/
- :ima
- : je
- :ne
- :kje
- $GOR
- 1
- 15%
- 2FA
- a
- Sposobna
- O meni
- nad
- absolutna
- dostop
- Račun
- računi
- Pridobiva
- Zakon
- dejavnosti
- aktivna
- aktivno
- aktov
- dodajanje
- Dodaja
- nasveti
- svetuje
- po
- Avgust
- vsi
- dodeljenih
- omogočajo
- omogoča
- sam
- že
- Prav tako
- vedno
- Amazon
- med
- znesek
- an
- in
- Še ena
- odgovor
- kaj
- kdo
- karkoli
- aplikacija
- Apple
- odobritev
- odobri
- odobren
- aplikacije
- SE
- okoli
- članek
- AS
- ocenjevanje
- At
- napad
- preverjanje pristnosti
- overjena
- Preverjanje pristnosti
- Avtor
- pooblaščen
- pooblastilo
- avto
- samodejno
- izogniti
- nazaj
- ozadje
- ozadja, slike
- temeljijo
- BE
- ker
- bilo
- pred
- med
- Big
- slepo
- Block
- Blog
- meja
- Bottom
- posrednik
- brskalnik
- piškotki brskalnika
- varovalni
- prelivanje medpomnilnika
- Bug
- hrošči
- vendar
- by
- klic
- se imenuje
- CAN
- primeru
- wrestling
- Vzrok
- povzročilo
- center
- priložnost
- Spremembe
- preverjanje
- Pregledi
- trdijo
- Obračun
- stranke
- zaprto
- Cloud
- Koda
- Kodiranje
- zbiranje
- barva
- prihajajo
- podjetje
- Povezovanje
- Razmislite
- kontakt
- nadzor
- Priročen
- piškotek
- piškotki
- bi
- pokrov
- ustvarjajo
- Mandatno
- kriptografijo
- Stranke, ki so
- KIBERKRIMINALEC
- datum
- odloča
- odločil
- privzeto
- dostavi
- opis
- želeno
- Podatki
- Podrobnosti
- Dialog
- DID
- prebaviti
- neposredno
- Razkrije
- razkritje
- Opusti
- zaslon
- do
- ne
- tem
- don
- dont
- poimenovan
- urejanje
- ostalo
- omogočajo
- konec
- Tudi
- VEDNO
- točno
- Preučevanje
- Primer
- Izmenjava
- pričakovati
- izkušnje
- razložiti
- Izkoristite
- Razstava
- FAIL
- ne
- ne uspe
- zanimivo
- Nekaj
- končna
- fiksna
- Všita
- po
- sledi
- za
- je pokazala,
- pogosto
- iz
- v celoti
- splošno
- dobili
- Daj
- dana
- Giving
- Go
- goes
- dobro
- zgrabi
- zelo
- imel
- strani
- Ročaji
- Ravnanje
- se je zgodilo
- Zgodi se
- Imajo
- višina
- pomoč
- tukaj
- URE
- hover
- Kako
- Kako
- Vendar
- HTTPS
- identiteta
- if
- izvajali
- in
- Vključno
- posredno
- Podatki
- začetna
- Namesto
- nameravajo
- v
- preiskovalni
- vprašanje
- IT
- ITS
- sam
- žargon
- JavaScript
- samo
- Imejte
- Ključne
- plesti
- Vedite
- znanje
- znano
- Zadnja
- pozneje
- odhodu
- levo
- kot
- Poslušanje
- ll
- prijavljen
- sečnja
- prijava
- več
- Pogledal
- magic
- Znamka
- več
- veliko ljudi
- Marža
- Trženje
- max širine
- kar pomeni,
- pomenilo
- mediji
- Spomin
- morda
- napaka
- mesecev
- več
- veliko
- Imenovan
- Nimate
- potrebna
- nikoli
- Novo
- novice
- št
- normalno
- Številka
- oauth
- Cilj
- of
- off
- ponudba
- ponujen
- on
- ONE
- na spletu
- samo
- odprite
- Možnost
- or
- Ostalo
- drugi
- ven
- več
- lastne
- pakirano
- parametri
- vozovnice
- Podaje
- Geslo
- Patch
- Obliži
- paul
- ljudje
- telefon
- platon
- Platonova podatkovna inteligenca
- PlatoData
- plus
- Točka
- točke
- Popular
- Stališče
- mogoče
- Prispevkov
- predstaviti
- preprečuje
- zasebna
- Postopek
- Procesi
- profil
- Programiranje
- protokol
- Dokaži
- zagotavljajo
- oglaševanje
- objavljeno
- Založništvo
- namene
- Dajanje
- hitro
- precej
- Preberi
- res
- razumno
- prejme
- prejema
- preusmeriti
- zmanjša
- zanašajo
- odgovori
- poročilo
- reporter
- Poročanje
- Poročila
- zahteva
- zahteva
- raziskovalci
- Odgovor
- odgovorna
- vrne
- Pravica
- Tveganje
- koren
- Run
- Je dejal
- sol
- zadovoljni
- pravijo,
- pravi
- prizori
- drugi
- Varno
- varnost
- varnostni žeton
- glej
- videnje
- videl
- vidi
- pošljite
- poslan
- Zaporedje
- resno
- Storitev
- Storitve
- nastavite
- nastavitev
- Delnice
- Kratke Hlače
- shouldnt
- Razstave
- podpisati
- Podoben
- poenostavljeno
- preprosto
- spletna stran
- Spletna mesta
- pametna
- So
- socialna
- družbeni mediji
- Objave v družabnih medijih
- trdna
- Rešitev
- nekaj
- Nekaj
- Kmalu
- gledano
- posebna
- določeno
- Začetek
- bivanje
- Koraki
- shranjeni
- predložen
- uspeh
- taka
- dobavo
- SVG
- sistem
- Pogovor
- povej
- pove
- kot
- da
- O
- njihove
- Njih
- POTEM
- zato
- te
- jih
- ta
- tisti,
- čeprav?
- 3
- čas
- do
- žeton
- Orodje
- vrh
- Sledenje
- Prehod
- pregleden
- zdravljenje
- Poskušal
- sprožijo
- sprožilo
- Zaupajte
- zaupanja vreden
- poskusite
- OBRAT
- dva
- Konec koncev
- pod
- naprej
- URL
- us
- Rabljeni
- uporabnik
- Uporabniki
- uporabo
- POTRDI
- potrjevanje
- Prodajalec
- Preverjanje
- preverjanje
- preko
- obisk
- obiskali
- ključnega pomena
- ranljivost
- želeli
- je
- način..
- načini
- we
- web
- spletne storitve
- Spletna stran
- Weeks
- šla
- so bili
- Kaj
- kdaj
- kadar koli
- ki
- WHO
- bo
- z
- v
- brez
- bi
- pisanje
- Napačen
- X
- ja
- še
- jo
- Vaša rutina za
- sami
- zefirnet