A SALT webes kódoló biztonsági cég kutatói most publikáltak egy lenyűgöző leírást arról, hogyan találtak egy hitelesítési hiba szinkronizált CVE-2023 28131- az Expo néven ismert népszerű online alkalmazásépítő eszköztárban.
A jó hír az, hogy Expo válaszolt nagyon gyorsan a SALT hibajelentésére, és a SALT felelősségteljes nyilvánosságra hozatalától számított néhány órán belül kijavítja.
Szerencsére a javítás nem függött attól, hogy az ügyfelek bármit letöltsenek, mert a javítást az Expo felhőszolgáltatásán belül implementálták, és nem igényelt javításokat az előre telepített alkalmazásokhoz vagy kliensoldali kódhoz.
Expó tanácsadó nemcsak elmagyarázta, hogy mi történt és hogyan javította ki a cég, hanem programozási tanácsokat is kínált ügyfeleinek, hogyan kerülhetik el az effajta lehetséges sebezhetőséget más online szolgáltatásokkal.
A SALT ezután három hónapot várt jelentésének közzététele előtt, ahelyett, hogy a lehető leghamarabb nyilvánosságra hozta volna, így lehetőséget adva az Expo felhasználóinak, hogy megemészsék és cselekedjenek az Expo válasza alapján.
Egyszerűen tartva
A hibás hitelesítési folyamat részletes leírása itt található SALT jelentése, de itt bemutatunk egy nagyon leegyszerűsített leírást arról, hogy mi hibázott az Expo OAUTH szolgáltatásában.
OAUTH, röviden Nyissa meg az engedélyezési keretrendszert, egy olyan folyamat, amely lehetővé teszi személyes adatok elérését egy online szolgáltatásban (például online profil szerkesztése, új blogcikk hozzáadása vagy olyan webszolgáltatás jóváhagyása, amely közösségimédia-bejegyzéseket készíthet Önnek), anélkül, hogy jelszót állítana be , vagy közvetlenül bejelentkezik abba a szolgáltatásba.
Amikor olyan webszolgáltatásokat lát, amelyek a Jelentkezzen be a Google vagy a Facebook segítségével opciót, például szinte mindig az OAUTH-ot használják a háttérben, így nem kell új felhasználónevet és új jelszót létrehoznia egy másik webhelyen, vagy megadnia telefonszámát egy másik online szolgáltatásnak.
Szigorúan véve közvetetten hitelesít, csak a Google vagy a Facebook hitelesítő adatait helyezi el az egyik ilyen webhelyen.
Egyes felhasználók nem szeretik ezt, mert nem akarnak hitelesíteni a Google-t vagy a Facebookot, csak azért, hogy igazolják személyazonosságukat más, nem kapcsolódó oldalakon. Másoknak azért tetszik, mert azt feltételezik, hogy az olyan webhelyek, mint a Facebook és a Google, nagyobb tapasztalattal rendelkeznek a bejelentkezési folyamat kezelésében, a jelszókivonatok biztonságos tárolásában és a 2FA végrehajtásában, mint egy butikwebhely, amely megpróbálta összefogni saját kriptográfiai biztonsági folyamatait.
Kihelyezett hitelesítés
Nagymértékben leegyszerűsítve, OAUTH-stílusú bejelentkezés a Facebook-fiókján keresztül az úgynevezett webhelyre example.com
, valahogy így megy:
- Az oldal
example.com
azt mondja az alkalmazásnak vagy a böngészőnek, „Helló, X, menj és szerezz egy mágikus hozzáférési tokent ehhez az oldalhoz a Facebooktól.” - Meglátogat egy speciális Facebook URL-t, és bejelentkezik, ha még nem tette meg, és mondd: „Adj egy mágikus hozzáférési tokent
example.com
. " - Ha a Facebook meggyőződött arról, hogy Ön az, akinek állítja, azt válaszolja: "Helló, X, itt a mágikus hozzáférési tokenje."
- Átadja a hozzáférési tokent
example.com
, amely ezután magával a Facebookkal léphet kapcsolatba a token érvényesítése érdekében.
Vegye figyelembe, hogy szükség esetén csak a Facebook látja Facebook-jelszavát és 2FA-kódját, így a Facebook szolgáltatás hitelesítési közvetítőként működik közted és example.com
.
A színfalak mögött van egy végső érvényesítés, például:
- Az oldal
example.com
azt mondja a Facebooknak, „Ön adta ki ezt a tokent, és érvényesíti az X felhasználót?” - Ha a Facebook beleegyezik, elmondja
example.com
, "Igen, ezt a felhasználót hitelesítettnek tekintjük."
Felforgatható sorozat
A hibát, amelyet a SALT-kutatók az Expo kódjában találtak, az válthatja ki, hogy rosszindulatúan felforgatják az Expo által „hitelesítési közvetítésnek” nevezett folyamat kezelését.
A legfontosabb pontok a következők:
- Maga az Expo is becsomagolja az ellenőrzési folyamatot, így kezeli a hitelesítést és az érvényesítést az Ön helyett, végül átadva egy mágikus hozzáférési tokent a kívánt webhelyhez (
example.com
a fenti csereprogramban) vissza arra az alkalmazásra vagy webhelyre, amelyről csatlakozik. - Az ellenőrzés kezelésében használt paraméterek egy nagy URL-be vannak csomagolva, amelyet elküldenek az Expo szolgáltatásnak.
- Ezen paraméterek egyike ideiglenesen egy web cookie-ban kerül tárolásra amely megadja azt az URL-t, amelyre a végső mágikus biztonsági tokent elküldi a hozzáférés engedélyezéséhez.
- A biztonsági token kézbesítése előtt egy felugró ablak arra kéri, hogy ellenőrizze az engedélyezés előtt álló URL-t, így mindenkit kiszűrhet, aki hamis URL-t próbál behelyettesíteni a bejelentkezési folyamatban.
- Ha jóváhagyja a felugró ablakot, Az Expo átirányít a Facebook-ellenőrzési folyamathoz.
- Ha a Facebook jóváhagyja az ellenőrzést, visszaad egy mágikus hozzáférési tokent az Expo szolgáltatásnak, és az Expo továbbadja azt a felugró ablakban jóváhagyott URL-nek.
returnURL
. - Az alkalmazás vagy webhely a megadott helyen figyel
returnURL
fogadja az Expo visszahívását, megszerzi a hozzáférési tokent, és ezért Önként hitelesítik.
Sajnálatos módon a SALT kutatói úgy találták, hogy felforgathatják a bejelentkezési folyamatot, ha JavaScript-kóddal hozzáférést indítanak az Expo eredeti bejelentkezési URL-jéhez, de aztán megsemmisítik az ellenőrző felugró ablakot, mielőtt még ideje lenne elolvasni vagy jóváhagyni.
Ekkor azonban az Expo szolgáltatása már beállított egy nevű cookie-t ru
(röviden a returnURL
).
Ez azt jelentette, hogy egy kiberbûnözõ rávehette az Expo kódját, hogy „emlékezzen” a returnURL
mint például https://roguesite.example
, anélkül, hogy valaha is látta volna a párbeszédpanelt, amely figyelmezteti Önt, hogy támadás van folyamatban, nem beszélve arról, hogy tévedésből jóváhagyta.
Ezután a kutatók egy második JavaScript-kóddal szimulálták az Expo átirányítását a Facebook ellenőrzési folyamatára, amely automatikusan sikeres lesz, ha (mint sok ember) már bejelentkezett magára a Facebookra.
A Facebookok ellenőrzése pedig visszairányítaná az Expo bejelentkezési folyamatát az Expo saját JavaScript kódjába…
…ami bizalommal, de tévedésből megragadná a valójában soha nem ellenőrzöttet returnURL
a varázslatból való visszahívásáért ru
cookie, amelyet az elején, az Ön jóváhagyása vagy tudta nélkül állított be.
Sikertelen nyitás vagy sikertelen zárás?
Amint a fenti leírásból látható, a sérülékenységet az Expo kódjának nem megfelelő meghibásodása okozta.
A hitelesítési kódnak általában kell sikertelen lezárva, a zsargonban, ami azt jelenti, hogy a folyamatnak csak akkor kell sikeresnek lennie, ha valamilyen aktív jóváhagyást jeleztek.
Úgy sejtjük, hogy az Expo nem erre szánta a rendszert sikertelen megnyitás, tekintettel arra, hogy a SALT jelentése szerint az előugró jóváhagyási párbeszédpanel így nézett ki:
A https://roguesite.example címen található alkalmazás arra kér, hogy jelentkezzen be Facebook-fiókjába. Teljes mértékben megbízik a https://roguesite.example oldalon, és beleegyezik-e, hogy megengedi: [Nem] [Igen]
Az alapértelmezett válasz, ahogy az várható volt, a következőre volt állítva [No]
, de ez csak akkor okozná a rendszer bezárásának kudarcát, ha vallásosan az Expo saját kliensoldali kódját használná az ellenőrzési folyamat vezérlésére.
Azáltal, hogy saját JavaScript-jüket biztosították az ellenőrzési kérelmek sorozatának futtatásához, a kutatók úgy tudták kezelni a jóváhagyási párbeszédpanelt, mintha az azt mondta volna:
Ha nem mondja meg kifejezetten, hogy blokkoljuk a https://roguesite.example webhelyet a Facebook-fiókján keresztüli bejelentkezéshez, megengedjük: [Engedélyezés] [Letiltás]
A megoldás többek között az volt, hogy az Expo kezdeti bejelentkezési kódja állítsa be ezt a varázslatot ru
aprósütemény csak miután kifejezetten jóváhagyta az ún returnURL
, így az Expo későbbi JavaScript-bejelentkezési kódja sikertelen lesz bezárni, ha kihagyják az ellenőrző felugró ablakot, ahelyett, hogy vakon bízna egy olyan URL-ben, amelyet soha nem látott vagy hagyott jóvá.
Ez a hiba sok szempontból hasonlít a Belkin Wemo Smart Plug bug, amiről két hete írtunk, pedig Belkin esetében a kiváltó ok puffertúlcsordulás volt, nem pedig egy csaló webes visszahívás.
A Belkin kódja lefoglalt egy 68 bájtos memóriapuffert a szerveroldali kódjában, de a kliensoldali kódban ellenőrizte, hogy nem próbált-e 68 bájtnál többet küldeni, így a szervert a támadók kegyére hagyta, akik úgy döntöttek. hogy beszéljenek a szerverrel a saját kliensoldali kódjukkal, amely megkerülte az ellenőrzési folyamatot.
Mit kell tenni?
- A hibák bejelentése és írása során fontolja meg a SÓ követését példa. Felelősségteljesen tegye közzé, és ésszerű időt biztosítva a szolgáltatónak a biztonsági rés kijavítására, valamint ésszerű időt a saját felhasználóiknak tanácsadásra, mielőtt közzéteszik azokat a részleteket, amelyek lehetővé teszik bárki más számára, hogy saját kizsákmányolást hozzanak létre.
- Amikor hibajelentéseket kap, fontolja meg az Expo követését példa. Válaszoljon gyorsan, tartsa a kapcsolatot a hiba bejelentőjével, a lehető leghamarabb javítsa ki a biztonsági rést, nyújtson hasznos vizsgálati jelentést a felhasználók számára, és tartsa tárgyilagos. (Ne álljon ellen marketingcsapata azon javaslatainak, hogy dicsérje magát, mert „komolyan veszi a biztonságot”, vagy utasítsa el a problémát, mint lényegtelent. Ezt a felhasználóknak kell eldönteniük, válaszának gyorsasága és helytállósága, valamint saját kockázatértékelésük alapján.)
- Győződjön meg arról, hogy a hitelesítési kód bezárása sikertelen. Győződjön meg arról, hogy nincsenek olyan ellenőrzési vagy jóváhagyási lépései, amelyek egyszerűen figyelmen kívül hagyásával vagy visszavonásával semlegesíthetők.
- Soha ne feltételezze, hogy a saját ügyféloldali kódja irányítja az ellenőrzési folyamatot. Tételezzük fel, hogy a támadók visszafejtik a protokollt, és saját klienskódot hoznak létre, hogy a lehető legtöbb ellenőrzést megkerüljék.
- Kijelentkezés a webfiókokból, ha nem használja őket aktívan. Sokan bejelentkeznek olyan fiókokba, mint a Google, az Amazon, a Facebook, az Apple és mások, majd a végtelenségig bejelentkezve maradnak, mert ez kényelmes. A kijelentkezés megakadályozza, hogy számos művelet (beleértve a hitelesítést, bejegyzéseket, kedveléseket, megosztásokat és sok mást) akkor történjen meg, amikor nem számít rájuk – ehelyett bejelentkezési üzenet jelenik meg.
Ne felejtse el, hogy ha bármikor kijelentkezik az internetes szolgáltatásokból, és gyakran törli böngészője összes cookie-ját és tárolt webadatát, akkor csökkenti azon nyomkövetési információk mennyiségét is, amelyeket a webhelyek böngészés közben gyűjthetnek Önről.
Végtére is, ha nincs bejelentkezve, és nem maradtak nyomkövető cookie-k a korábbiakból, a webhelyek többé nem tudják pontosan, ki vagy, vagy mit csinált legutóbbi látogatása alkalmával.
- SEO által támogatott tartalom és PR terjesztés. Erősödjön még ma.
- PlatoAiStream. Web3 adatintelligencia. Felerősített tudás. Hozzáférés itt.
- A jövő pénzverése – Adryenn Ashley. Hozzáférés itt.
- Részvények vásárlása és eladása PRE-IPO társaságokban a PREIPO® segítségével. Hozzáférés itt.
- Forrás: https://nakedsecurity.sophos.com/2023/05/30/serious-security-verification-is-vital-examining-an-oauth-login-bug/
- :van
- :is
- :nem
- :ahol
- $ UP
- 1
- 15%
- 2FA
- a
- Képes
- Rólunk
- felett
- Abszolút
- hozzáférés
- Fiók
- Fiókok
- Felvásárolja
- törvény
- cselekvések
- aktív
- aktívan
- cselekmények
- hozzáadásával
- Hozzáteszi
- tanács
- tanácsot ad
- Után
- Augusztus
- Minden termék
- elkülönített
- lehetővé
- lehetővé teszi, hogy
- kizárólag
- már
- Is
- mindig
- amazon
- között
- összeg
- an
- és a
- Másik
- válasz
- bármilyen
- bárki
- bármi
- app
- Apple
- jóváhagyás
- jóváhagy
- jóváhagyott
- alkalmazások
- VANNAK
- körül
- cikkben
- AS
- értékelés
- At
- támadás
- hitelesíteni
- hitelesített
- Hitelesítés
- szerző
- felhatalmazott
- meghatalmazás
- auto
- automatikusan
- elkerülése érdekében
- vissza
- háttér
- background-image
- alapján
- BE
- mert
- óta
- előtt
- között
- Nagy
- vakon
- Blokk
- Blog
- határ
- Alsó
- bróker
- böngésző
- böngésző sütik
- ütköző
- puffer túlcsordulás
- Bogár
- bogarak
- de
- by
- hívás
- hívott
- TUD
- eset
- Fogás
- Okoz
- okozott
- Központ
- esély
- Változások
- ellenőrzése
- Ellenőrzések
- követelés
- Klíring
- vásárló
- zárt
- felhő
- kód
- Kódolás
- gyűjt
- szín
- érkező
- vállalat
- Csatlakozó
- Fontolja
- kapcsolat
- ellenőrzés
- Kényelmes
- aprósütemény
- keksz
- tudott
- terjed
- teremt
- Hitelesítő adatok
- kriptográfiai
- Ügyfelek
- KIBERBŰNÖZŐ
- dátum
- dönt
- határozott
- alapértelmezett
- szállított
- leírás
- kívánatos
- részlet
- részletek
- Párbeszéd
- DID
- megemészteni
- közvetlenül
- nyilvánosságra
- közzététel
- Elvetése
- kijelző
- do
- nem
- Ennek
- Don
- ne
- szinkronizált
- szerkesztés
- más
- lehetővé
- végén
- Még
- EVER
- pontosan
- vizsgálva
- példa
- csere
- vár
- tapasztalat
- magyarázható
- Exploit
- Expo
- FAIL
- hiányában
- nem sikerül
- elbűvölő
- kevés
- utolsó
- Rögzít
- rögzített
- következő
- következik
- A
- talált
- gyakran
- ból ből
- teljesen
- általában
- kap
- Ad
- adott
- Giving
- Go
- Goes
- jó
- megragad
- nagymértékben
- kellett
- kéz
- Fogantyúk
- Kezelés
- történt
- Esemény
- Legyen
- magasság
- hasznos
- itt
- NYITVATARTÁS
- lebeg
- Hogyan
- How To
- azonban
- HTTPS
- Identitás
- if
- végre
- in
- Beleértve
- közvetve
- információ
- kezdetben
- helyette
- szándékozik
- bele
- nyomozó
- kérdés
- IT
- ITS
- maga
- zsargon
- JavaScript
- éppen
- Tart
- Kulcs
- kötött
- Ismer
- tudás
- ismert
- keresztnév
- a későbbiekben
- kilépő
- balra
- mint
- Kihallgatás
- ll
- bejelentkezve
- fakitermelés
- Belépés
- hosszabb
- nézett
- mágia
- csinál
- sok
- sok ember
- Margó
- Marketing
- max-width
- jelenti
- jelentett
- Média
- Memory design
- esetleg
- hiba
- hónap
- több
- sok
- Nevezett
- Szükség
- szükséges
- soha
- Új
- hír
- nem
- normális
- szám
- auth
- célkitűzés
- of
- kedvezmény
- ajánlat
- felajánlott
- on
- ONE
- online
- csak
- nyitva
- opció
- or
- Más
- Egyéb
- ki
- felett
- saját
- csomagolt
- paraméterek
- bérletek
- Múló
- Jelszó
- Tapasz
- Patches
- Paul
- Emberek (People)
- telefon
- Plató
- Platón adatintelligencia
- PlatoData
- plusz
- pont
- pont
- Népszerű
- pozíció
- lehetséges
- Hozzászólások
- be
- megakadályozza
- magán
- folyamat
- Folyamatok
- profil
- Programozás
- protokoll
- Bizonyít
- ad
- nyilvánosság
- közzétett
- Kiadás
- célokra
- elhelyezés
- gyorsan
- Inkább
- Olvass
- tényleg
- ésszerű
- kap
- fogadó
- átirányítás
- csökkenteni
- támaszkodnak
- válasz
- jelentést
- riporter
- Jelentő
- Jelentések
- kéri
- szükség
- kutatók
- válasz
- felelős
- Visszatér
- jobb
- Kockázat
- gyökér
- futás
- Mondott
- só
- elégedett
- azt mondják
- azt mondja,
- jelenetek
- Második
- biztosan
- biztonság
- biztonsági jelző
- lát
- látás
- látott
- lát
- küld
- küldött
- Sorozat
- súlyos
- szolgáltatás
- Szolgáltatások
- készlet
- beállítás
- Megoszt
- rövid
- kellene
- Műsorok
- <p></p>
- hasonló
- egyszerűsített
- egyszerűen
- weboldal
- Webhely (ek)
- okos
- So
- Közösség
- Közösségi média
- Közösségi média bejegyzések
- szilárd
- megoldások
- néhány
- valami
- Nemsokára
- beszélő
- speciális
- meghatározott
- kezdet
- tartózkodás
- Lépései
- memorizált
- benyújtott
- sikerül
- ilyen
- ellátó
- SVG
- rendszer
- Beszél
- mondd
- megmondja
- mint
- hogy
- A
- azok
- Őket
- akkor
- ebből adódóan
- Ezek
- ők
- ezt
- azok
- bár?
- három
- idő
- nak nek
- jelképes
- eszköztár
- felső
- Csomagkövetés
- átmenet
- átlátszó
- kezelésére
- kipróbált
- kiváltó
- váltott
- Bízzon
- bizakodó
- megpróbál
- FORDULAT
- kettő
- Végül
- alatt
- upon
- URL
- us
- használt
- használó
- Felhasználók
- segítségével
- ÉRVÉNYESÍT
- érvényesítés
- eladó
- Igazolás
- ellenőrzése
- keresztül
- Látogat
- látogatott
- fontos
- sebezhetőség
- akar
- volt
- Út..
- módon
- we
- háló
- webes szolgáltatások
- weboldal
- Hetek
- ment
- voltak
- Mit
- amikor
- bármikor
- ami
- WHO
- lesz
- val vel
- belül
- nélkül
- lenne
- írás
- Rossz
- X
- Igen
- még
- te
- A te
- magad
- zephyrnet