Verkkokoodausturvayhtiö SALTin tutkijat julkaisivat juuri kiehtovan kuvauksen siitä, kuinka he löysivät todennusvirhe dubattuna CVE-2023-28131 suositussa online-sovellusten rakennustyökalupakkissa, joka tunnetaan nimellä Expo.
Hyvä uutinen on, että Expo vastasi todella nopeasti SALTin virheraporttiin, ja saat korjauksen vain muutaman tunnin kuluessa SALTin vastuullisesta paljastamisesta.
Onneksi korjaus ei perustunut siihen, että asiakkaat lataavat mitään, koska korjaustiedosto toteutettiin Expon pilvipalvelun sisällä, eikä se vaatinut korjauksia esiasennettuihin sovelluksiin tai asiakaspuolen koodiin.
Expoa neuvontapalvelut ei vain selittänyt, mitä tapahtui ja kuinka yritys korjasi sen, vaan myös tarjosi ohjelmointineuvoja asiakkailleen, kuinka välttää tällainen mahdollinen haavoittuvuus muiden verkkopalveluiden kanssa.
SALT odotti sitten kolme kuukautta ennen kuin julkaisi raporttinsa sen sijaan, että kiirehtisi sitä julkisuuteen niin pian kuin mahdollista, antaen Expon käyttäjille mahdollisuuden sulatella Expon vastausta ja toimia sen mukaan.
Pidä se yksinkertaisena
Buginen todennusprosessi on selitetty yksityiskohtaisesti kohdassa SALTin raportti, mutta esitämme tässä suuresti yksinkertaistetun kuvauksen siitä, mikä meni pieleen Expon OAUTH-palvelussa.
OUT, lyhenne jstk Avaa valtuutuskehys, on prosessi, jonka avulla voit käyttää yksityisiä tietoja online-palvelussa (kuten verkkoprofiilin muokkaaminen, uuden blogiartikkelin lisääminen tai verkkopalvelun hyväksyminen sosiaalisen median julkaisujen tekemiseen puolestasi) ilman salasanan asettamista tai kirjautumalla suoraan kyseiseen palveluun.
Kun näet verkkopalveluita, jotka tarjoavat sinulle a Kirjaudu sisään Googlella tai Facebookilla vaihtoehdon, esimerkiksi he käyttävät lähes aina OAUTH:ia taustalla, joten sinun ei tarvitse luoda uutta käyttäjätunnusta ja salasanaa toiselle verkkosivustolle tai luovuttaa puhelinnumeroasi toiselle verkkopalvelulle.
Tarkkaan ottaen todennat epäsuorasti, vain laitat Google- tai Facebook-kirjautumistietosi johonkin näistä sivustoista.
Jotkut käyttäjät eivät pidä tästä, koska he eivät halua todentaa Googlea tai Facebookia vain todistaakseen henkilöllisyytensä muille, asiaankuulumattomille sivustoille. Toiset pitävät siitä, koska he olettavat, että Facebookin ja Googlen kaltaisilla sivustoilla on enemmän kokemusta kirjautumisprosessin käsittelystä, salasanan hajautusten tallentamisesta turvallisesti ja 2FA:n tekemisestä kuin putiikkisivustolla, joka on yrittänyt luoda omia salausturvaprosessejaan.
Ulkoistettu todennus
Paljon yksinkertaistettu, OAUTH-tyylinen kirjautuminen Facebook-tilisi kautta sivustolle nimeltä example.com
, menee jotenkin näin:
- Sivu
example.com
sanoo sovelluksellesi tai selaimellesi, "Hei, X, mene hakemaan taikapääsytunnus tälle sivustolle Facebookista." - Vierailet erityisellä Facebook-URL-osoitteella kirjautumalla sisään, jos et ole jo ja sano: "Anna minulle taikapääsytunnus
example.com
" - Jos Facebook on vakuuttunut siitä, että olet se, jota väität, se vastaa: "Hei, X, tässä on maaginen pääsytunnuksesi."
- Annat pääsytunnuksen käyttäjälle
example.com
, joka voi sitten ottaa yhteyttä Facebookiin itseensä vahvistaakseen tunnuksen.
Huomaa, että vain Facebook näkee tarvittaessa Facebook-salasanasi ja 2FA-koodisi, joten Facebook-palvelu toimii todennusvälittäjänä sinun ja example.com
.
Kulissien takana on lopullinen vahvistus, kuten tämä:
- Sivu
example.com
sanoo Facebookille, "Annoitko tämän tunnuksen ja vahvistaako se käyttäjän X?" - Jos Facebook suostuu, se kertoo
example.com
, "Kyllä, pidämme tätä käyttäjää todennettuna."
Käännettävä sekvenssi
Vika, jonka SALT-tutkijat löysivät Expo-koodista, voidaan laukaista haitallisesti häiritsemällä Expon käsittelyä prosessissa, jota voisi kutsua "todennusvälitykseksi".
Pääkohdat ovat seuraavat:
- Expo itse lisää varmennusprosessin ympärille niin, että se hoitaa todennuksen ja vahvistuksen puolestasi ja välittää lopulta taikakäyttötunnuksen halutulle verkkosivustolle (
example.com
yllä olevassa vaihdossa) takaisin sovellukseen tai verkkosivustoon, josta muodostat yhteyden. - Todennuksen käsittelyssä käytetyt parametrit on pakattu suureen URL-osoitteeseen, joka lähetetään Expo-palveluun.
- Yksi näistä parametreista tallennetaan väliaikaisesti verkkoevästeeseen joka määrittää URL-osoitteen, johon lopullinen maaginen suojaustunnus lähetetään pääsyn mahdollistamiseksi.
- Ennen kuin suojaustunnus toimitetaan, ponnahdusikkuna pyytää sinua vahvistamaan URL-osoitteen, joka on valtuutettavissa, jotta voit havaita kuka tahansa, joka yrittää korvata väärän URL-osoitteen kirjautumisprosessissa.
- Jos hyväksyt ponnahdusikkunan, Expo ohjaa sinut Facebookin vahvistusprosessiin.
- Jos Facebook hyväksyy vahvistuksen, se palauttaa taikapääsytunnuksen Expo-palveluun ja Expo välittää sen URL-osoitteeseen, jonka juuri hyväksyit ponnahdusikkunassa.
returnURL
. - Sovellus tai verkkosivusto kuuntelee määritetyssä paikassa
returnURL
vastaanottaa Expon soittopyynnön, hankkii käyttöoikeustunnuksen, ja siksi hänet todennetaan sinuna.
Valitettavasti SALT-tutkijat havaitsivat, että he saattoivat horjuttaa kirjautumisprosessia käyttämällä JavaScript-koodia käynnistääkseen pääsyn alkuperäiseen Expo-kirjautumis-URL-osoitteeseen, mutta lopettamalla vahvistuksen ponnahdusikkunan ennen kuin ehdit lukea sen tai hyväksyä sen itse.
Tässä vaiheessa Expon palvelu oli kuitenkin jo asettanut evästeen nimeltä ru
(lyhenne jstk returnURL
).
Tämä tarkoitti, että kyberrikollinen voisi huijata Expon koodin "muistamaan" a returnURL
kuten https://roguesite.example
, etkä koskaan nähnyt valintaikkunaa, joka varoittaa sinua hyökkäyksestä, puhumattakaan sen hyväksymisestä vahingossa.
Sitten tutkijat käyttivät toista JavaScript-koodipalaa simuloidakseen Expon uudelleenohjausta Facebookin vahvistusprosessiin, joka onnistuisi automaattisesti, jos (kuten monet ihmiset) olisit jo kirjautunut itse Facebookiin.
Facebookin vahvistus puolestaan ohjaisi Expo-kirjautumisprosessin takaisin Expon omaan JavaScript-koodiin…
…joka luottamuksellisesti mutta virheellisesti tarttuisi koskaan todellisuudessa todennettuihin returnURL
takaisinsoitosta tuosta taikuudesta ru
evästeen, jonka se asetti alussa ilman hyväksyntääsi tai tietämättäsi.
Epäonnistunut tai epäonnistunut sulkeminen?
Kuten yllä olevasta kuvauksesta näet, haavoittuvuus johtui Expon koodin virheellisestä epäonnistumisesta.
Todennuskoodin pitäisi yleensä epäonnistua suljettu, jargonissa, mikä tarkoittaa, että prosessin ei pitäisi onnistua, ellei jonkinlaista aktiivista hyväksyntää ole ilmoitettu.
Oletamme, että Expo ei tarkoittanut järjestelmää epäonnistua auki, koska SALTin raportti osoittaa, että sen ponnahdusikkunan hyväksymisikkuna näytti tältä:
Sovellus osoitteessa https://roguesite.example pyytää sinua kirjautumaan sisään Facebook-tilillesi. Luotatko täysin https://roguesite.exampleen ja annat sen: [Ei] [Kyllä]
Oletusvastaus asetettiin, kuten odotitkin [No]
, mutta tämä aiheuttaisi järjestelmän epäonnistumisen vain, jos käytät uskonnollisesti Expon omaa asiakaspuolen koodia vahvistusprosessin ohjaamiseen.
Toimittamalla oman JavaScript-koodinsa vahvistuspyyntöjen sarjan suorittamiseen, tutkijat pystyivät käsittelemään hyväksymisikkunaa ikään kuin se olisi sanonut:
Jos et nimenomaisesti kehota meitä estämään https://roguesite.example kirjautumista sisään Facebook-tilisi kautta, annamme sen tehdä niin: [Salli] [Estä]
Ratkaisu oli muiden muutosten ohella se, että Expon alkuperäinen kirjautumiskoodi asetti tuon taian ru
pikkuleipä vasta sen jälkeen, kun olit nimenomaisesti hyväksynyt ns returnURL
, jotta Expon myöhemmän JavaScript-kirjautumiskoodin sulkeminen epäonnistuisi, jos vahvistuksen ponnahdusikkuna ohitettiin, sen sijaan, että luottaisit sokeasti URL-osoitteeseen, jota et ollut koskaan nähnyt tai hyväksynyt.
Tämä bugi on monella tapaa samanlainen kuin Belkin Wemo Smart Plug bugi, josta kirjoitimme kaksi viikkoa sitten, vaikka perimmäinen syy Belkinin tapauksessa oli puskurin ylivuoto, ei rikollinen verkkosoitto.
Belkinin koodi varasi palvelinpuolen koodissaan 68-tavun muistipuskurin, mutta luotti asiakaspuolen koodin tarkistamiseen, että et yrittänyt lähettää enempää kuin 68 tavua, jolloin palvelin jäi hyökkääjien armoille, jotka päättivät. puhua palvelimelle käyttämällä omaa asiakaspuolen koodiaan, joka ohitti vahvistusprosessin.
Mitä tehdä?
- Kun raportoit ja kirjoitat vikoja, harkitse SALTin seuraamista esimerkki. Ilmoita vastuullisesti ja anna toimittajalle kohtuullinen aika korjata haavoittuvuus sekä kohtuullinen aika neuvoa omia käyttäjiään, ennen kuin julkaiset yksityiskohtia, jotka antavat kenen tahansa muun luoda oman hyväksikäyttönsä.
- Kun vastaanotat virheilmoituksia, Harkitse Expon seuraamista esimerkki. Vastaa nopeasti, pidä yhteyttä virheen ilmoittajaan, korjaa haavoittuvuus mahdollisimman pian, anna käyttäjillesi hyödyllinen tutkintaraportti ja pidä se objektiivisena. (Vasta markkinointitiimisi ehdotuksia kehua itseäsi "turvallisuuden ottamisesta vakavasti" tai hylkää ongelman merkityksettömänä. Se on käyttäjien päätettävissä vastauksesi nopean ja tarkoituksenmukaisuuden sekä oman riskiarvionsa perusteella.)
- Varmista, että todennuskoodisi sulkeminen epäonnistuu. Varmista, että sinulla ei ole vahvistus- tai hyväksymisvaiheita, jotka voidaan poistaa yksinkertaisesti jättämällä huomioimatta tai peruuttamalla ne.
- Älä koskaan oleta, että oma asiakaspuolen koodisi hallitsee vahvistusprosessia. Oleta, että hyökkääjät muokkaavat protokollasi uudelleen ja luovat oman asiakaskoodinsa kiertääkseen niin monta tarkistusta kuin pystyvät.
- Kirjaudu ulos verkkotileistä, kun et käytä niitä aktiivisesti. Monet ihmiset kirjautuvat sisään tileille, kuten Google, Amazon, Facebook, Apple ja muut, ja pysyvät sitten kirjautuneena sisään loputtomiin, koska se on kätevää. Uloskirjautuminen estää monia toimintoja (mukaan lukien todennukset, julkaisut, tykkäykset, jaot ja paljon muuta) tapahtumasta silloin, kun et odota niitä – näet sen sijaan kirjautumiskehotteen.
Älä unohda, että kirjautumalla ulos verkkopalveluista aina kun voit ja poistamalla kaikki selaimesi evästeet ja tallennetut verkkotiedot usein, vähennät myös seurantatietojen määrää, jonka sivustot voivat kerätä sinusta selatessasi.
Loppujen lopuksi, jos et ole kirjautunut sisään eikä sinulla ole aiempia seurantaevästeitä jäljellä, sivustot eivät enää tiedä tarkalleen kuka olet tai mitä teit viimeksi käydessäsi.
- SEO-pohjainen sisällön ja PR-jakelu. Vahvista jo tänään.
- PlatoAiStream. Web3 Data Intelligence. Tietoa laajennettu. Pääsy tästä.
- Tulevaisuuden lyöminen Adryenn Ashley. Pääsy tästä.
- Osta ja myy osakkeita PRE-IPO-yhtiöissä PREIPO®:lla. Pääsy tästä.
- Lähde: https://nakedsecurity.sophos.com/2023/05/30/serious-security-verification-is-vital-examining-an-oauth-login-bug/
- :on
- :On
- :ei
- :missä
- $ YLÖS
- 1
- 15%
- 2FA
- a
- pystyy
- Meistä
- edellä
- absoluuttinen
- pääsy
- Tili
- Tilit
- Ostaa
- Toimia
- toimet
- aktiivinen
- aktiivisesti
- säädökset
- lisää
- Lisää
- neuvot
- neuvoa
- Jälkeen
- sitten
- Kaikki
- kohdennetaan
- sallia
- mahdollistaa
- yksin
- jo
- Myös
- aina
- Amazon
- keskuudessa
- määrä
- an
- ja
- Toinen
- vastaus
- Kaikki
- joku
- mitään
- sovelluksen
- omena
- hyväksyminen
- hyväksyä
- hyväksytty
- sovellukset
- OVAT
- noin
- artikkeli
- AS
- arviointi
- At
- hyökkäys
- todentaa
- todennettu
- Authentication
- kirjoittaja
- valtuutettu
- lupa
- auto
- automaattisesti
- välttää
- takaisin
- tausta
- background-image
- perustua
- BE
- koska
- ollut
- ennen
- välillä
- Iso
- sokeasti
- Tukkia
- Uutiset ja media
- reunus
- pohja
- välittäjä
- selain
- selaimen evästeet
- puskuri
- puskurin ylivuoto
- Vika
- Bugs
- mutta
- by
- soittaa
- nimeltään
- CAN
- tapaus
- paini
- Aiheuttaa
- aiheutti
- keskus
- mahdollisuus
- Muutokset
- tarkkailun
- Tarkastukset
- vaatia
- Clearing
- asiakas
- suljettu
- pilvi
- koodi
- Koodaus
- kerätä
- väri
- tuleva
- yritys
- Kytkeminen
- Harkita
- ottaa yhteyttä
- ohjaus
- Mukava
- pikkuleipä
- keksit
- voisi
- kattaa
- luoda
- Valtakirja
- salauksen
- Asiakkaat
- KYBERRIKOLLINEN
- tiedot
- päättää
- päätti
- oletusarvo
- toimitettu
- kuvaus
- haluttu
- yksityiskohta
- yksityiskohdat
- Vuoropuhelu
- DID
- Sulattaa
- suoraan
- Paljastaa
- ilmitulo
- erottaa
- näyttö
- do
- ei
- tekee
- Don
- Dont
- dubattuna
- muokkaus
- muu
- mahdollistaa
- loppu
- Jopa
- EVER
- täsmälleen
- tutkii
- esimerkki
- Vaihdetaan
- odottaa
- experience
- selitti
- Käyttää hyväkseen
- Näyttely
- FAIL
- ei ole
- epäonnistuu
- lumoava
- harvat
- lopullinen
- Korjata
- kiinteä
- jälkeen
- seuraa
- varten
- löytyi
- usein
- alkaen
- täysin
- yleensä
- saada
- Antaa
- tietty
- Antaminen
- Go
- Goes
- hyvä
- napata
- suuresti
- HAD
- käsi
- Vetimet
- Käsittely
- tapahtui
- Happening
- Olla
- korkeus
- hyödyllinen
- tätä
- TUNTIA
- liihottaa
- Miten
- Miten
- Kuitenkin
- HTTPS
- Identiteetti
- if
- täytäntöön
- in
- Mukaan lukien
- epäsuorasti
- tiedot
- ensimmäinen
- sen sijaan
- aikovat
- tulee
- tutkiva
- kysymys
- IT
- SEN
- itse
- ammattikieli
- JavaScript
- vain
- Pitää
- avain
- neuloa
- Tietää
- tuntemus
- tunnettu
- Sukunimi
- myöhemmin
- jättäen
- vasemmalle
- pitää
- Kuunteleminen
- ll
- kirjattu
- hakkuu
- Kirjaudu sisään
- kauemmin
- Katsoin
- taika-
- tehdä
- monet
- monet ihmiset
- Marginaali
- Marketing
- max-width
- merkitys
- tarkoitti
- Media
- Muisti
- ehkä
- virhe
- kk
- lisää
- paljon
- nimetty
- Tarve
- tarvitaan
- ei ikinä
- Uusi
- uutiset
- Nro
- normaali
- numero
- OAuth
- tavoite
- of
- pois
- kampanja
- tarjotaan
- on
- ONE
- verkossa
- vain
- avata
- Vaihtoehto
- or
- Muut
- Muuta
- ulos
- yli
- oma
- pakattu
- parametrit
- kulkee
- Ohimenevä
- Salasana
- läikkä
- Merkit
- Paavali
- Ihmiset
- puhelin
- Platon
- Platonin tietotieto
- PlatonData
- plus
- Kohta
- pistettä
- Suosittu
- sijainti
- mahdollinen
- Viestejä
- esittää
- estää
- yksityinen
- prosessi
- Prosessit
- Profiili
- Ohjelmointi
- protokolla
- todistaa
- toimittaa
- julkisuus
- julkaistu
- Julkaiseminen
- tarkoituksiin
- Putting
- nopeasti
- pikemminkin
- Lue
- ihan oikeesti
- kohtuullinen
- vastaanottaa
- vastaanottava
- kääntää
- vähentää
- luottaa
- vastata
- raportti
- toimittaja
- Raportointi
- Raportit
- pyynnöt
- edellyttää
- Tutkijat
- vastaus
- vastuullinen
- Tuotto
- oikein
- Riski
- juuri
- ajaa
- Said
- suolaa
- vakuuttunut
- sanoa
- sanoo
- kohtaukset
- Toinen
- turvallisesti
- turvallisuus
- turvallisuusmerkki
- nähdä
- koska
- nähneet
- näkee
- lähettää
- lähetetty
- Järjestys
- vakava
- palvelu
- Palvelut
- setti
- asetus
- osakkeet
- Lyhyt
- shouldnt
- Näytä
- merkki
- samankaltainen
- yksinkertaistettu
- yksinkertaisesti
- paikka
- Sivustot
- fiksu
- So
- sosiaalinen
- sosiaalinen media
- Sosiaalisen median viestit
- vankka
- ratkaisu
- jonkin verran
- jotain
- Pian
- puhuminen
- erityinen
- määritelty
- Alkaa
- pysyä
- Askeleet
- tallennettu
- toimitettu
- menestyä
- niin
- toimittaa
- SVG
- järjestelmä
- Puhua
- kertoa
- kertoo
- kuin
- että
- -
- heidän
- Niitä
- sitten
- siksi
- Nämä
- ne
- tätä
- ne
- vaikka?
- kolmella
- aika
- että
- symbolinen
- työkalupakki
- ylin
- Seuranta
- siirtyminen
- läpinäkyvä
- kohdella
- kokeillut
- laukaista
- laukeaa
- Luottamus
- luottavainen
- yrittää
- VUORO
- kaksi
- Lopulta
- varten
- päälle
- URL
- us
- käytetty
- käyttäjä
- Käyttäjät
- käyttämällä
- VAHVISTA
- validointi
- myyjä
- Vahvistus
- todentaa
- kautta
- Vierailla
- vieraili
- elintärkeä
- alttius
- haluta
- oli
- Tapa..
- tavalla
- we
- verkko
- verkkopalvelut
- Verkkosivu
- viikkoa
- meni
- olivat
- Mitä
- kun
- aina kun
- joka
- KUKA
- tulee
- with
- sisällä
- ilman
- olisi
- kirjoittaminen
- Väärä
- X
- Joo
- vielä
- te
- Sinun
- itse
- zephyrnet