Ally (bank)mobile app fails without connection to graph.facebook.com
Not sure if this is a good place for this post or not, but here goes.
I reject outbound connections to meta domains at the firewall. I noticed this banking app refuses to prompt for login credentials unless I am on mobile or a public WiFi network. I watched my FW logs and noticed many rejected connections to graph[.]facebook[.]com.
I contacted their support team, but they denied the connection was their app. I shared the screenshot on this post and they closed my case without comment.
I emailed the address on the Google play store and they also denied the connection was their app. I shared the screenshot and they asked if I downloaded the app from the play store, implying the official app doesn't do this, but of course it does.They closed my case without proper resolution as well.
Just thought I'd share this here so people know that some banks make direct connections to Facebook to share analytics, without your knowledge or informed consent, and they lie about it when called on it.
It’s probably NTP a lot of banking apps have extra protections and if it can’t determine the time from its own trusted authority it may not allow the connection.
Launchdarkly is likely a culprit as well. Just doing a background search reveals that the service allows dev teams to do A/B testing, enable new features without releasing a new version, and various other "dynamic" functions.
It doesn't, the implication is that it's not the connection to FB what's making the app not work, but the lack of NTP sync.
Plenty of apps reach out to FB for widgets, or those stupid "share your experience with your friends" buttons that no one uses ... that's why we block them in the first place.
The implication is that OP’s assessment is incorrect and the blocked requests to launchdarkly are what’s preventing them from logging in. The Facebook requests don’t show a source so they could be from another device.
When I unblock the Facebook address, the app opens as expected.
I'm not blocking any NTP. My home servers rely on it (just TrueNAS checks time every 3 minutes...), but I do block DNS outbound to force using my own DNS.
Yes, but did you clear the DNS cache on your device after doing this? Once the DNS lookup is done it doesn’t matter what you’ve done on your pihole. The IP is cached and pihole will not even see the query.
It was blocked in the browser, which implies there's not a cached record for it on the device
The Pi-hole logs the queries it receives and I do have four separate entries for that URL today, spaced in an amount of time that does not imply automatic requests but does likely match up with my test cases.
Something else is going on with your setup, I block graph.facebook.com via DNS too and Ally works fine, both app and browser.
Your screenshot looks like you're also blocking ntp.org which could definitely screw with a banking app, and launchdarkly.com may also be the problem if they're loading assets from that service.
LaunchDarkly essentially just serves up true/false values for services to grab. It can be useful to update code functionality without having to rebuild / recompile. However, any service that uses the launch darkly API should have a default state for their values to fall back on, so it shouldn't cause any major issues if LaunchDarkly can't be reached.
I know a software developer that worked for Ally when they were adding this. They all said it was a terrible idea, but were ignored. The reason they claim it’s needed is to track app installs that originate from an ad on Facebook. Since the App Store sits in between the ad click and App launch, there isn’t an easy way to track it without that. But, it shouldn’t be blocking you from logging in.
Might not even be selling it, could just be an arrangement to use some sort of "sign in with facebook" service or even advertise on facebook marketplace/adverts
I remember we had to build an obj-c wrapper for FB's calls like these because of these crashes, that basically ignored the stall and continued the user's session regardless
Since the App Store sits in between the ad click and App launch, there isn’t an easy way to track it without that.
How does that work exactly? Does the App Store pass along some information to newly installed apps or something? My company's app, which I worked on for some time, also uses an external service to track installs (not Facebook or any social media), but I didn't work on the implementation of it and never really got to grips on how it works.
App store doesn't, the app itself does, that's why this thing is included in it.
You click an ad on FB = you're ID'd by a cookie or login or account on the device or fingerprint or whatever (probably all of the above)
You install the app from app store. Neither the bank or FB knows this.
You launch the app. The integrated FB library reads the cookie or FB account on the device or whatever it can, and pings FB. FB compares this ID to the entries and finds that it was you who clicked the ad.
FB bills bank for an ad click
Another option is there to be a specific FB variant of the app with its own app store entry, but they probably wouldn't do that for something this trivial.
Your screenshot does not really show anything other than the fact that Ally attempts a connection to Facebook (it's not even clear how it was blocked). You can see the amount of people telling you to unblock NTP, which you stated isn't blocked - that's a clear sign that you haven't presented you data in an easy to review format.
Why not show what exactly is blocked by the firewall, how the rules are configured, and disabling which rule exactly gets the app to work? E.g., if you block Facebook by redirecting to your own HTTP server that responds, the app may decide to bork because of a failed certificate validation - resolve the Facebook domain as NXDOMAIN in your DNS, and see if that helps.
The fact that they use Facebook APIs is infuriating, regardless.
Maybe the app uses a WebView for login which itself includes a webpage with the tracker. It would be possible that the page's content and trackers change without any change in the app.
It might be that they made the app fail if any of their outbound connections fail. This is very reasonable, as ideally the only calls the app should be making are the ones it needs to make to facilitate this functionality. So if connections fail, the functionality of the app can massively bork, potentially resulting in poorer customer service than if they simply showed a failure screen.
What's less reasonable is why graph.facebook.com is one of them. Why on earth would they be sending the most sensitive data of their clients to the least trustworthy of corporations?
I don't think it's that connection causing problems, mainly because my app works fine (mostly) and I don't have a connection to any meta services. There are none on my phone, and I do not have a Facebook login at all. I will say that of all the apps I use, Ally is the most finicky. It seems to crash itself every 2-3 uses for no apparent reason at all.
That said, it seems unlikely that the app would fail for you in this case just because you blocked access to a service that I know it does not actually require to operate (because it has to be operating without it on my phone), and another poster tested and could not recreate. Not sure if that helps, but may point you towards diagnosing what is really causing the issue!
FYI this is why you DON'T use the banking app. Use a browser and I guarantee you won't have this issue. Phone apps are mostly all adware bullshit at this point. Use as few apps as you possibly can. Your life will be better because of it.