Að flytja stjórnviðmótið yfir á admin.example.com er raunveruleg bæting: það heldur stjórnarkökum í burtu frá opinberum síðum, gefur báðum forritunum aðskilin skyndiminni og gerir þér kleift að beina strangari netstefnu að einu hýsilnafni. En það er ekki CSRF-vörn og gerir ekki kóða opinbera vefsins öruggan til að hafa opinn fyrir innskráðum stjórnanda. Aðskilnaðurinn breytir því sem vafrinn lítur á sem mörk, ekki því sem þjónninn athugar, svo framkvæmdu þessar fjórar athuganir áður en þú segir því lokið.

Lestu uppruna og vefsvæði sem tvö ólík orð

Uppruni er skema, hýsill og port, svo https://www.example.com og https://admin.example.com eru ólíkir upprunar. Vefsvæði, í skilningi SameSite, er skema auk skráningarhæfs léni, svo þessi tvö hýsilnöfn eru venjulega sama vefsvæði. Sá munur er öll gildran: SameSite-eiginleikinn hjálpar þér ekki milli systurundirléna, því vafrinn lítur alls ekki á beiðnina sem milli vefsvæða. Beindu stjórnviðmótinu að raunverulega öðru skráningarhæfu léni, til dæmis admin-example.net, og beiðnin verður raunverulega milli vefsvæða, og þar byrjar SameSite=Lax eða Strict að vinna verk sem þú getur treyst.

Prófaðu það í vafranum í stað þess að rökræða um það.

Hladdu opinbera vefnum, opnaðu þróunartólin og sjáðu hvaða vafrakökur vafrinn setur við beiðni til stjórnarhýsilsins. Ef kakan hefur ekki Domain-eiginleika er hún aðeins fyrir hýsilinn og helst á sínu eigin nafni; ef hún ber Domain=example.com fer hún til hverrar systur, og nýja undirlénið gaf þér ekkert fyrir þá köku.

Skildu lestur svars frá sendingu beiðni

Stefnun sama uppruna takmarkar lestur svara milli uppruna. Hún stöðvar ekki að beiðni sé send og kemur ekki í veg fyrir að eyðublað beri skilríki sem vafrinn hefur þegar. Einföld beiðni, með efnisgerð eyðublaðs eða venjulegu GET, er afhent án forathugunar; CORS ákveður síðan hvort skriftan sem kallar megi lesa svarið. CSRF lifir algjörlega á sendingarhliðinni.

Þess vegna þarf þjónninn skýra athugun fyrir aðgerðir sem breyta stöðu. Samstillingartákn bundið við setuna, eða kaka með tvöfaldri sendingu sem er borin saman á þjóninum, nær yfir tilvikið; samanburður á Origin eða Referer er þess virði að bæta við sem öðru hliði en ekki því eina, því ekki ber hver beiðni hausinn og ekki varðveitir hver milliþjónn hann. Leiðbeiningar OWASP um að koma í veg fyrir CSRF líta á SameSite sem eitt lag meðal fleiri af nákvæmlega þessari ástæðu.

Ákveddu hvað netkerfishliðið sannar í raun

Leyfislisti yfir VPN-útganga fyrir framan stjórnarhýsilinn er góð vörn og veik staðhæfing um auðkenni. Hann sannar að beiðnin kom frá vistfangi sem VPN gefur, sem allir á þeim útgangi geta deilt, og segir ekkert um hvaða manneskja eða tæki stendur að baki. Meðhöndlaðu hann sem inngangssíu, ekki sem auðkenningu.

Haltu honum óháðum athugunum á beiðnistigi. Ef listinn er það eina milli árásarmanns og endapunkts sem breytir stöðu, þá fjarlægir ein rangstillt leið, einn split-tunnel skjólstæðingur eða ein lánað fartölva vörnina algjörlega.

Skráðu einnig synjanir utan væntra bila. Sprengja þeirra er gagnlegasta merkið um að einhver sé að kanna mörkin sem þú byggðir rétt í þessu, og þögnin er merkið um að síunni sé alls ekki náð.

Haltu vafrakökum, innskráningu og heimild skýrum

Umfang kakunnar ræður mestum hluta niðurstöðunnar. Kaka foreldraléns er send til stjórnarhýsilsins, svo skriftinnsprautun á opinbera vefnum getur unnið með setu stjórnanda; kaka aðeins fyrir hýsilinn getur það ekki. Veldu formið aðeins fyrir hýsilinn, bættu við Secure-eiginleikanum og notaðu forskeytið __Host- þar sem kerfið styður það, því forskeytið krefst Secure, Path=/ og enga Domain-eiginleika. Lestu svarhausinn en ekki kakakrukkuna: Set-Cookie: __Host-admin_session=...; Secure; Path=/; HttpOnly; SameSite=Lax, án Domain-eiginleika. Vafrinn hendir __Host--köku sem ber Domain, svo kaka sem enn sést á systurhýslum er sönnun þess að forskeytið hafi aldrei verið notað.

Haltu síðan heimildinni á þjóninum, fyrir hverja beiðni, á hverjum stjórnendapunkti, ekki aðeins við innskráningu. Beiðni frá leyfðu neti verður enn að auðkenna og heimila fyrir aðgerðina sem hún biður um; hýsilnafnið er ekki aðili. Ef opinbera og stjórnunarforritið deila innskráningarflæði eða setugeymslu, skrifaðu það samband niður, því það er stysta leiðin frá villu á opinbera vefnum að stjórnunaraðgerð.

Athugaðu mörkin aftur eftir aðskilnaðinn

Keyrðu neikvæðu prófin, ekki bara hina góðu leið: eyðublað milli vefsvæða án tákns verður að hafna, tákn frá annarri setu verður að hafna og ekkert GET má breyta stöðu. Athugaðu eiginleika kakakanna í þróunartólunum, staðfestu að Origin-athugunin kvikni á ósamsvarandi beiðni og prófaðu stjórnarhýsilinn utan VPN-bilsins til að sjá síuna virka.

Ekkert af þessu fjarlægir XSS-galla inni í stjórnunarforritinu sjálfu. Sérstakt hýsilnafn er einangrunarmörk á vafrahlið með raunverulegt gildi, og það kemur ekki í stað þess að koma í veg fyrir óörugga kóðaframkvæmd eða verja beiðnir á þjónahlið. Eftir aðskilnaðinn er listinn styttri en hann virðist: ólíkur uppruni, vafrakökur aðeins fyrir hýsilinn, tákn við hverja breytingu, inngangssía sem þú treystir ekki sem auðkenni og heimild ákveðin fyrir hverja beiðni.

Tengdir greinar