- La app oficial de la Casa Blanca, basada en React Native, usa un backend de WordPress junto con Expo SDK 54 y el motor Hermes, y funciona como un portal que ofrece contenido de noticias, fotos y políticas
- Todas las WebView incluyen código de inyección de JavaScript que elimina automáticamente banners de cookies, ventanas de consentimiento GDPR y elementos de paywall
- La infraestructura de rastreo de ubicación y perfilado de usuarios mediante el SDK de OneSignal está incluida por completo, con capacidad de recopilar datos GPS en intervalos de 4.5 a 9.5 minutos
- La app carga servicios comerciales externos como GitHub Pages, Elfsight, Mailchimp, Uploadcare y Truth Social, lo que implica riesgos de cadena de suministro y posibilidades de rastreo
- Debido a la ausencia de SSL pinning, la inclusión de recursos de desarrollo y la posibilidad de ejecutar código externo, se plantean preocupaciones de seguridad y privacidad impropias de una app oficial del gobierno
Resumen de la app
- La app oficial de la Casa Blanca es una aplicación basada en React Native publicada en App Store y Google Play
- Usa Expo SDK 54 y el motor JavaScript Hermes
- El backend tiene una estructura de API REST personalizada basada en WordPress
- Según la configuración de Expo, la entidad responsable figura como “forty-five-press”
- La lógica de la app está compilada en un bundle de bytecode Hermes de 5.5 MB, mientras que el código nativo funciona como un simple wrapper
- La versión es 47.0.1, build 20, con Hermes y New Architecture activados
Configuración de Expo
- Incluye dos plugins:
withNoLocation y withStripPermissions
- Se presume que están relacionados con la eliminación de ubicación y el recorte de permisos
- Las actualizaciones OTA están desactivadas; la infraestructura de actualizaciones de Expo está incluida, pero no funciona
Funcionalidad real de la app
- Según el análisis de cadenas del bundle Hermes, la app carga contenido a través de la API REST de WordPress de whitehouse.gov
- Los endpoints principales son
/wp-json/whitehouse/v1/home, /news/articles, /wire, /live, /galleries, /issues, /priorities, /achievements, /affordability, /media-bias, /social/x, entre otros
- Entre las cadenas dentro de la app aparecen
"THE TRUMP EFFECT", "Greatest President Ever!", "Text President Trump", "Visit TrumpRx.gov", "Visit TrumpAccounts.gov"
- También incluye directamente el enlace
https://www.ice.gov/webform/ice-tip-form
- En conjunto, funciona como un portal que ofrece noticias, transmisiones en vivo, fotos, políticas, feeds sociales y contenido de promoción de la administración
Script para bloquear cookies y paywalls
- En la WebView que abre enlaces externos se ejecuta código de inyección de JavaScript en cada carga de página
- Este script oculta banners de cookies, ventanas de consentimiento GDPR, muros de login/registro, elementos de upsell o paywall y cajas CMP
- Fuerza
body { overflow: auto !important } para desbloquear el scroll
- Mediante MutationObserver, también elimina de forma continua los cuadros de consentimiento que se agregan después
- Como resultado, la estructura inyecta código para que una app oficial del gobierno de EE. UU. elimine elementos de cookies, GDPR y paywalls de sitios web de terceros
Infraestructura de rastreo de ubicación
- A pesar de incluir el plugin
withNoLocation, el código de rastreo de ubicación del SDK de OneSignal está completamente incluido
- Hay tres condiciones para activar el rastreo:
- Que el flag
_isShared esté en true (al llamar setLocationShared(true))
- Que el usuario otorgue permisos de ubicación en tiempo de ejecución
- Que el dispositivo cuente con un proveedor de ubicación (GMS/HMS)
- Si se cumplen las condiciones, solicita GPS cada 4.5 minutos (en primer plano) y 9.5 minutos (en segundo plano)
- Datos recopilados: latitud, longitud, precisión, marca de tiempo, si estaba en foreground/background y nivel de precisión de ubicación
- Los datos se sincronizan con el servidor a través del PropertiesModel de OneSignal
- También se incluye un servicio en segundo plano, por lo que puede capturar ubicación incluso cuando la app está inactiva
- No se pudo confirmar dentro del bundle JS si se llama a
setLocationShared, pero todo el pipeline fue compilado en un estado que permite activarlo
Perfilado de usuarios con OneSignal
- El SDK de OneSignal, además de las simples notificaciones push, realiza rastreo de comportamiento y segmentación de usuarios
- Funciones principales:
addTag, addSms, addAliases, addOutcomeWithValue, addUniqueOutcome, notificationClicked, inAppMessageClicked, permissionChanged, subscriptionChanged, userStateChanged, setPrivacyConsentRequired, setPrivacyConsentGiven
- La base de datos local registra si las notificaciones fueron recibidas, abiertas o ignoradas
- En consecuencia, datos como ubicación, interacciones con notificaciones, clics en mensajes dentro de la app, números telefónicos, tags y cambios de estado se envían a los servidores de OneSignal
Riesgo de cadena de suministro: carga de código externo
-
GitHub Pages
- La librería
react-native-youtube-iframe carga HTML desde lonelycpp.github.io
- Si esa cuenta de GitHub fuera comprometida, JavaScript arbitrario podría ejecutarse dentro de la WebView de la app
-
Widget de Elfsight
- Se incrustan feeds sociales mediante
platform.js de Elfsight
- Código SaaS comercial se ejecuta sin sandboxing, con posibilidad de rastreo
- El ID del widget
4a00611b-befa-466e-bab2-6e824a0a98a9 está hardcodeado
-
Otros servicios externos
- Mailchimp: gestión de suscripciones por correo (
whitehouse.us10.list-manage.com)
- Uploadcare: hosting de imágenes (
ucarecdn.com)
- Truth Social: incluye el perfil de Trump y el botón “Follow”
- Facebook: carga un iframe del plugin de página
- Todos ellos son servicios comerciales externos, no infraestructura gubernamental
Configuración de seguridad
- No hay SSL certificate pinning; se usa el TrustManager estándar de Android
- En redes Wi‑Fi públicas o entornos con proxy, el tráfico podría quedar expuesto ante ataques MITM
Restos de desarrollo
- El build de producción incluye URL y recursos de desarrollo
- Aparecen cadenas de
localhost y de la IP del desarrollador (10.4.4.109)
- Se incluyen Expo development clients (
expo-dev-client, expo-devlauncher, expo-devmenu)
- Existe el recurso
dev_menu_fab_icon.png
- Compose
PreviewActivity está incluido en el manifiesto con estado exportado
Estructura de permisos
- El AndroidManifest incluye, además de permisos normales centrados en notificaciones, múltiples permisos de badges del launcher (Samsung, HTC, Sony, etc.)
- En las cadenas de solicitud en tiempo de ejecución aparecen permisos de ubicación precisa, ubicación aproximada y ubicación en segundo plano
- La descripción en Google Play también indica los siguientes permisos:
- “modificar/eliminar almacenamiento compartido”, “ejecutar servicios en primer plano”, “mostrar sobre otras apps”, “ejecutarse al iniciar” y “usar hardware de huella digital/biometría”
- La configuración de FileProvider expone toda la raíz del almacenamiento externo, y se usa para acceso a archivos desde WebView
Lista de SDK incluidos
- Se incluyen más de 68 librerías en total
- Frameworks: React Native, Expo SDK 54, Hermes
- Push/engagement: OneSignal, Firebase Cloud Messaging, Firebase Installations
- Analítica/telemetría: Firebase Analytics, Google Data Transport, OpenTelemetry
- Networking: OkHttp3, Apollo GraphQL, Okio
- Imágenes: Fresco, Glide, Coil 3, Uploadcare CDN
- Video: ExoPlayer (Media3), Expo Video
- ML: Google ML Kit Vision (escaneo de códigos de barras), modelo Barhopper
- Criptografía: Bouncy Castle
- Almacenamiento: Expo Secure Store, React Native Async Storage
- WebView: React Native WebView (con scripts inyectados)
- DI: Koin
- Serialización: GSON, Wire (Protocol Buffers)
- Verificación de licencias: PairIP (para verificación de Google Play)
- El build arm64 incluye 25 librerías nativas
.so
1 comentarios
Opiniones de Hacker News
El artículo parecía como si lo hubiera escrito una IA, así que me generó cierta desconfianza
Por curiosidad instalé la app yo mismo, pero a diferencia de lo que afirmaba el artículo, no pedía permisos de ubicación en absoluto
La decompilé con Claude Code, pero esta herramienta es débil para el análisis de alcanzabilidad o para entender flujos de control complejos
Trata código muerto no invocado como si fueran funciones realmente usadas, lo que puede llevar a confusión
Para pedir ubicación en tiempo de ejecución, necesariamente tendría que estar declarado, y esa parte no estaba
En mi teléfono (quizá por Graphene) Play bloqueó la instalación, así que no pude verificar directamente el APK
Si miras la sección “Información → Permisos” en Play Store, la versión 47.0.1 solo tiene permisos comunes como acceso a red, control de vibración y mostrar notificaciones
Probablemente se trate de un despliegue por versiones o de segmentación por dispositivo
A mí no me dio esa impresión
En la App Store de iPhone, la versión 47.0.1 apareció hace 34 minutos y figura como “correcciones menores de errores”
Quizá esa actualización incluía código relacionado con ubicación
Parecía la típica app de marketing de una consultora
Da la impresión de que un desarrollador tercerizado usó una arquitectura estándar y que código como el de rastreo de ubicación venía incluido por defecto
Eso es solo una plataforma para notificaciones push, así que no pasa nada a menos que la app pida el permiso directamente
Parece que consiguieron un contrato de soporte relacionado con la Casa Blanca (de unos 1.5 millones de dólares) y con eso hicieron esta app
Ahora está prácticamente desmantelado, transformado en una organización llamada DOGE, y envuelto en varios litigios
Artículo de Wikipedia sobre United States Digital Service
Por eso parecen haber quedado rastros reutilizados de otras apps
Me pregunto si realmente se puede usar un dominio .gov para promoción comercial
Si lo que dice el artículo es cierto, esto sería un hecho que marcaría el fin simbólico de la libertad
Da la sensación de que se están perdiendo los valores de los que Estados Unidos se enorgullecía
Me sorprende que una app oficial del gobierno inyecte CSS y JavaScript en sitios web de terceros para quitar banners de cookies o paywalls
Yo no instalaría una app gubernamental cerrada, pero la función en sí me parece positiva, como uBlock
El sitio era tan lento que casi no se podía usar
En mi MacBook Pro 2019 con Chrome, el desplazamiento se trababa muchísimo
Irónicamente, un artículo que critica el desarrollo web muestra este tipo de problemas de rendimiento web
La crítica por la ausencia de pinning de certificados me parece un poco exagerada
Aunque estés en una red donde sea posible un ataque MITM, si mi dispositivo no confía en esa CA, igual solo aparecerá un error TLS
Por ejemplo, uno podría imaginar interceptación de tráfico en una cafetería cerca de una embajada en algún país donde la vigilancia es algo cotidiano
Es raro, pero no es completamente imposible
Este sitio es tan pesado que hace que el navegador casi se congele
Solo pude leerlo en modo lector
Pensé que era problema de mi tablet, pero me parece interesante que a otras personas también les ocurra
Al hacer scroll, la carga sobre la GPU es alta, así que el uso de recursos gráficos también lo es
Últimamente en la Casa Blanca parece que violar la ley se ha vuelto algo cotidiano
Desde el principio asumí que sería malware, y resultó que esa sospecha era correcta