
Buvo paskelbtas įspėjimas apie pažeidžiamumą, aptiktą StellarWP narystės papildinyje, kuris atskleidžia jautrius Stripe mokėjimo sąrankos duomenis „WordPress“ svetainėse, kuriose naudojamas papildinys. Defektas leidžia neautentifikuotiems užpuolikams pradėti atakas ir yra įvertintas 8,2 (aukštas).
Narystės įskiepis, sukurtas StellarWP
Narystės papildinys – StellarWP turinio apribojimas naudojamas „WordPress“ svetainėse mokamam ir privačiam turiniui tvarkyti. Tai leidžia svetainių savininkams apriboti prieigą prie puslapių, įrašų ar kitų išteklių, kad tik prisijungę vartotojai arba mokantys nariai galėtų juos peržiūrėti ir valdyti, ką gali matyti nemokantys svetainės lankytojai. Įskiepis dažniausiai diegiamas narystės ir prenumeratos svetainėse.
Pažeidžiamas neautentifikuotų užpuolikų
„Wordfence“ patarime teigiama, kad pažeidžiamumu gali pasinaudoti neautentifikuoti užpuolikai, o tai reiškia, kad norint pradėti ataką nereikia prisijungti arba „WordPress“ vartotojo abonemento. Naudotojo leidimo vaidmenys neatsižvelgia į tai, ar problema gali būti suaktyvinta, todėl šis pažeidžiamumas yra pavojingesnis, nes jį lengviau suaktyvinti.
Kas yra pažeidžiamumas
Problema kyla dėl to, kad trūksta saugumo patikrų, susijusių su „Stripe“ mokėjimų tvarkymu. Tiksliau, papildiniui nepavyko tinkamai apsaugoti Stripe SetupIntent duomenų.
„Stripe SetupIntent“ naudojama atsiskaitymo metu, norint surinkti ir išsaugoti kliento mokėjimo metodą, kad būtų galima naudoti ateityje. Kiekviename „SetupIntent“ yra „client_secret“ reikšmė, kurią ketinama bendrinti atliekant patikrą arba paskyros sąrankos eigą.
Oficialus „Wordfence“ patarimas paaiškina:
„Narystės įskiepis – apriboti turinį, skirtas„WordPress“, yra pažeidžiamas dėl trūkstamo autentifikavimo visose versijose iki 3.2.16 imtinai, naudojant funkciją „rcp_stripe_create_setup_intent_for_saved_card“, nes trūksta galimybių patikrinti.
Be to, papildinys netikrina vartotojo valdomo rakto, todėl neautentifikuoti užpuolikai gali nutekėti bet kurios narystės Stripe SetupIntent client_secret reikšmes.
Remiantis oficialiais „Stripe“ dokumentais, „Setup Intents“ API naudojama būsimų mokesčių mokėjimo metodui nustatyti, nesukuriant iš karto. „SetupIntent“ apima „client_secret“. „Stripe“ dokumentacijoje teigiama, kad „client_secret“ reikšmės neturėtų būti saugomos, registruojamos arba rodomos niekam kitam, išskyrus numatytą klientą.
Štai kaip „Stripe“ dokumentacijoje paaiškinama, koks yra „Setup Intents“ API tikslas:
„Naudokite Setup Intents API, kad nustatytumėte mokėjimo metodą būsimiems mokėjimams. Tai panašu į mokėjimą, bet mokestis nėra sukuriamas.
Siekiama, kad mokėjimo kredencialai būtų išsaugoti ir optimizuoti būsimiems mokėjimams, o tai reiškia, kad mokėjimo metodas būtų tinkamai sukonfigūruotas bet kokiam scenarijui. Pavyzdžiui, nustatant kortelę gali tekti patvirtinti kliento tapatybę arba patikrinti kortelės galiojimą kliento banke. Stripe atnaujina SetupIntent objektą viso proceso metu.
Stripe dokumentacijoje taip pat paaiškinama, kad client_secret reikšmės naudojamos kliento pusėje su mokėjimu susijusiems veiksmams atlikti ir yra skirtos saugiai perduoti iš serverio į naršyklę. Stripe teigia, kad šios vertės neturėtų būti saugomos, registruojamos ir negali būti atskleistos niekam, išskyrus atitinkamą klientą.
Štai kaip Stripe dokumentacija paaiškina kliento_slapties reikšmę:
„kliento_paslaptis
Šios klientų sesijos kliento paslaptis. Naudojama kliente norint nustatyti saugią prieigą prie nurodyto kliento.Kliento paslaptis gali būti naudojama norint suteikti prieigą klientui iš jūsų sąsajos. Jis neturėtų būti saugomas, registruojamas ar rodomas kam nors kitam, išskyrus atitinkamą klientą. Įsitikinkite, kad įjungėte TLS bet kuriame puslapyje, kuriame yra kliento paslaptis.
Kadangi papildinys neįgyvendino atitinkamos apsaugos, gali būti atskleistos Stripe SetupIntent client_secret reikšmės.
Realiame gyvenime tai reiškia, kad „Stripe“ mokėjimo sąrankos duomenys, susiję su narystėmis, buvo prieinami ne tik kaip numatyta.
Paveiktos versijos
Pažeidžiamumas paveikia visas papildinio versijas iki 3.2.16 versijos imtinai. „Wordfence“ šiai problemai skyrė 8,2 CVSS balą, atspindintį atskleistų duomenų jautrumą ir tai, kad problemai sukelti nereikia autentifikavimo.
Šiame diapazone esantis balas rodo didelio pažeidžiamumą, kurį galima išnaudoti nuotoliniu būdu be specialios prieigos, o tai padidina svetainių, kurios priklauso nuo papildinio mokamų narysčių ar apriboto turinio tvarkymo, svarbą.
Pleistro prieinamumas
Papildinys buvo atnaujintas su pataisa ir dabar yra prieinamas. Problema buvo išspręsta naudojant 3.2.17 papildinio versiją. Atnaujinimas prideda trūkstamų niekuo ir leidimo patikrų, susijusių su Stripe mokėjimų tvarkymu, sprendžiant sąlygas, kurios leido atskleisti SetupIntent client_secret reikšmes. „Nonce“ yra laikinas saugos prieigos raktas, užtikrinantis, kad konkretus veiksmas „WordPress“ svetainėje buvo tyčia paprašytas vartotojo, o ne piktybinio užpuoliko.
Oficialus narystės papildinio pakeitimų žurnalas atsakingai atskleidžia atnaujinimus:
„3.2.17
Sauga: Pridėta „Stripe“ mokėjimo metodų pridėjimo leidimo ir leidimo patikra.
3.2.16
Sauga: patobulintas trumpojo kodo atributų pašalinimas ir valymas (restrict) ir (register_form).
Ką turėtų daryti svetainės savininkai
Svetainės, kuriose naudojamas narystės papildinys – turinio apribojimas, turėtų būti atnaujintas į 3.2.17 ar naujesnę versiją.
Nepavykus atnaujinti papildinio, Stripe SetupIntent client_secret duomenys bus atskleisti neautentifikuotiems užpuolikams.
Teminis vaizdas, sukurtas Shutterstock/file404



