İmkânsız Seyahat Yanlış Pozitifleri: VPN'ler, Zamanlama ve Konum Verisi
İmkânsız seyahat, bir girişin IP kaynaklı konumunu o kullanıcı için önceki saklanan noktayla karşılaştırır ve geçen sürede fiziksel olarak seyahat edilmesi imkânsız olacak bir ima edilen hızı işaretler. Yüksek bir sonuç, ham mesafe-bölü-süre hesabının bir eşiği aştığı anlamına gelir — tek başına hesap ele geçirmenin kanıtı değildir ve birkaç sıradan durum bunu tetikleyebilir.
Puanın arkasındaki hesaplama
POST /v1/risk/check, bir kullanıcının önceki saklanan konumu ile mevcut konumu arasındaki büyük daire mesafesini hesaplar, bunu önceki gözlemden bu yana geçen süreye böler ve ima edilen hızı sınıflandırır: 500 km/sa altı düşük, 500-900 km/sa orta, 900 km/sa üstü yüksektir (impossibleTravel: true). Gerçek bir uzun mesafeli uçuş orta/yüksek sınırına yakın bir yere düşebilir, bu yüzden eşikler tek bir kesme noktası yerine aralıklar olarak vardır — ancak hesaplamanın kendisinde "uçuş," "VPN" veya "paylaşılan ağ" kavramı yoktur; yalnızca iki nokta ve bir süre görür.
İlk gözlem asla işaretlenmez
Bir kullanıcının ilk kontrolünün karşılaştıracağı hiçbir şey yoktur: her zaman null bir previousLocation ve null mesafe/hız/geçen süre değerleriyle risk: "low" döndürür ve (commit: false olmadıkça) yeni saklanan referans noktası haline gelir. Bu, yeni bir cihaz veya ağdan yapılan ilk girişin varsayılan olarak güven oluşturduğu anlamına gelir — bir saldırganın ilk eyleminin de aynı yapısal nedenle işaretlenmemiş olması bilinmeye değer.
Yaygın olarak yanlış pozitifi tetikleyen durumlar
Girişler arasında VPN çıkış düğümlerini veya mobil ağ geçitlerini değiştirmek, hiç gerçek seyahat olmadan çözümlenen konumu uzun bir mesafe hareket ettirebilir — v1'de VPN veya veri merkezi farkındalıklı bir bastırma yoktur, bu yüzden bu, gerçek imkânsız seyahatle aynı şekilde okunur. Sıradan mobil operatör IP değişimi (aynı fiziksel konumun farklı isteklerde farklı bir ağ geçidi şehrine çözümlenmesi) ve paylaşılan/anycast IP aralıkları da aynı etkiyi üretebilir. Bunların hiçbiri bir saldırgan içermez; bunlar IP kaynaklı konumun nasıl çalıştığının, doğruluk makalesinde daha derinlemesine ele alınan yansımalarıdır.
Yüksek bir puanın kanıtlamadığı şeyler
risk: "high", mesafe-bölü-süre hesaplamasından gelen ham bir sinyaldir — doğrulanmış bir hesap ele geçirme olayı, girişi kimin başlattığına dair bir kanıt veya kullanıcının kimlik bilgilerinin gerçekten ele geçirilip geçirilmediğine dair bir bilgi değildir. Bunu, zaten sahip olduğunuz kimlik doğrulama kanıtıyla birleştirilmiş, kendi inceleme veya adım artırmalı kimlik doğrulama kararınıza tek bir girdi olarak değerlendirin, tek başına hareket edilecek bağımsız bir hüküm olarak değil.
İki gözlemli bir örnek
Bir kullanıcının saklanan referans noktası, 09:00 UTC'de gözlemlenen Toronto'dur. Frankfurt'a çözümlenen bir IP'den 09:45 UTC'de bir giriş gelir — 45 dakikada yaklaşık 6.400 km, 900 km/sa'nin çok üzerinde ima edilen bir hız, bu yüzden bu risk: "high" ve impossibleTravel: true döndürür. Bu sonuç, ele geçirilmiş bir hesabın farklı bir kıtadan kullanılmasıyla ya da aynı meşru kullanıcının trafiğinin ilgisiz bir nedenle aniden bir Frankfurt VPN çıkışı üzerinden yönlendirilmesiyle tutarlıdır — API her iki durumda da aynı sınıflandırmayı döndürür, bu da tam olarak neden otomatik bir engelleme değil, incelemeye tek bir girdi olarak tasarlandığının nedenidir.
Bu makalenin iddia etmediği şeyler
Bu, Watch-IP'nin kendi v1 uygulamasını açıklar. Kapsamlı hesap ele geçirme tespiti, davranışsal analiz veya cihaz parmak izi çıkarma iddiasında bulunmaz — bunlar bu uç noktanın denemediği farklı tekniklerdir. Bu uç nokta için kullanılabilirlik ve bağımsız plan ailesi zorlaması doğrulanmamıştır; üretimde buna güvenmeden önce bizimle iletişime geçin.
Kaynaklar
Watch-IP editöryal ekibi tarafından yazıldı, 6 Eylül 2026. apps/api/src/lib/risk.ts ve apps/api/src/durable-objects/session-risk.ts baz alınarak incelendi.