Yönetim arayüzünü admin.example.com@APOS;a taşımak gerçek bir iyileştirme: yönetici çerezlerini genel sayfalardan uzak tutar, iki uygulamaya ayrı önbellek verir ve daha sıkı bir ağ politikasını tek bir ana bilgisayar adına yönlendirmenizi sağlar. Ancak bu bir CSRF kontrolü değildir ve genel sitenin kodunu oturum açmış bir yöneticinin önünde açık bırakmayı güvenli kılmaz. Ayrım, tarayıcının sınır saydığını değiştirir, sunucunun denetlediğini değil, bu yüzden iş bitti demeden önce bu dört kontrolü yapın.

Köken ve siteyi iki farklı kelime olarak okuyun

Köken şema, ana bilgisayar ve bağlantı noktasıdır, yani https://www.example.com ile https://admin.example.com farklı kökenlerdir. Site, SameSite anlamında şema artı kayıtlı alan adıdır, yani bu iki ana bilgisayar adı genellikle aynı sitedir. Bütün tuzak bu farktadır: SameSite özniteliği kardeş alt alan adları arasında size yardımcı olmaz, çünkü tarayıcı isteği hiç siteler arası saymaz. Yönetim arayüzünü gerçekten farklı bir kayıtlı alan adına, örneğin admin-example.net@APOS;e yönlendirin; istek gerçekten siteler arası olur ve SameSite=Lax veya Strict tam orada güvenebileceğiniz işi yapmaya başlar.

Bunu akıl yürütmek yerine tarayıcıda test edin.

Genel siteyi yükleyin, geliştirici araçlarını açın ve tarayıcının yönetici ana bilgisayarına giden isteğe hangi çerezleri eklediğine bakın. Çerezde Domain özniteliği yoksa yalnızca ana bilgisayar içindir ve kendi adında kalır; Domain=example.com taşıyorsa her kardeşe gider ve yeni alt alan adı o çerez için size hiçbir şey kazandırmamıştır.

Yanıtı okumayı isteği göndermekten ayırın

Aynı köken politikası kökenler arasında yanıt okumayı sınırlar. Bir isteğin gönderilmesini durdurmaz ve bir formun tarayıcının zaten sahip olduğu kimlik bilgilerini taşımasını engellemez. Basit bir istek, form içerik türü veya düz GET ile, ön denetim olmadan teslim edilir; ardından CORS, çağıran betiğin yanıtı okuyup okuyamayacağına karar verir. CSRF tamamen gönderme tarafında yaşar.

Bu yüzden sunucunun durum değiştiren işlemler için açık bir denetime ihtiyacı vardır. Oturuma bağlı bir eşitleme belirteci veya sunucuda karşılaştırılan çift gönderim çerezi bu durumu kapsar; Origin veya Referer karşılaştırması ikinci bir kapı olarak eklenmeye değer ama tek kapı olarak değil, çünkü her istek o başlığı taşımaz ve her proxy onu saklamaz. OWASP@APOS;un CSRF önleme kılavuzu SameSite@APOS;ı birkaç katmandan biri olarak görür, tam da bu nedenle.

Ağ kapısının gerçekte neyi kanıtladığına karar verin

Yönetici ana bilgisayarının önündeki VPN çıkış izin listesi iyi bir kontrol ve zayıf bir kimlik iddiasıdır. İsteğin VPN@APOS;in verdiği bir adresten geldiğini kanıtlar, o çıkıştaki herkesin paylaşabileceği bir adres, ve arkasında hangi kişi veya cihazın olduğu hakkında hiçbir şey söylemez. Ona giriş filtresi olarak davranın, kimlik doğrulama olarak değil.

İsteğe bağlı denetimlerden bağımsız tutun. Liste, bir saldırgan ile durum değiştiren uç nokta arasındaki tek şeyse, yanlış yapılandırılmış bir rota, bir split-tunnel istemcisi veya ödünç alınmış bir dizüstü bilgisayar kontrolü tamamen kaldırır.

Beklenen aralıkların dışındaki reddetmeleri de günlüğe kaydedin. Bunların ani artışı, birinin yeni kurduğunuz sınırı yokladığının en yararlı işaretidir ve sessizlik, filtrenin hiç ulaşılmadığının işaretidir.

Çerezleri, oturum açmayı ve yetkilendirmeyi açık tutun

Çerezin kapsamı sonucun çoğunu belirler. Üst alan adının çerezi yönetici ana bilgisayarına gönderilir, bu yüzden genel sitedeki betik enjeksiyonu bir yöneticinin oturumuyla hareket edebilir; yalnızca ana bilgisayara ait çerez bunu yapamaz. Yalnızca ana bilgisayar biçimini tercih edin, Secure özniteliğini ekleyin ve platformun desteklediği yerde __Host- önekini kullanın, çünkü bu önek Secure, Path=/ ve Domain özniteliği olmamasını gerektirir. Çerez kavanozunu değil yanıt başlığını okuyun: Set-Cookie: __Host-admin_session=...; Secure; Path=/; HttpOnly; SameSite=Lax, Domain özniteliği olmadan. Tarayıcı Domain taşıyan __Host- çerezini atar, bu yüzden kardeş ana bilgisayarlarda hâlâ görünen çerez önekin hiç uygulanmadığının kanıtıdır.

Sonra yetkilendirmeyi sunucuda, her istek için, her yönetici uç noktasında tutun, yalnızca oturum açarken değil. İzin verilen ağdan gelen bir istek yine de kimlik doğrulamasından geçmeli ve istediği işlem için yetkilendirilmelidir; ana bilgisayar adı bir aktör değildir. Genel ve yönetici uygulamaları bir oturum açma akışını veya oturum deposunu paylaşıyorsa bu ilişkiyi yazın, çünkü genel sitedeki bir hatadan yönetici eylemine giden en kısa yol odur.

Ayrımdan sonra sınırı yeniden denetleyin

Yalnızca mutlu yolu değil, olumsuz testleri de çalıştırın: belirteçsiz siteler arası form reddedilmeli, başka oturumun belirteci reddedilmeli ve hiçbir GET durumu değiştirmemelidir. Geliştirici araçlarında çerez özniteliklerini kontrol edin, eşleşmeyen istekte Origin denetiminin tetiklendiğini doğrulayın ve filtrenin çalıştığını görmek için yönetici ana bilgisayarını VPN aralığının dışından deneyin.

Bunların hiçbiri yönetici uygulamasının kendi içindeki XSS kusurunu ortadan kaldırmaz. Ayrı bir ana bilgisayar adı, gerçek değeri olan tarayıcı tarafı bir yalıtım sınırıdır ve güvenli olmayan kod yürütmeyi önlemenin veya sunucu tarafı istek korumasının yerine geçmez. Ayrımdan sonra liste göründüğünden kısadır: ayrı köken, yalnızca ana bilgisayara ait çerezler, her değişiklikte belirteç, kimlik olarak güvenmediğiniz giriş filtresi ve her istek için karar verilen yetkilendirme.

İlgili makaleler