4lbert Logo~/4lbert
HomeProfileSkillsPortfolioBlogGalleryContact
$ echo "© 2026 Torsten Albert · 4lbert.com"
ImpressumDatenschutz
Back to blog

When Mobile Banking Security Fails Without a Single Bug

TorstenAugust 19, 20266 min read

I had a brief moment of weakness and stopped paying attention — and that was enough to get scammed. Even though I told the attacker his process looked like a attack, he convinced me it was required for security. Within minutes my account was emptied, and the bank refused reimbursement because I had approved the transactions. I’m still convinced this kind of attack could be prevented.

On this page
  • Fraud cases where the app, TLS, and strong customer authentication (SCA) all “work as designed”
  • The Real Problems
  • What I Would Build as a Developer
  • Bottom Line
  • References

Fraud cases where the app, TLS, and strong customer authentication (SCA) all “work as designed”

The attacker still walks away with money. [web:30][web:34] This post is one of those cases.

A user’s iOS banking and approval apps were uncompromised in the classic sense: no credentials stolen, no TLS broken.[web:10][web:30] Instead, a fraudster used smishing plus a convincing phone call to talk the user into connecting via a “security proxy/VPN”.[web:1][web:10][web:15] From that moment, the attacker could drive the user’s already authenticated session and trigger the creation of an online debit card, which the user then legitimately approved in the approval app, believing it was a update to apple payment.[web:1][web:15][web:17]

The freshly created card was immediately used for in‑store payments in a different city (e.g., Berlin drugstores and supermarkets) while the customer normally lives and transacts around Frankfurt — exactly the sort of anomaly modern fraud engines should treat as high risk.[web:30][web:33] Technically, every authorization looked fine: same customer, same registered device, valid SCA.[web:17][web:24] From the backend’s point of view, nothing “broke”.

For us as software engineers, the lesson is simple: SCA + TLS isn’t enough if we don’t verify intent and context.[web:17][web:24][web:34]


The Real Problems

  1. Session reuse without intent verification
    PSD2 allows reusing authenticated sessions for multiple actions, including adding payment instruments, as long as SCA requirements are met.[web:17][web:18][web:24] In this case, the bank reused the existing session for a high‑risk action (new card) and relied on a generic SCA prompt that the attacker could socially reframe as an “update”.[web:17][web:21][web:27]

On this page

  • Fraud cases where the app, TLS, and strong customer authentication (SCA) all “work as designed”
  • The Real Problems
  • What I Would Build as a Developer
  • Bottom Line
  • References

MFA misuse rather than MFA bypass
The approval was genuine. The user tapped “approve” on the real app, for the real transaction. That’s MFA working — for the attacker.[web:21][web:27][web:33] If your UX doesn’t make the exact action crystal‑clear, social engineering will fill in the narrative.

  • Weak fraud logic around instrument lifecycle and geography
    A brand‑new card, first use on the same day, in a city far from the user’s normal behavior, and clustered transactions in cash‑out‑friendly retailers is an obvious red flag pattern.[web:30][web:33] That should trigger step‑up checks or temporary blocking until the customer confirms out‑of‑band.[web:33][web:71]

  • Insufficient MITM/proxy resistance in the client
    Research shows that many banking apps’ HTTPS implementations are still vulnerable to MITM/proxy interception when certificate pinning and hostname verification are incomplete or misconfigured.[web:31][web:32][web:36][web:38][web:49] A user‑installed “superproxy” app or configuration is exactly the scenario where robust pinning and runtime attestation are supposed to kick in and say “no”.[web:40][web:42][web:47][web:50][web:54]


  • What I Would Build as a Developer

    If you’re responsible for a mobile banking stack, here’s what I’d consider non‑negotiable:

    • Harden the mobile client against MITM and hostile proxies

      • Enforce TLS 1.2/1.3 with platform defaults (ATS, Network Security Config).[web:47][web:49][web:56]
      • Implement certificate/public‑key pinning with backup pins and a kill switch, not ad‑hoc hardcoding.[web:31][web:32][web:49][web:50]
      • Use mutual TLS and runtime attestation (App Attest / Play Integrity) for high‑risk endpoints like card creation and device binding.[web:40][web:42][web:54]
      • Detect and block known MITM tools and suspicious proxy setups at runtime.[web:40][web:42][web:54][web:55]
    • Design SCA flows around explicit user intent, not just “authentication success”

      • SCA prompts must show exactly what is happening: “Create NEW debit card usable at POS terminals” with clear risk wording, not “approve operation”.[web:17][web:21][web:24][web:27]
      • Use distinct UX for maintenance vs financial actions so attackers can’t easily mislabel a high‑risk step as a “update”.
      • For new cards/payment instruments, consider a second, out‑of‑band confirmation that the attacker cannot trigger from the compromised session.[web:17][web:26][web:33]
    • Take instrument lifecycle and geography seriously in your fraud engine

      • Treat first use of a new card as high risk by default, especially if it’s far from the customer’s usual location and clustered in common cash‑out merchants.[web:30][web:33][web:56]
      • Throttle or step‑up authentication for these patterns; don’t rely solely on the original SCA event.[web:33][web:71]
      • Feed confirmed fraud cases like this into your models; PSD2 fraud reporting guidelines exist to support exactly this kind of iterative hardening.[web:33][web:67][web: 71]

    Bottom Line

    In this case, nothing broke cryptographically — the system simply trusted that if the device, app, and SCA all look good, the transaction must be legitimate.[web:17][web:24][web:30] As long as we keep designing for “is the user authenticated?” instead of “is this what the user intends to do, in a plausible context?”, sophisticated social‑engineering plus proxy control will keep winning.[web:34][web:71]

    If you’re building financial apps, assume the attacker controls the client, the network, and part of the user’s attention. Then design your mobile security, SCA UX, and fraud logic so that this assumption no longer leads straight to a successful card and a shopping tour in another city.[web:40][web:42][web:56]


    References

    • Volksbanken Raiffeisenbanken – Phishing warnings and SecureGo smishing examples:
      https://www.vr.de/privatkunden/themenwelten/finanzen/sicherheit/phishing-warnungen.html
      https://www.vr.de/privatkunden/themenwelten/finanzen/sicherheit/phishing-mail.html
      https://www.vrbankmitte.de/onlinefiliale/sicherheit/sms-nachrichten.html [web:1][web:10][web:15]

    • EBA / PSD2 – Strong Customer Authentication, dynamic linking, new tech for SCA:
      Q&A on authentication code and dynamic linking (2018_4141, 2019_4910, 2020_5366, 2020_5621)
      https://www.eba.europa.eu/single-rule-book-qa [web:17][web:18][web:21][web:26][web:68]

    • UK Finance & Visa – PSD2 SCA regulatory guidance:
      https://www.ukfinance.org.uk/
      https://www.visa.co.uk/content/dam/VCOM/regional/ve/unitedkingdom/PDF/sca/visa-psd2-sca-regulatory-guide-v1-december-2020.pdf [web:24][web:27]

    • Deutsche Bundesbank / European Commission – PSD2 overview & consumer protection:
      https://www.bundesbank.de/de/aufgaben/unbarer-zahlungsverkehr/psd2/psd2-775434
      https://ec.europa.eu/commission/presscorner/detail/de/qanda_19_5555 [web:30][web:34]

    • EBA – Guidelines on fraud reporting and security measures under PSD2:
      https://www.eba.europa.eu/activities/single-rulebook/regulatory-activities/payment-services-and-electronic-money/guidelines-fraud-reporting
      https://www.eba.europa.eu/guidelines-security-measures-operational-and-security-risks-under-psd2 [web:67][web:71]

    • HTTPS, certificate pinning, and MITM vulnerabilities in mobile banking apps:
      Techtarget – Improper certificate pinning and MitM: https://www.techtarget.com/cybersecurity/answer/How-can-improper-certificate-pinning-be-stopped-by-the-Spinner-tool
      Academic & practitioner work on certificate pinning in mobile apps: https://www.digitalsecurityforensics.org/digisecforensics/article/download/90/53/463
      Popular banking apps found vulnerable to MitM: Trend Micro / University of Birmingham
      TLS problems in iOS apps (including banking apps): heise.de report
      Cryptomathic – Fixing HTTPS vulnerabilities in mobile banking apps: https://www.cryptomathic.com/blog/secure-connectivity-for-mobile-banking-and-payment-apps-https-vulnerabilities [web:31][web:32][web:36][web:38][web:49]

    • MitM protection best practices for mobile apps (dynamic pinning, attestation, runtime protection):
      digital.ai – “When the attacker is the client: defending against MitM”
      Approov – “Debunking myths and best practices for MitM protection in mobile apps”
      Approov – “3 Immediate Actions to Protect Mobile Apps from Man-in-the-Middle Attacks”
      HKCERT – Mobile app security best practices
      Various mobile security guides for regulated industries and banking apps [web:40][web:42][web:47][web:50][web:54][web:56]

    PreviousIf you really want to make errors you need a computer they said