\

I decompiled the White House's new app

240 points - today at 3:37 PM

Source
  • periodjet

    today at 8:18 PM

    > Is it what you'd expect from an official government app? Probably not either.

    Since when is the government a slick and efficiently run outfit that produces secure and well-done software products? Does no one remember the original Obamacare launch?

    It’s hard to imagine a smug article like this dissecting a product of some other administration. There’s something very weird and off about stuff like this.

      • mmastrac

        today at 8:22 PM

        You omitted these items immediately above that line:

        Injects JavaScript into every website you open through its in-app browser to hide cookie consent dialogs, GDPR banners, login walls, signup walls, upsell prompts, and paywalls.

        Has a full GPS tracking pipeline compiled in that polls every 4.5 minutes in the foreground and 9.5 minutes in the background, syncing lat/lng/accuracy/timestamp to OneSignal's servers.

        Loads JavaScript from a random person's GitHub Pages site (lonelycpp.github.io) for YouTube embeds. If that account is compromised, arbitrary code runs in the app's WebView.

        Loads third-party JavaScript from Elfsight (elfsightcdn.com/platform.js) for social media widgets, with no sandboxing.

        Sends email addresses to Mailchimp, images are served from Uploadcare, and a Truth Social embed is hardcoded with static CDN URLs. None of this is government infrastructure.

        Has no certificate pinning. Standard Android trust management.

        Ships with dev artifacts in production. A localhost URL, a developer IP (10.4.4.109), the Expo dev client, and an exported Compose PreviewActivity.

        Profiles users extensively through OneSignal - tags, SMS numbers, cross-device aliases, outcome tracking, notification interaction logging, in-app message click tracking, and full user state observation.

          • periodjet

            today at 8:23 PM

            … and?

              • mmastrac

                today at 8:27 PM

                > It’s hard to imagine a smug article like this dissecting a product of some other administration

                Did the other administration put a "fake news" and "report to ICE" and grifting link to their own social network in their apps? I feel like you are perhaps papering over a whole lot of general shittiness of this app that didn't exist in less amateur previous administrations that at least tried to follow the norms.

    • iancarroll

      today at 4:48 PM

      A bit skeptical of how this article is written as it seems to be mostly written by AI. Out of curiosity, I downloaded the app and it doesn't request location permissions anywhere, despite the claims in the article.

      I've noticed Claude Code is happy to decompile APKs for you but isn't very good at doing reachability analysis or figuring out complex control flows. It will treat completely dead code as important as a commonly invoked function.

        • Groxx

          today at 6:19 PM

          The permissions snippet they show also doesn't include location, and you can't request location at runtime at all without declaring it there.

          I'd verify all this stuff for myself, but Play won't install it in my phone so I can't really get the APK. Maybe because I use Graphene...? but I don't know all the ways they can restrict it, maybe it's something else (though for a pixel 9a it's rather strange if it's hardware based).

          --- EDIT ---

          To be specific / add what I can check, this is what my Play Store "about -> permissions" is showing:

              Version 47.0.1 may request access to
              Other: 
                run at startup
                Google Play license check
                view network connections
                prevent phone from sleeping
                show notifications
                com.google.android.c2dm.permission.RECEIVE
                control vibration
                have full network access
          
          which appears fairly normal, and does not include location, and I think Play includes runtime location requests there. Maybe there's a version-rollout happening, or device-type targeting?

          • frizlab

            today at 5:10 PM

            > it doesn't request location permissions anywhere, despite the claims in the article

            The article does not claim the app requests the location. It claims it can do it with a single JS call.

              • esprehn

                today at 6:11 PM

                It can request with a JS call. It can't passively collect it without you approving first. The article is written like calling that JS function will turn on location tracking without consent.

                  • mattdeboard

                    today at 6:27 PM

                    He explicitly says he can't determine it, but that the location tracking as configured will turn on once the user grants consent. All true statements.

                    How would you have written it differently

                      • logifail

                        today at 6:53 PM

                        "If the user chooses to opt-in and grants location-tracking permission, the app is then, and only then, able to track the user's location?"

                • dmitrygr

                  today at 5:44 PM

                  > The article does not claim the app requests the location. It claims it can do it with a single JS call.

                  so can ... any other code anywhere on a mobile device? That is how API work...

            • dijksterhuis

              today at 5:06 PM

              what version are you on?

              from the iphone app store: version 47.0.1 - minor bug fixes - 34 minutes ago

              while the parent posted 18 minutes ago

              they may have patched the location stuff as part of the “minor bug fixes”?

                • filoleg

                  today at 6:05 PM

                  I have the iOS version from yesterday, haven't updated the app yet.

                  No location permission request prompting encountered. In system settings, where each app requesting location data is listed, it isn't present either.

                  • today at 5:19 PM

            • SoftTalker

              today at 4:21 PM

              Looks like what you might expect in a standard marketing app from a consultancy. They probably hired someone to develop it, that shop used their standard app architecure which includes location tracking code and the other stuff.

                • charcircuit

                  today at 8:03 PM

                  And r8 which does tree shaking to remove dead code is not smart enough to understand react native so it won't strip it out without extra work from the developer.

                  Cross referencing these different things in the article to other apps that exist was my first thought as these seem pretty generic and probably reused from somewhere else.

              • somehnguy

                today at 4:13 PM

                Interesting. The site is nearly unusable to me unfortunately. '19 MBP w/ Chrome - scrolling stutters really bad

                  • tredre3

                    today at 6:08 PM

                    Scrolling is extremely poorly behaved on that page for me too, Firefox 149 Windows 10. Which is quite ironic coming from an article that mainly criticizes the web dev aspects of the app!

                      • Aerolfos

                        today at 8:25 PM

                        Scrolling on my firefox is smooth... with javascript blocked.

                    • imalerba

                      today at 5:01 PM

                      Scrolling is so laggy it's annoying to follow on mobile (FF 151.0a1)

                      • KomoD

                        today at 5:44 PM

                        Does it for me too, chrome on a thinkpad

                        • catlikesshrimp

                          today at 4:40 PM

                          Not what you meant, but works fine on

                          Firefox 148.0.2 (Build #2016148295), 15542f265e9eb232f80e52c0966300225d0b1cb7 GV: 148.0.2-20260309125808 AS: 148.0.1 OS: Android 14

                          • amarcheschi

                            today at 6:25 PM

                            I agree, the website of the original article is kinda terrible

                        • r4indeer

                          today at 4:23 PM

                          The argument regarding no certificate pinning seems to miss that just because I might be on a network that MITM's TLS traffic doesn't mean my device trusts the random CA used by the proxy. I'd just get a TLS error, right?

                            • subscribed

                              today at 7:04 PM

                              Not if someone can issue the certificate signed by the CA your phone trust.

                              Imagine being in a cafe nearby, say, embassy of the certain north African country known for pervasive and wide espionage actions, which decides to hijack traffic in this cafe.

                              Or imagine living in the country where almost all of the cabinet is literally (officially) being paid by the propaganda/lobbying body of such country.

                              Or living int he country where lawful surveillance can happen without the jury signoff, but at a while of any police officer.

                              Maybe its not common but frequent enough.

                                • layer8

                                  today at 7:23 PM

                                  > Imagine being in a cafe nearby, say, embassy of the certain north African country known for pervasive and wide espionage actions, which decides to hijack traffic in this cafe.

                                  How would they get your phone to trust their CA? Connecting to a Wi-Fi network doesn’t change which CAs a device trusts.

                                    • Galanwe

                                      today at 7:56 PM

                                      Because there is a quadrillion trusted CAs in every device you might use. A good chunk of these CAs have been compromised at one point or another, and rogue certificates are sold in the dark market. Also any goverment can coerce a domiciled CA to issue certs for their needs.

                                • kevin_thibedeau

                                  today at 7:52 PM

                                  Israel is not in Africa.

                              • thegagne

                                today at 4:24 PM

                                Not if you are part of an org that uses MDM and pushes their own CA to devices.

                                  • r4indeer

                                    today at 4:29 PM

                                    Ok, fair point. However, I would consider any MDM-enabled device fully "compromised" in the sense that the org can see and modify everything I do on it.

                                      • p2detar

                                        today at 4:53 PM

                                        An MDM orga cannot install a trusted CA on non-supervised (company owned) devices. By default on BYOD these are untrusted and require manual trust. It also cannot see everything on your device - certainly not your email, notes or files, or app data.

                                          • layer8

                                            today at 7:25 PM

                                            If it is untrusted, you also won’t have a TLS connection be established based on that CA.

                                            • somebudyelse

                                              today at 5:37 PM

                                              [dead]

                              • sitzkrieg

                                today at 4:22 PM

                                i assumed it was malware out the gate. yep

                                • nine_k

                                  today at 5:53 PM

                                  > An official United States government app is injecting CSS and JavaScript into third-party websites to strip away their cookie consent dialogs, GDPR banners, login gates, and paywalls.

                                  So at least it does something actually beneficial for the user! I wish it could go even further, the way Reader Mode in a browser would go.

                                  • ranzhh

                                    today at 6:29 PM

                                    Are those references to 45 and 47 "Easter Eggs" to Trump's presidency number(s)? As in, forty-five-press (45th president) and Version 47.x.x (47th president), as well as the text message hotline (45470).

                                    • vineyardmike

                                      today at 4:15 PM

                                      > The official White House Android app has a cookie/paywall bypass injector, tracks your GPS every 4.5 minutes (9.5m when in background), and loads JavaScript from some guy's GitHub Pages (“lonelycpp” is acct, loads iframe viewer page).

                                      Doesn’t seem too crazy for a generic react native app but of course coming from the official US government, it’s pretty wide open to supply chain attacks. Oh and no one should be continually giving the government their location. Pretty crazy that the official government is injecting JavaScript into web views to override the cookie banners and consent forms - it is often part of providing legal consent to the website TOS. But legal consent is not their strong suit I guess.

                                        • trimethylpurine

                                          today at 4:26 PM

                                          Aren't the banners for EU page visitors. I don't think there is a US law about this, is there?

                                            • bsimpson

                                              today at 6:36 PM

                                              Some states have them. California has a similar one "Don't Sell My Personal Information."

                                                • trimethylpurine

                                                  today at 7:17 PM

                                                  I think the Supremacy Clause protects federal agencies but not sure. Also Privileges and Immunities, and Commerce clauses...

                                              • xocnad

                                                today at 5:22 PM

                                                And when the app links off to an EU site? Nothing prevents an EU user from using this app. There are a variety of Trump enthusiasts, though I suspect less than there are here in the US.

                                                  • az09mugen

                                                    today at 5:41 PM

                                                    Please don't give them ideas.

                                                    • trimethylpurine

                                                      today at 7:14 PM

                                                      I think they just fine the entity doing business in the EU. If they don't do business there, I can't see any issues.

                                                      I'm not an attorney, but I don't find any cases that extend beyond that.

                                                        • wincy

                                                          today at 7:44 PM

                                                          Quite honestly, it’d be hilarious to see the clown car response from the White House if some EU bureaucrats tried to enforce their GDPR rules on the White House though. “Lol Make us” is the nicest response I can guess at.

                                                      • subscribed

                                                        today at 6:48 PM

                                                        They conduct a pervasive, hidden, persistent user tracking not only without consent, looking at the analysis, but also stripping the user from a chance of declining tracking on other sites.

                                                        I'm quite sure that's illegal.

                                                          • trimethylpurine

                                                            today at 7:30 PM

                                                            Which federal law would be relevant here? I'm only aware of California and EU laws that might be. But, I'm fairly certain they don't apply to the US government because of several Constitutional and international laws superseding.

                                                            I'm not sure. If there is an attorney to answer that would be interesting.

                                            • Arainach

                                              today at 4:09 PM

                                              "An official United States government app is injecting CSS and JavaScript into third-party websites to strip away their cookie consent dialogs, GDPR banners, login gates, and paywalls."

                                              In their defense, this is the first thing the Trump admin has done that's unambiguously positive for ordinary people.

                                                • ronsor

                                                  today at 4:12 PM

                                                  Yes, this is a major UX improvement considering I remove those with uBlock Origin anyway.

                                                  • subscribed

                                                    today at 6:27 PM

                                                    Indeed.

                                                    I'd love it somehow taken out of it and made available for the general public. Custom uBlock / Adblock filers will be probably the easiest.

                                                    • shimman

                                                      today at 7:15 PM

                                                      I too love it when US imperialism invades digital spaces, just ignore how the US treats people critical of its own government (not just referring to the Trump admin here) then yeah sure great.

                                                      Let me know when this can ignore malware/adware from US companies then I'll give accolades.

                                                  • analog31

                                                    today at 6:42 PM

                                                    >>> This is a government app loading code from a random person's GitHub Pages.

                                                    A random person with pronouns, no less. That means the code is “woke.”

                                                      • wincy

                                                        today at 7:50 PM

                                                        Every default setup on every website and app for the last five or so years has been encouraging users to add pronouns, making it difficult to avoid it, even my iPhone asks me to add each person’s pronouns when I add a new contact. I don’t know why Siri needs to know that, but it’s there. There’s one website I use that won’t let you sign up as a contributor without “completing your profile”, which includes mandatory pronouns.

                                                        I guess there’s some workplaces where it’d be useful for me to update these, probably the ones Apple PMs work in.

                                                    • oefrha

                                                      today at 4:10 PM

                                                      > An official United States government app is injecting CSS and JavaScript into third-party websites to strip away their cookie consent dialogs, GDPR banners, login gates, and paywalls.

                                                      Giving people a taste of web with Ublock Origin annoyance filters applied, refreshing. Can’t believe orange man regime is doing one thing right.

                                                      • replwoacause

                                                        today at 4:27 PM

                                                        lol honestly all of this tracks given the current administration. i'm actually surprised it isn't worse. but yeah, amateur hour for sure.

                                                          • jfengel

                                                            today at 4:37 PM

                                                            "Amateur hour" is basically their theme. They were swept in on a wave of distrust for people who know what they're talking about. They were elected to tear down Chesterton's fence, even (and especially) the parts holding in the face-eating leopards.

                                                            To mix the metaphors further, they (the politicians and their supporters) fancy themselves the kind to dream of things that never were and ask why not. Why not have a war in Iran? You won't know until you give it a try.

                                                        • post-it

                                                          today at 4:55 PM

                                                          > An official United States government app is injecting CSS and JavaScript into third-party websites to strip away their cookie consent dialogs, GDPR banners, login gates, and paywalls.

                                                          Rare Trump administration W. I'm assuming there's one particular website they open in the app that shows a cookie popup, and this was a dev's heavy-handed way of making that go away.

                                                          • pugchat

                                                            today at 8:16 PM

                                                            [dead]

                                                            • iam_circuit

                                                              today at 7:28 PM

                                                              [dead]

                                                              • somebudyelse

                                                                today at 5:42 PM

                                                                [dead]

                                                                • trimethylpurine

                                                                  today at 4:22 PM

                                                                  I don't see what the fuss is about. This all looks pretty standard. I use random people's stuff all the time. Isn't that the point of open source?

                                                                  Did you find something malicious in the random GitHub repo? If so, you should write an article about that instead.

                                                                    • kevinsync

                                                                      today at 5:32 PM

                                                                      Using somebody's stuff is different than hot-linking directly to a hosted version of it, even just from the perspective that dude could delete it at any time and break the whole app.

                                                                        • trimethylpurine

                                                                          today at 8:20 PM

                                                                          That's fair. I download and embed, personally. Still, it's not a rant worthy mistake, honestly. Suggest a better approach, sure.

                                                                      • xocnad

                                                                        today at 5:27 PM

                                                                        All good for you to make those choices for yourself. Your response seems to be show ignorance of all the recent supply chain attacks that have occurred. You can imagine that given the situation with the shoe gifts that many high up members of the administration and cabinet members are running this app.

                                                                          • trimethylpurine

                                                                            today at 8:25 PM

                                                                            [delayed]

                                                                        • rendx

                                                                          today at 5:30 PM

                                                                          I don't know if you're being serious or not, but in case you are: There is a difference between (re)using other people's open sourced code, hopefully reviewed, and giving anyone in control of the third party repository the ability to run arbitrary code on your user's devices. Even if the "random GitHub repo" doesn't contain any malicious code right now, it may well contain some tomorrow.

                                                                            • torstenvl

                                                                              today at 7:30 PM

                                                                              Completely agree. This is really unique. Can you imagine if it were standard practice to be open to supply chain attacks like that, by blindly relying on hotlinked or unpinned dependencies?

                                                                          • input_sh

                                                                            today at 5:37 PM

                                                                            It's always a better idea to make a local copy of it.

                                                                            Imagine they're downloading a project directly from your GitHub account. Even if you're not doing anything malicious and have no intention of doing anything malicious even after you've been aware of this, now all of a sudden your GitHub account / email is a huge target for anyone that wants to do something malicious.

                                                                            • rpdillon

                                                                              today at 5:39 PM

                                                                              The dependencies weren't vendored, meaning their behavior can change at any time if a malicious actor gains control of that third-party repo.

                                                                              This is bad for security.

                                                                          • crimshawz

                                                                            today at 7:33 PM

                                                                            you are a fucking genius

                                                                            • ThaFresh

                                                                              today at 4:44 PM

                                                                              nice work, so they can get your location and have ICE scoop you up if required

                                                                              • andix

                                                                                today at 5:35 PM

                                                                                I would've expected worse. :)

                                                                                • jruz

                                                                                  today at 6:24 PM

                                                                                  Is this a surprise to anyone?

                                                                                  • colesantiago

                                                                                    today at 4:07 PM

                                                                                    This is a pretty standard decomplation of an Android app.

                                                                                    I am sure if you decompile other apps used by hundreds of thousands of people, you would find all sorts of tracking in there.

                                                                                    Thanks for helping the White House improve their app security for free though.

                                                                                      • yellow_lead

                                                                                        today at 4:10 PM

                                                                                        Even in the apps I've worked on, you won't find us loading arbitrary JS from a random GitHub user's account.

                                                                                          • colesantiago

                                                                                            today at 4:11 PM

                                                                                            > Even in the apps I've worked on, you won't find us loading arbitrary JS from a random GitHub user's account.

                                                                                            You'd be surprised how many apps inside have hacks and workarounds because deadlines.

                                                                                              • crtasm

                                                                                                today at 4:17 PM

                                                                                                Let's see if anyone can give an example of such a high profile app doing something similar.

                                                                                                  • flutas

                                                                                                    today at 4:43 PM

                                                                                                    I've worked on a three letter sports orgs (one of NFL, NBA, NHL, etc) Android app.

                                                                                                    I always joke that we could probably tell you what color and type your underwear is on any random day with how much data is siphoned off your phone.

                                                                                                    As for loading random JS, yeah also seen that done that before. "Partner A wants to integrate their SDK in our webviews." -> "Partner A" SDK is just loading a JS chunk in that can do whatever they want in webviews, including load more files.

                                                                                                    Don't get me started on the sports betting SDKs...

                                                                                                    Though we do have a Security team constantly scanning SDKs and the endpoints for changes in situations like this.

                                                                                                      • jasonlotito

                                                                                                        today at 5:02 PM

                                                                                                        > As for loading random JS, yeah also seen that done that before.

                                                                                                        Partner A is not random JS. The assumption there is 1) you have some official signed agreement with them and 2) you've done your due diligence to ensure you can use them in this way.

                                                                                                        It's not just some person's GH repo who can freely change that file to whatever they want.

                                                                                                        Hotlinking is as old as the internet, and a well-worn security threat.

                                                                                    • longislandguido

                                                                                      today at 4:57 PM

                                                                                      The comments in here are pretty rich. If this was any other app, everyone would be screaming about "why are you being mean to the author", flagging posts left and right.

                                                                                        • hvb2

                                                                                          today at 8:22 PM

                                                                                          This was probably payed for, with tax payer money, coming from an official government entity.

                                                                                          If any of those 3 is true, the bar should be higher than what someone just did in their free time? I would surely expect more.

                                                                                          • rpdillon

                                                                                            today at 5:40 PM

                                                                                            Nah, I suspect any app that's loading arbitrary JS from somebody's random GitHub page would get called out for that behavior. We're getting supply chain attacks daily.

                                                                                            • tclancy

                                                                                              today at 6:26 PM

                                                                                              That is some impressive willful ignorance. “If it was anybody else threatening to beat this guy up for what he was saying, you’d probably praise them. But a cop does it one time and …”

                                                                                              • mattdeboard

                                                                                                today at 6:32 PM

                                                                                                Are you upset people are being critical of a shabbily run government program?

                                                                                                  • longislandguido

                                                                                                    today at 6:45 PM

                                                                                                    > government program

                                                                                                    Is there a cabinet member for the Department of Apps?

                                                                                                    It's a throwaway app, probably written by someone that posts here.

                                                                                                      • goosejuice

                                                                                                        today at 7:50 PM

                                                                                                        https://45press.com/ would be my guess.

                                                                                                        • paulhebert

                                                                                                          today at 7:39 PM

                                                                                                          Is this not a government program? Did someone in the cabinet choose to do this?

                                                                                                          I’d prefer they not release shoddily build propaganda apps