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
Originnga një kërkesë klienti dhe i bëjnë jehonë përsëri në kokën e përgjigjesAccess-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ënullpër të fituar akses [S2][S3]. - Gabimet e analizimit: Gabimet në përputhjen e regex-it ose vargjeve gjatë vërtetimit të kokës
Originmund t'i lejojnë sulmuesit të përdorin domene sitrusted-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-Originnga kreuOrigin[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ë
nullnë listën tuaj të bardhë të origjinës së lejuar [S2]. - Kufizoni kredencialet: Vendosni
Access-Control-Allow-Credentials: truevetë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.
