- Aplikasi resmi Gedung Putih berbasis React Native menggunakan backend WordPress, Expo SDK 54, dan mesin Hermes, serta berfungsi sebagai portal yang menyediakan konten seperti berita, foto, dan kebijakan
- Semua WebView menyertakan kode injeksi JavaScript yang secara otomatis menghapus banner cookie, jendela persetujuan GDPR, elemen paywall, dan sejenisnya
- Fitur pelacakan lokasi dan profiling pengguna melalui OneSignal SDK disertakan secara lengkap, dan dapat mengumpulkan data GPS dengan interval 4,5 hingga 9,5 menit
- Aplikasi memuat layanan komersial eksternal seperti GitHub Pages, Elfsight, Mailchimp, Uploadcare, Truth Social sehingga memunculkan risiko supply chain dan kemungkinan pelacakan
- Tidak ada SSL pinning, ada resource pengembangan yang ikut dibundel, serta ada kemungkinan eksekusi kode eksternal, sehingga muncul kekhawatiran dari sisi keamanan dan privasi untuk aplikasi resmi pemerintah
Gambaran aplikasi
- Aplikasi resmi White House adalah aplikasi berbasis React Native yang dirilis di App Store dan Google Play
- Menggunakan Expo SDK 54 dan mesin JavaScript Hermes
- Backend menggunakan struktur custom REST API berbasis WordPress
- Menurut konfigurasi Expo, pembuatnya ditandai sebagai “forty-five-press”
- Logika aplikasi dikompilasi menjadi bundel bytecode Hermes berukuran 5,5MB, sementara kode native hanya berupa wrapper sederhana
- Versinya 47.0.1, build 20, dengan Hermes dan New Architecture dalam keadaan aktif
Konfigurasi Expo
- Terdapat dua plugin,
withNoLocation dan withStripPermissions
- Diduga terkait penghapusan informasi lokasi dan stripping permission
- Pembaruan OTA dinonaktifkan, meski infrastruktur pembaruan Expo disertakan namun tidak berjalan
Fungsi nyata aplikasi
- Berdasarkan analisis string pada bundel Hermes, aplikasi memuat konten melalui WordPress REST API milik whitehouse.gov
- Endpoint utamanya mencakup
/wp-json/whitehouse/v1/home, /news/articles, /wire, /live, /galleries, /issues, /priorities, /achievements, /affordability, /media-bias, /social/x, dan lainnya
- String di dalam aplikasi mencakup
"THE TRUMP EFFECT", "Greatest President Ever!", "Text President Trump", "Visit TrumpRx.gov", "Visit TrumpAccounts.gov", dan lainnya
- Tautan
https://www.ice.gov/webform/ice-tip-form juga disertakan secara langsung
- Secara keseluruhan, aplikasi berbentuk portal yang menyediakan berita, siaran langsung, foto, kebijakan, feed sosial, dan konten promosi pemerintahan
Skrip pemblokir cookie dan paywall
- Pada WebView yang membuka tautan eksternal, kode injeksi JavaScript dijalankan setiap kali halaman dimuat
- Skrip ini menyembunyikan banner cookie, jendela persetujuan GDPR, dinding login/registrasi, elemen upsell dan paywall, serta kotak CMP
- Juga memaksa
body { overflow: auto !important } untuk membuka kunci scroll
- Dengan MutationObserver, jendela persetujuan yang baru ditambahkan juga terus dihapus
- Hasilnya, aplikasi resmi pemerintah AS memiliki struktur yang menyuntikkan kode untuk menghapus elemen cookie, GDPR, dan paywall dari situs web pihak ketiga
Infrastruktur pelacakan lokasi
- Meski plugin
withNoLocation ada, kode pelacakan lokasi OneSignal SDK tetap disertakan sepenuhnya
- Ada tiga syarat untuk mengaktifkan pelacakan
- Flag
_isShared disetel ke true (saat setLocationShared(true) dipanggil)
- Pengguna mengizinkan permission lokasi saat runtime
- Perangkat memiliki penyedia lokasi (GMS/HMS)
- Jika syarat terpenuhi, permintaan GPS dilakukan tiap 4,5 menit (foreground) dan 9,5 menit (background)
- Data yang dikumpulkan: lintang, bujur, akurasi, timestamp, status foreground/background, dan presisi lokasi
- Data disinkronkan ke server melalui PropertiesModel milik OneSignal
- Layanan background juga disertakan, sehingga lokasi bisa ditangkap saat aplikasi tidak aktif
- Tidak dapat dipastikan apakah
setLocationShared dipanggil dalam bundel JS, tetapi seluruh pipeline dikompilasi dalam keadaan siap diaktifkan
Profiling pengguna OneSignal
- OneSignal SDK bukan hanya untuk push notification, tetapi juga menjalankan pelacakan perilaku pengguna dan segmentasi
- Fungsi utama meliputi
addTag, addSms, addAliases, addOutcomeWithValue, addUniqueOutcome, notificationClicked, inAppMessageClicked, permissionChanged, subscriptionChanged, userStateChanged, setPrivacyConsentRequired, setPrivacyConsentGiven, dan lainnya
- DB lokal mencatat apakah notifikasi diterima, dibuka, atau diabaikan
- Akibatnya, lokasi, interaksi notifikasi, klik pesan in-app, nomor telepon, tag, dan perubahan status dapat dikirim ke server OneSignal
Risiko supply chain: pemuatan kode eksternal
-
GitHub Pages
- Library
react-native-youtube-iframe memuat HTML dari lonelycpp.github.io
- Jika akun GitHub tersebut disusupi, JavaScript arbitrer dapat dijalankan di dalam WebView aplikasi
-
Widget Elfsight
- Feed sosial di-embed melalui
platform.js milik Elfsight
- Kode SaaS komersial berjalan tanpa sandboxing, sehingga ada kemungkinan pelacakan
- ID widget
4a00611b-befa-466e-bab2-6e824a0a98a9 di-hardcode
-
Layanan eksternal lain
- Mailchimp: pemrosesan langganan email (
whitehouse.us10.list-manage.com)
- Uploadcare: hosting gambar (
ucarecdn.com)
- Truth Social: menyertakan profil Trump dan tombol “Follow”
- Facebook: memuat iframe plugin halaman
- Semua ini adalah layanan komersial eksternal, bukan infrastruktur pemerintah
Pengaturan keamanan
- Tidak ada SSL certificate pinning, menggunakan Android TrustManager standar
- Di Wi‑Fi publik atau lingkungan proxy, trafik bisa terekspos saat terjadi serangan MITM
Sisa artefak pengembangan
- Build produksi menyertakan URL dan resource untuk pengembangan
- Terdapat string
localhost dan IP developer (10.4.4.109)
- Expo development client (
expo-dev-client, expo-devlauncher, expo-devmenu) ikut disertakan
- Ada resource
dev_menu_fab_icon.png
- Compose
PreviewActivity disertakan dalam manifest dengan status export
Struktur permission
- AndroidManifest, selain permission umum terkait notifikasi, juga menyertakan banyak permission badge launcher untuk Samsung, HTC, Sony, dan lainnya
- Dalam string permintaan runtime, ada permission lokasi presisi, lokasi perkiraan, dan lokasi background
- Deskripsi di Google Play juga mencantumkan permission berikut
- “memodifikasi/menghapus penyimpanan bersama”, “menjalankan foreground service”, “tampil di atas aplikasi lain”, “berjalan saat boot”, “menggunakan hardware sidik jari/biometrik”
- Konfigurasi FileProvider mengekspos seluruh root penyimpanan eksternal, dan digunakan untuk akses file WebView
Daftar SDK yang disertakan
- Total ada lebih dari 68 library
- Framework: React Native, Expo SDK 54, Hermes
- Push/engagement: OneSignal, Firebase Cloud Messaging, Firebase Installations
- Analitik/telemetri: Firebase Analytics, Google Data Transport, OpenTelemetry
- Networking: OkHttp3, Apollo GraphQL, Okio
- Gambar: Fresco, Glide, Coil 3, Uploadcare CDN
- Video: ExoPlayer(Media3), Expo Video
- ML: Google ML Kit Vision (pemindaian barcode), model Barhopper
- Kriptografi: Bouncy Castle
- Penyimpanan: Expo Secure Store, React Native Async Storage
- WebView: React Native WebView (termasuk skrip injeksi)
- DI: Koin
- Serialisasi: GSON, Wire (Protocol Buffers)
- Verifikasi lisensi: PairIP (untuk verifikasi Google Play)
- Build arm64 menyertakan 25 library native
.so
1 komentar
Komentar Hacker News
Isi artikelnya terlihat seperti ditulis AI, jadi agak terasa mencurigakan
Karena penasaran, aku langsung memasang aplikasinya sendiri, tetapi berbeda dengan klaim artikel, sama sekali tidak ada permintaan izin lokasi
Aku mencoba mendekompilasi APK dengan Claude Code, tetapi alat ini lemah dalam analisis keterjangkauan maupun memahami alur kontrol yang kompleks
Kode mati yang tidak pernah dipanggil pun diperlakukan seolah fungsi yang benar-benar digunakan, sehingga menimbulkan salah paham
Untuk meminta lokasi saat runtime, deklarasinya wajib ada, dan bagian itu tidak ditemukan
Di ponselku (mungkin karena Graphene), Play memblokir pemasangan, jadi aku tidak bisa memeriksa APK secara langsung
Jika melihat bagian “Info → Izin” di Play Store, versi 47.0.1 hanya memiliki izin umum seperti akses jaringan, kontrol getaran, dan menampilkan notifikasi
Mungkin ini kasus rollout versi atau penargetan per perangkat
Aku sendiri tidak merasa begitu
Di iPhone App Store, versi 47.0.1 diunggah 34 menit lalu dan tertulis “perbaikan bug minor”
Bisa jadi perbaikan itu menyertakan kode terkait lokasi
Ini terlihat seperti aplikasi pemasaran khas perusahaan konsultan
Sepertinya pengembang vendor memakai arsitektur standar, dan kode seperti pelacakan lokasi ikut terbawa secara default
Ini cuma platform untuk push notification, jadi kalau aplikasinya sendiri tidak meminta izin, tidak akan terjadi apa-apa
Mereka tampaknya mendapatkan kontrak dukungan terkait Gedung Putih (sekitar 1,5 juta dolar) dan lalu membuat aplikasi semacam ini
Sekarang lembaga itu nyaris dibubarkan, berubah menjadi organisasi bernama DOGE, dan sedang terseret berbagai gugatan
Artikel wiki United States Digital Service
Karena itu, jejak kode yang dipakai ulang dari aplikasi lain tampaknya masih tertinggal
Aku ragu domain .gov boleh dipakai untuk promosi komersial
Jika isi artikel itu benar, ini akan menjadi peristiwa yang menandai akhir simbolis kebebasan
Rasanya nilai-nilai yang selama ini dibanggakan Amerika sedang menghilang
Cukup mengejutkan bahwa aplikasi resmi pemerintah menyisipkan CSS dan JavaScript ke situs pihak ketiga untuk menghapus banner cookie atau paywall
Aku sendiri tidak akan memasang aplikasi pemerintah tertutup, tetapi fungsinya tampak positif seperti uBlock
Situsnya terlalu lambat sampai nyaris tidak bisa dipakai
Di lingkungan MacBook Pro 2019 + Chrome milikku, scrolling patah-patah parah
Ironisnya, artikel yang mengkritik pengembangan web justru menunjukkan masalah performa web seperti ini
Kritik soal tidak adanya certificate pinning terasa agak berlebihan
Sekalipun berada di jaringan yang memungkinkan serangan MITM, kalau perangkatku tidak memercayai CA itu, yang muncul hanya error TLS
Misalnya, bisa dibayangkan trafik dicegat di kafe dekat kedutaan di negara tertentu yang pengawasannya sudah menjadi hal biasa
Kasus seperti ini jarang, tetapi bukan berarti mustahil sama sekali
Situs ini sangat berat sampai browser nyaris membeku
Aku hanya bisa membacanya lewat mode pembaca
Tadinya kukira masalahnya ada di tabletku, tetapi menarik juga ternyata orang lain mengalami hal serupa
Saat scrolling, beban GPU sangat tinggi sehingga penggunaan resource grafis juga besar
Belakangan ini Gedung Putih terasa seperti menjadikan pelanggaran hukum sebagai hal sehari-hari
Sejak awal aku menganggap ini pasti malware, dan ternyata dugaanku benar