- by x32x01 ||
Magic Login Links: $500 Bug Bounty Explained Simply
Magic login links are everywhere today A security researcher earned $500 after discovering a flaw that allowed full account takeover without phishing or user mistakes. Let’s break it down in a simple, human way
TL;DR - What’s the Issue?
A mobile app failed to secure its magic login deep links.Because of weak verification, another app on the same Android device could intercept the login token and hijack the account.
Just bad deep link handling
What Exactly Went Wrong?
Here’s what the app did:- Used magic login links instead of passwords
- Sent login links through email
- Opened links using deep linking (Branch.io)
- Embedded a login token inside the URL
So what happened?
- Any malicious Android app listening for the same URL pattern could catch it
- That app could steal the login token
- The attacker could log in as the victim instantly
Simple Real-Life Example
Imagine this - Alice types her email in the app
- She gets a magic login link by email
- The link should open only in the real app
- But another app on her phone also listens for that link
- That app grabs the login token silently
- The attacker logs in as Alice
Why This Is Dangerous
Magic links are safe only if done right
Attackers get instant access
Personal data is exposed
Messages and sessions are hijacked
Anything the user can do, the attacker can do
🛠 Technical Insight (Easy Version)
- Magic Link / Deep Link
A URL that opens directly inside the mobile app - Branch.io
A popular deep linking service (not insecure by default) - The real issue
Missing or weak Android App Link verification
Example: Secure Android App Links
Here’s a simple example of how developers should lock this down XML:
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="example.com"
android:pathPrefix="/login" />
</intent-filter>
Lessons for Hunters & Developers
Bug Bounty Hunters
Always check:- How login tokens are passed
- Whether deep links are verified
- If another app can intercept them
Developers
Always enforce:- Android App Link verification
- Token binding to app/device
- Server-side token validation
Final Thoughts
This was a real, repeatable, high-impact vulnerability - not clickbait.A small mistake in deep link handling turned a helpful feature into a full account takeover bug, earning the researcher a $500 bounty