Cloudbleed Shkaku kryesor: Ragel dhe cf-html

Publikuar me:

Cloudbleed ishte një cënueshmëri serioze e sigurisë në rrjetin e Cloudflare, zbuluar në shkurt të vitit 2017. Një gabim latent në një parser më të vjetër HTML, i cili bazohej në kompiluesin e makinerisë së gjendjes Ragel, shkaktoi një tejkalim bufferi që rrjedhi të dhëna të ndjeshme të klientëve nga memoria e serverit.

Incidenti mori emrin Cloudbleed për shkak të ngjashmërisë së tij me gabimin Heartbleed, i cili preku OpenSSL në 2014.

Shkaku kryesor: Ragel dhe cf-html

Dobësia ishte një gabim i fjetur në parserin e vjetër të Cloudflare për HTML, i shkruar fillimisht duke përdorur kompiluesin e makinerisë së gjendjes Ragel.

  • Një parser i ri (cf-html) solli një ndryshim: Gabimi mbeti joaktiv për vite me radhë. Megjithatë, kur Cloudflare filloi të shpërndante një parser të ri HTML të quajtur cf-html, ai ndryshoi në mënyrë të hollë mënyrën se si trajtoheshin bufferat e memories brenda NGINX.
  • Gabimi i kodimit me një karakter të vetëm: Në kodin e gjeneruar nga Ragel, një kontroll për të parë nëse parseri kishte arritur në fund të një bufferi përdorte një operator barazie (==) në vend të një operatori më i madh ose i barabartë (>=).
  • Tejkalimi i bufferit: Kjo nënkuptonte se nëse parseri e tejkalonte bufferin me më shumë se një karakter (gjë që mund të ndodhte me etiketa të caktuara të keqformuara HTML), kontrolli përfundimtar i fundit të bufferit do të dështonte, duke i lejuar procesit të lexonte përtej fundit të bufferit dhe në memorien e afërt.
  • Memorie e rrjedhur: Kjo memorie e afërt përmbante të dhëna të ndjeshme nga kërkesa të tjera të klientëve të Cloudflare që po përpunoheshin nga i njëjti server.

Ndikimi i rrjedhjes

Dobësia preku miliona faqe interneti që përdornin shërbimet e Cloudflare.

  • Periudha kohore: Gabimi ishte aktiv nga 22 shtatori 2016 deri më 18 shkurt 2017. Periudha e ndikimit më të madh ishte midis 13 dhe 18 shkurtit, kur një përditësim mundësoi gabimin në më shumë faqe interneti të klientëve.
  • Të dhëna të rrjedhura: Të dhënat e rrjedhura përmbanin një sërë informacione të ndjeshme nga trafiku HTTPS i klientëve, duke përfshirë:
    • Cookies HTTP dhe tokena autentifikimi
    • Fjalëkalime nga faqet e takimeve, shërbimet e bisedave dhe menaxherët e fjalëkalimeve
    • Të dhëna të ndjeshme nga kërkesat HTTPS POST (p.sh., rezervimet e hoteleve)
    • Informacione të brendshme të Cloudflare, siç janë çelësat privatë të enkriptimit
  • Fshirja nga motorët e kërkimit: Një problem i madh ishte se kërkuesit e motorëve të kërkimit, si Google, Yahoo dhe Bing, fshihnin disa nga të dhënat e rrjedhura ndërsa kërkonin në internet. Kjo i bëri informacionet private të aksesueshme publikisht në rezultatet e kërkimit.
  • Ndikimi te klientët:
    • Të dhënat rrjedhën në mënyrë të rastësishme, kështu që klientët e një faqe interneti mund të shihnin të dhëna nga një faqe tjetër e palidhur.
    • Ndërsa shumë faqe të mëdha u prekën (p.sh., Uber, OkCupid, Fitbit), shumica e rrjedhjeve të të dhënave ishin të rastësishme dhe përmbanin shkrime të pakuptimta. Megjithatë, potenciali për ekspozim të të dhënave shumë të ndjeshme ishte i rëndësishëm.

Zbulimi dhe sanimi

  • Zbulimi: Gabimi u zbulua dhe u raportua te Cloudflare nga studiuesi i sigurisë i Projektit Zero të Google, Tavis Ormandy, më 18 shkurt 2017.
  • Reagim i shpejtë: Reagimi i Cloudflare ishte i shpejtë. Pas njoftimit, ata:
    • Çaktivizuan veçoritë e dobëta në më pak se një orë.
    • Vendosën plotësisht një zgjidhje globalisht brenda shtatë orësh.
    • Punuan me motorët e kërkimit për të pastruar informacionin e fshirë nga rezultatet e kërkimit përpara se të publikonin incidentin publikisht.
  • Rekomandime: Si masë paraprake, Cloudflare dhe ekspertët e sigurisë këshilluan përdoruesit e prekur të ndryshonin fjalëkalimet e tyre dhe të aktivizonin autentifikimin me dy faktorë në të gjitha llogaritë. Ata gjithashtu pavlefshëmuan dhe rishpërndanë tokena autentifikimi të brendshëm për të zbutur rrezikun.