- React Native tabanlı Beyaz Saray resmi uygulaması, WordPress arka ucu ile Expo SDK 54 ve Hermes motorunu kullanıyor; haber, fotoğraf ve politika gibi içerikler sunan bir portal yapısında
- Tüm WebView'lara JavaScript enjeksiyon kodu eklenmiş; bu kod çerez banner'larını, GDPR onay pencerelerini, paywall öğelerini ve benzerlerini otomatik olarak kaldırıyor
- OneSignal SDK üzerinden konum takibi ve kullanıcı profilleme işlevleri tamamen dahil edilmiş; GPS verileri 4,5 dakika ila 9,5 dakika aralıklarla toplanabiliyor
- Uygulama GitHub Pages, Elfsight, Mailchimp, Uploadcare, Truth Social gibi harici ticari servisleri yüklüyor; bu da tedarik zinciri riski ve izlenebilirlik olasılığı barındırıyor
- SSL pinning uygulanmaması, geliştirme amaçlı kaynakların dahil edilmesi ve harici kod çalıştırma olasılığı nedeniyle, resmi bir devlet uygulaması için güvenlik ve gizlilik açısından endişeler gündeme geliyor
Uygulamaya genel bakış
- White House resmi uygulaması, App Store ve Google Play'de yayımlanan React Native tabanlı bir uygulama
- Expo SDK 54 ve Hermes JavaScript motoru kullanılıyor
- Arka uç, WordPress tabanlı özel bir REST API yapısı
- Expo yapılandırmasına göre geliştirici taraf “forty-five-press” olarak belirtilmiş
- Uygulama mantığı 5,5 MB boyutundaki bir Hermes bytecode bundle'ı olarak derlenmiş ve native kod basit bir sarmalayıcı niteliğinde
- Sürüm 47.0.1, build 20; Hermes ve New Architecture etkin durumda
Expo yapılandırması
withNoLocation ve withStripPermissions adlı iki eklenti bulunuyor
- Bunların konum bilgisini kaldırma ve izinleri ayıklama işlevleriyle ilişkili olduğu tahmin ediliyor
- OTA güncellemeleri devre dışı, Expo update altyapısı uygulamada yer alsa da çalışmıyor
Uygulamanın gerçek işlevleri
- Hermes bundle içindeki string analizi, uygulamanın içerikleri whitehouse.gov'un WordPress REST API'si üzerinden yüklediğini gösteriyor
- Başlıca endpoint'ler:
/wp-json/whitehouse/v1/home, /news/articles, /wire, /live, /galleries, /issues, /priorities, /achievements, /affordability, /media-bias, /social/x vb.
- Uygulama içi string'lerde
"THE TRUMP EFFECT", "Greatest President Ever!", "Text President Trump", "Visit TrumpRx.gov", "Visit TrumpAccounts.gov" ifadeleri yer alıyor
- Ayrıca
https://www.ice.gov/webform/ice-tip-form bağlantısı doğrudan gömülü durumda
- Genel olarak uygulama; haberler, canlı yayınlar, fotoğraflar, politikalar, sosyal akışlar ve yönetim tanıtım içerikleri sunan bir portal gibi çalışıyor
Çerez ve paywall engelleme script'i
- Harici bağlantıları açan WebView içinde her sayfa yüklenişinde JavaScript enjeksiyon kodu çalıştırılıyor
- Bu script; çerez banner'larını, GDPR onay pencerelerini, giriş/kayıt duvarlarını, upsell ve paywall öğelerini, CMP kutularını gizliyor
- Kaydırma kilidini kaldırmak için
body { overflow: auto !important } zorla uygulanıyor
- MutationObserver aracılığıyla sonradan eklenen onay pencereleri de sürekli kaldırılıyor
- Sonuç olarak, ABD hükümetinin resmi uygulaması üçüncü taraf web sitelerindeki çerez, GDPR ve paywall öğelerini kaldıran kod enjekte eden bir yapıya sahip
Konum izleme altyapısı
withNoLocation eklentisi bulunmasına rağmen, OneSignal SDK'nın konum izleme kodu tamamen dahil edilmiş durumda
- İzlemenin etkinleşmesi için üç koşul var
_isShared bayrağının true olması (setLocationShared(true) çağrıldığında)
- Kullanıcının çalışma zamanında konum iznini vermesi
- Cihazda bir konum sağlayıcısının (GMS/HMS) bulunması
- Koşullar sağlandığında GPS isteği ön planda 4,5 dakika, arka planda 9,5 dakika aralıklarla yapılıyor
- Toplanan veriler: enlem, boylam, doğruluk, zaman damgası, ön plan/arka plan durumu ve konum hassasiyeti
- Veriler OneSignal'in PropertiesModel yapısı üzerinden sunucuya senkronize ediliyor
- Arka plan servisi de dahil olduğundan, uygulama etkin değilken bile konum yakalama mümkün
- JS bundle içinde
setLocationShared çağrısının yapılıp yapılmadığı doğrulanamasa da, tüm pipeline etkinleştirilebilir durumda derlenmiş
OneSignal kullanıcı profillemesi
- OneSignal SDK, basit push bildirimlerinin ötesinde kullanıcı davranışı izleme ve segmentasyon işlevleri de yürütüyor
- Başlıca işlevler:
addTag, addSms, addAliases, addOutcomeWithValue, addUniqueOutcome, notificationClicked, inAppMessageClicked, permissionChanged, subscriptionChanged, userStateChanged, setPrivacyConsentRequired, setPrivacyConsentGiven vb.
- Yerel veritabanı bildirimlerin alınıp alınmadığını, açılıp açılmadığını ve yok sayılıp sayılmadığını kaydediyor
- Sonuç olarak konum, bildirim etkileşimleri, uygulama içi mesaj tıklamaları, telefon numarası, etiketler ve durum değişiklikleri OneSignal sunucularına gönderiliyor
Tedarik zinciri riski: harici kod yükleme
-
GitHub Pages
react-native-youtube-iframe kütüphanesi HTML'i lonelycpp.github.io üzerinden yüklüyor
- Bu GitHub hesabı ele geçirilirse, uygulama içindeki WebView'da keyfi JavaScript çalıştırılabilir
-
Elfsight widget'ı
- Sosyal akış gömmek için Elfsight'ın
platform.js dosyası kullanılıyor
- Ticari SaaS kodu sandbox olmadan çalışıyor; izleme olasılığı mevcut
- Widget kimliği
4a00611b-befa-466e-bab2-6e824a0a98a9 olarak hardcode edilmiş
-
Diğer harici servisler
- Mailchimp: e-posta aboneliği işleme (
whitehouse.us10.list-manage.com)
- Uploadcare: görsel barındırma (
ucarecdn.com)
- Truth Social: Trump profili ve “Follow” düğmesi içeriyor
- Facebook: sayfa eklentisi iframe'i yüklüyor
- Bunların tamamı devlet altyapısı değil, harici ticari servisler
Güvenlik yapılandırması
- SSL sertifika pinning yok, standart Android TrustManager kullanılıyor
- Ortak Wi‑Fi veya proxy ortamlarında MITM saldırısı halinde trafik açığa çıkabilir
Geliştirme kalıntıları
- Production build içinde geliştirme amaçlı URL'ler ve kaynaklar yer alıyor
localhost ve geliştirici IP'si (10.4.4.109) string'leri mevcut
- Expo geliştirme istemcisi (
expo-dev-client, expo-devlauncher, expo-devmenu) dahil edilmiş
dev_menu_fab_icon.png kaynağı mevcut
- Compose
PreviewActivity manifest içinde export edilmiş durumda bulunuyor
İzin yapısı
- AndroidManifest, tipik bildirim odaklı izinlere ek olarak çok sayıda launcher badge izni içeriyor (Samsung, HTC, Sony vb.)
- Çalışma zamanı istek string'lerinde kesin konum, yaklaşık konum ve arka plan konumu izinleri bulunuyor
- Google Play açıklamasında şu izinler de belirtiliyor
- “paylaşılan depolamayı değiştirme/silme”, “ön plan servisi çalıştırma”, “diğer uygulamaların üzerinde gösterme”, “açılışta çalıştırma”, “parmak izi/biyometrik donanım kullanma”
- FileProvider yapılandırması harici depolama kökünün tamamını açığa çıkarıyor ve WebView dosya erişimi için kullanılıyor
Dahil edilen SDK listesi
- Toplam 68'den fazla kütüphane dahil edilmiş
- Framework'ler: React Native, Expo SDK 54, Hermes
- Push/etkileşim: OneSignal, Firebase Cloud Messaging, Firebase Installations
- Analiz/telemetri: Firebase Analytics, Google Data Transport, OpenTelemetry
- Ağ iletişimi: OkHttp3, Apollo GraphQL, Okio
- Görsel: Fresco, Glide, Coil 3, Uploadcare CDN
- Video: ExoPlayer(Media3), Expo Video
- ML: Google ML Kit Vision (barkod tarama), Barhopper modeli
- Kriptografi: Bouncy Castle
- Depolama: Expo Secure Store, React Native Async Storage
- WebView: React Native WebView (enjeksiyon script'i dahil)
- DI: Koin
- Serileştirme: GSON, Wire(Protocol Buffers)
- Lisans doğrulama: PairIP (Google Play doğrulaması için)
- arm64 build içinde 25 adet native
.so kütüphanesi bulunuyor
1 yorum
Hacker News görüşleri
Yazı AI tarafından yazılmış gibi göründüğü için biraz şüpheli gelmişti
Merakımdan uygulamayı bizzat kurup baktım ama yazıdaki iddianın aksine konum izni istemiyordu
Claude Code ile APK'yi decompile ettim, ancak bu araç erişilebilirlik analizi ya da karmaşık kontrol akışlarını anlama konusunda zayıf
Çağrılmayan dead code'u da gerçekten kullanılan fonksiyonlar gibi ele alıp yanlış izlenim yaratıyor
Çalışma anında konum istemek için bunun mutlaka tanımlanmış olması gerekir, ama o kısım yok
Benim telefonda (muhtemelen Graphene yüzünden olabilir) Play kurulumu engellediği için APK'yi doğrudan inceleyemedim
Play Store'daki “Bilgiler → İzinler” bölümüne bakınca 47.0.1 sürümünde yalnızca ağ erişimi, titreşim kontrolü, bildirim gösterme gibi sıradan izinler var
Muhtemelen bir sürüm rollout'u ya da cihaza göre hedefleme söz konusu olabilir
Bana öyle gelmedi
iPhone App Store'a göre 47.0.1 sürümü 34 dakika önce yüklenmiş ve “küçük hata düzeltmeleri” yazıyor
Belki de o düzeltmenin içinde konumla ilgili kod vardı
Tipik bir danışmanlık şirketi pazarlama uygulaması gibi görünüyordu
Dış kaynak geliştirici standart bir mimari kullanmış ve konum izleme kodu gibi şeyler varsayılan olarak dahil edilmiş gibi
Bu sadece push bildirimleri için kullanılan bir platform; uygulama doğrudan izin istemezse hiçbir şey yapmaz
Beyaz Saray'la ilgili bir destek sözleşmesi (yaklaşık 1,5 milyon dolar) alıp bu uygulamayı yapmış gibi görünüyor
Şimdi neredeyse dağıtıldı, DOGE adlı bir yapıya dönüştü ve birçok davaya karışmış durumda
United States Digital Service wiki maddesi
Bu yüzden başka uygulamalardan yeniden kullanılmış izler kalmış gibi duruyor
.gov alan adının ticari tanıtım için kullanılabilmesi tuhaf geliyor
Eğer yazıdaki içerik doğruysa, bu özgürlüğün simgesel sonunu temsil eden bir olay olurdu
Amerika'nın övündüğü değerlerin yok olduğu hissi veriyor
Resmî bir devlet uygulamasının üçüncü taraf web sitelerine CSS ve JavaScript enjekte ederek çerez banner'larını ya da paywall'ları kaldırması şaşırtıcı
Ben kapalı kaynak bir devlet uygulaması kurmam ama özelliğin kendisi uBlock gibi olumlu görünüyor
Site o kadar yavaştı ki neredeyse kullanılamıyordu
2019 model MacBook Pro + Chrome ortamımda kaydırma korkunç şekilde takılıyordu
İronik olarak, web geliştirmeyi eleştiren yazı böyle bir web performansı sorunu gösteriyor
Sertifika pinning olmaması eleştirisi biraz abartılı gibi geliyor
MITM saldırısı yapılabilecek bir ağda olsam bile cihazım o CA'ya güvenmiyorsa TLS hatası alırım, o kadar
Örneğin gözetimin sıradan olduğu belli bir ülkenin büyükelçiliği yakınındaki bir kafede trafiğin ele geçirilmesini hayal edebilirsiniz
Bu nadir olur ama tamamen imkânsız da değil
Bu site, tarayıcıyı donacak kadar zorlayacak kadar ağır
Sadece okuyucu modunda zar zor okuyabildim
Tabletimle ilgili sanmıştım ama başkalarında da olması ilginç
Kaydırırken GPU yükü çok artıyor, bu yüzden grafik kaynak kullanımı yüksek
Bugünlerde Beyaz Saray'da yasa ihlali sanki sıradan bir şey olmuş gibi
En baştan bunun zararlı yazılım olduğunu varsaymıştım ve beklentim doğru çıktı