FixVibe
Covered by FixVibehigh

CORS nepareiza konfigurācija: pārmērīgi pieļaujamu politiku risks

Vairāku izcelsmes resursu koplietošana (CORS) ir pārlūkprogrammas mehānisms, kas paredzēts vienas izcelsmes politikas (SOP) atvieglošanai. Lai gan tas ir nepieciešams modernām tīmekļa lietotnēm, nepareiza ieviešana, piemēram, pieprasītāja Origin galvenes atbalsošana vai “nulles” izcelsmes iekļaušana baltajā sarakstā, var ļaut ļaunprātīgām vietnēm izfiltrēt privātus lietotāja datus.

CWE-942

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 Origin galveni no klienta pieprasījuma un atkārto to Access-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 null izcelsmi, ko var aktivizēt novirzīti pieprasījumi vai vietējie faili, ļaujot ļaunprātīgām vietnēm maskēties kā null izcelsmei, lai iegūtu piekļuvi. [S2][S3].
  • Parsēšanas kļūdas: kļūdas regulārajā izteiksmē vai virknes atbilstībā, validējot Origin galveni, 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-Origin galvenes dinamiskas ģenerēšanas no pieprasījuma Origin galvenes [S2]. Tā vietā salīdziniet pieprasījuma izcelsmi ar kodētu uzticamo domēnu sarakstu [S3].
  • Izvairieties no “null” izcelsmes: nekad neiekļaujiet null atļauto izcelsmju baltajā sarakstā [S2].
  • Ierobežot akreditācijas datus: iestatiet Access-Control-Allow-Credentials: true tikai 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 Origin galvenes 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.