Ietekme
Uzbrucējs var nozagt sensitīvus, autentificētus datus no neaizsargātas lietojumprogrammas [S2] lietotājiem. Ja lietotājs apmeklē ļaunprātīgu vietni, kad ir pieteicies neaizsargātajā lietotnē, ļaunprātīgā vietne var veikt vairāku izcelsmes pieprasījumus lietotnes API un nolasīt atbildes [S1][S2]. Tas var izraisīt privātas informācijas, tostarp lietotāju profilu, CSRF marķieru vai privātu ziņojumu zādzību. [S2].
Galvenais cēlonis
CORS ir uz HTTP galvenes balstīts mehānisms, kas ļauj serveriem norādīt, kuras izcelsmes (domēna, shēmas vai porta) ir atļauts ielādēt resursus [S1]. Ievainojamības parasti rodas, ja servera CORS politika ir pārāk elastīga vai slikti ieviesta [S2]:
- Atspoguļotās izcelsmes galvene: daži serveri nolasa
Origingalveni no klienta pieprasījuma un atkārto toAccess-Control-Allow-Origin(ACAO) atbildes galvenē [S2]. Tas efektīvi ļauj jebkurai vietnei piekļūt resursam [S2]. - Nepareizi konfigurētas aizstājējzīmes: lai gan aizstājējzīme
*ļauj jebkurai izcelsmei piekļūt resursam, to nevar izmantot pieprasījumiem, kuriem nepieciešami akreditācijas dati (piemēram, sīkfaili vai autorizācijas galvenes). [S3]. Izstrādātāji bieži cenšas to apiet, dinamiski ģenerējot ACAO galveni, pamatojoties uz pieprasījumu [S2]. - Baltā saraksta "nulle": dažas lietojumprogrammas baltajā sarakstā iekļauj
nullizcelsmi, ko var aktivizēt novirzīti pieprasījumi vai vietējie faili, ļaujot ļaunprātīgām vietnēm maskēties kānullizcelsmei, lai iegūtu piekļuvi. [S2][S3]. - Parsēšanas kļūdas: kļūdas regulārajā izteiksmē vai virknes atbilstībā, validējot
Origingalveni, uzbrucēji var izmantot tādus domēnus kātrusted-domain.com.attacker.com[S2].
Ir svarīgi atzīmēt, ka CORS nav aizsardzība pret vairāku vietņu pieprasījumu viltošanu (CSRF) [S2].
Betona labojumi
- Izmantojiet statisku balto sarakstu: izvairieties no
Access-Control-Allow-Origingalvenes dinamiskas ģenerēšanas no pieprasījumaOrigingalvenes [S2]. Tā vietā salīdziniet pieprasījuma izcelsmi ar kodētu uzticamo domēnu sarakstu [S3]. - Izvairieties no “null” izcelsmes: nekad neiekļaujiet
nullatļauto izcelsmju baltajā sarakstā [S2]. - Ierobežot akreditācijas datus: iestatiet
Access-Control-Allow-Credentials: truetikai tad, ja tas ir absolūti nepieciešams konkrētai savstarpējai mijiedarbībai [S3]. - Izmantojiet pareizu validāciju: ja jums ir jāatbalsta vairāki izcelsmi, pārliecinieties, ka
Origingalvenes validācijas loģika ir izturīga un to nevar apiet apakšdomēni vai līdzīga izskata domēni [S2].
Kā FixVibe to pārbauda
FixVibe tagad šī ir iekļauta kā ierobežota aktīva pārbaude. Pēc domēna verifikācijas active.cors nosūta vienas izcelsmes API pieprasījumus ar sintētisku uzbrucēja izcelsmi un pārskata CORS atbilžu galvenes. Tas ziņo par patvaļīgu izcelsmi, aizstājējzīmi CORS un plaši atvērtu CORS nepubliskos API galapunktos, vienlaikus izvairoties no publisko līdzekļu trokšņa.
