FixVibe
Covered by FixVibehigh

CORS Camgyfluniad: Risgiau o Bolisïau Gor Ganiateir

Mae Rhannu Adnoddau Traws-darddiad (CORS) yn fecanwaith porwr sydd wedi'i gynllunio i lacio'r Polisi o'r Un Tarddiad (SOP). Er ei fod yn angenrheidiol ar gyfer apiau gwe modern, gall gweithredu amhriodol - megis adleisio pennyn Tarddiad y ceisydd neu restr wen y tarddiad 'null' - ganiatáu i wefannau maleisus all-hidlo data defnyddwyr preifat.

CWE-942

Effaith

Gall ymosodwr ddwyn data sensitif, dilys gan ddefnyddwyr cymhwysiad bregus [S2]. Os yw defnyddiwr yn ymweld â gwefan faleisus tra wedi mewngofnodi i'r app bregus, gall y wefan faleisus wneud ceisiadau traws-darddiad i API yr app a darllen yr ymatebion [S1][S2]. Gall hyn arwain at ddwyn gwybodaeth breifat, gan gynnwys proffiliau defnyddwyr, tocynnau CSRF, neu negeseuon preifat [S2].

Achos Gwraidd

Mae CORS yn fecanwaith sy'n seiliedig ar bennawd HTTP sy'n caniatáu i weinyddion nodi pa wreiddiau (parth, cynllun, neu borthladd) y caniateir iddynt lwytho adnoddau [S1]. Mae gwendidau fel arfer yn codi pan fo polisi CORS gweinydd yn rhy hyblyg neu wedi'i weithredu'n wael [S2]:

  • Pennawd Tarddiad a Adlewyrchir: Mae rhai gweinyddion yn darllen y pennawd Origin o gais cleient ac yn ei adleisio yn ôl ym mhennawd ymateb Access-Control-Allow-Origin (ACAO) [S2]. Mae hyn i bob pwrpas yn caniatáu i unrhyw wefan gael mynediad at yr adnodd [S2].
  • Cardiau Gwyllt wedi'u Camgyflunio: Er bod y cerdyn gwyllt * yn caniatáu i unrhyw darddiad gael mynediad i adnodd, ni ellir ei ddefnyddio ar gyfer ceisiadau sy'n gofyn am gymwysterau (fel cwcis neu benawdau Awdurdodi) [S3]. Mae datblygwyr yn aml yn ceisio osgoi hyn trwy gynhyrchu pennawd ACAO yn ddeinamig yn seiliedig ar y cais [S2].
  • Rhestr wen 'null': Mae rhai rhaglenni'n rhestru'r tarddiad null ar restr wen, a all gael ei sbarduno gan geisiadau wedi'u hailgyfeirio neu ffeiliau lleol, sy'n caniatáu i wefannau maleisus guddio fel tarddiad null i gael mynediad ZXCVFIXVIBETOKEN2ZVENXCVCV.
  • Gwallau Dosrannu: Gall camgymeriadau mewn regex neu baru llinynnau wrth ddilysu'r pennawd Origin ganiatáu i ymosodwyr ddefnyddio parthau fel trusted-domain.com.attacker.com [S2].

Mae'n bwysig nodi nad yw CORS yn amddiffyniad yn erbyn Ffugio Cais Traws-Safle (CSRF) [S2].

Atgyweiriadau Concrit

  • Defnyddiwch Rhestr Wen Statig: Osgowch gynhyrchu'r pennawd Access-Control-Allow-Origin yn ddeinamig o bennawd Origin y cais [S2]. Yn lle hynny, cymharwch darddiad y cais yn erbyn rhestr cod caled o barthau dibynadwy [S3].
  • Osgoi'r Tarddiad 'nwl': Peidiwch byth â chynnwys null yn eich rhestr wen o wreiddiau a ganiateir [S2].
  • Cyfyngu ar y Manylion: Gosodwch Access-Control-Allow-Credentials: true dim ond os yw'n gwbl angenrheidiol ar gyfer y rhyngweithiad traws-darddiad penodol [S3].
  • Defnyddiwch Ddilysiad Priodol: Os oes rhaid i chi gefnogi tarddiad lluosog, sicrhewch fod y rhesymeg ddilysu ar gyfer y pennawd Origin yn gadarn ac ni ellir ei osgoi gan is-barthau neu barthau tebyg eu golwg [S2].

Sut mae FixVibe yn ei brofi

Mae FixVibe bellach yn cynnwys hwn fel gwiriad gweithredol â gatiau. Ar ôl dilysu parth, mae active.cors yn anfon ceisiadau API o'r un tarddiad â tharddiad ymosodwr synthetig ac yn adolygu penawdau ymateb CORS. Mae'n adrodd yn adlewyrchu gwreiddiau mympwyol, cerdyn gwyllt wedi'i ardystio CORS, a CORS agored eang ar bwyntiau terfyn API nad ydynt yn gyhoeddus tra'n osgoi sŵn asedau cyhoeddus.