FixVibe
Covered by FixVibehigh

CORS konfigurim i gabuar: Rreziqet e politikave tepër lejuese

Ndarja e burimeve ndër-origjina (CORS) është një mekanizëm i shfletuesit i krijuar për të relaksuar Politikën me origjinë të njëjtë (SOP). Ndonëse është i nevojshëm për aplikacionet moderne të uebit, zbatimi i pahijshëm - si jehona e titullit të Origjinës së kërkuesit ose vendosja në listën e bardhë të origjinës "null" - mund të lejojë faqet me qëllim të keq të nxjerrin të dhënat e përdoruesve privatë.

CWE-942

Ndikimi

Një sulmues mund të vjedhë të dhëna të ndjeshme dhe të vërtetuara nga përdoruesit e një aplikacioni të cenueshëm [S2]. Nëse një përdorues viziton një uebsajt me qëllim të keq ndërsa është i identifikuar në aplikacionin e cenueshëm, faqja me qëllim të keq mund të bëjë kërkesa me origjinë të kryqëzuar në API të aplikacionit dhe të lexojë përgjigjet [S1][S2]. Kjo mund të çojë në vjedhjen e informacionit privat, duke përfshirë profilet e përdoruesve, shenjat CSRF ose mesazhet private [S2].

Shkaku rrënjësor

CORS është një mekanizëm i bazuar në kokë HTTP që lejon serverët të specifikojnë se cilat prejardhje (domain, skemë ose port) lejohen të ngarkojnë burimet [S1]. Dobësitë zakonisht lindin kur politika CORS e një serveri është shumë fleksibël ose e zbatuar dobët [S2]:

  • Titulli i origjinës së reflektuar: Disa serverë lexojnë kokën Origin nga një kërkesë klienti dhe i bëjnë jehonë përsëri në kokën e përgjigjes Access-Control-Allow-Origin (ACAO) [S2]. Kjo në mënyrë efektive lejon çdo faqe interneti të hyjë në burimin [S2].
  • Gabela e konfiguruar gabimisht: Ndërsa karakteri i * lejon çdo origjinë të aksesojë një burim, ai nuk mund të përdoret për kërkesat që kërkojnë kredenciale (si kuki ose koka autorizimi) [S3]. Zhvilluesit shpesh përpiqen ta anashkalojnë këtë duke gjeneruar në mënyrë dinamike kokën ACAO bazuar në kërkesën [S2].
  • Lista e bardhë 'null': Disa aplikacione në listën e bardhë të origjinës null, e cila mund të shkaktohet nga kërkesa të ridrejtuara ose skedarë lokalë, duke lejuar që faqet me qëllim të keq të maskohen si një origjinë null për të fituar akses [S2][S3].
  • Gabimet e analizimit: Gabimet në përputhjen e regex-it ose vargjeve gjatë vërtetimit të kokës Origin mund t'i lejojnë sulmuesit të përdorin domene si trusted-domain.com.attacker.com [S2].

Është e rëndësishme të theksohet se CORS nuk është një mbrojtje kundër falsifikimit të kërkesave në vend (CSRF) [S2].

Rregullime konkrete

  • Përdorni një listë të bardhë statike: Shmangni gjenerimin dinamik të kokës Access-Control-Allow-Origin nga kreu Origin [S2] të kërkesës. Në vend të kësaj, krahasoni origjinën e kërkesës me një listë të koduar të domeneve të besuara [S3].
  • Shmangni origjinën 'null': Mos përfshini kurrë null në listën tuaj të bardhë të origjinës së lejuar [S2].
  • Kufizoni kredencialet: Vendosni Access-Control-Allow-Credentials: true vetëm nëse është absolutisht e nevojshme për ndërveprimin specifik të ndërthurjes [S3].
  • Përdorni verifikimin e duhur: Nëse duhet të mbështesni origjina të shumëfishta, sigurohuni që logjika e vlefshmërisë për kokën Origin është e fortë dhe nuk mund të anashkalohet nga nëndomainët ose domenet me pamje të ngjashme [S2].

Si e teston FixVibe për të

FixVibe tani e përfshin këtë si një kontroll aktiv të mbyllur. Pas verifikimit të domenit, active.cors dërgon kërkesa API me origjinë të njëjtë me origjinë sulmuesi sintetik dhe rishikon titujt e përgjigjeve CORS. Ai raporton që pasqyron origjinë arbitrare, CORS të kredencializuar me shkronja të egra dhe CORS të hapur në pikat fundore jopublike API duke shmangur zhurmën e aseteve publike.