The Lookalike Domain — Python Bug Hunt
Inspired by IDN homograph attacks: register pаypal.com — with a Cyrillic а — and to human eyes it's indistinguishable from the real thing.
- Language: Python
- Layer: Backend
- Difficulty: Hard
- Concepts: Security, Unicode
- Modelled on: IDN homographs
- Visible tests: the cyrillic clone is flagged; the real domain is not a spoof of itself; genuinely different domains are fine
- Reward: 50 XP for a complete fix
Briefing
Inspired by IDN homograph attacks: register pаypal.com — with a Cyrillic а — and to human eyes it's indistinguishable from the real thing. Detection maps confusable characters to a "skeleton" and compares those.
The confusables table is locked. spoofcheck.py isn't using it.
Bug report
BUG-HOMOGLYPH · Priority: High (phishing) · Reported by: trust & safety
is_spoof(candidate, trusted):
- True iff skeleton(candidate) == skeleton(trusted) AND candidate != trusted
- the trusted domain itself is NOT a spoof of itself
Observed: the Cyrillic clone passes clean, and — worse — the check currently flags the REAL domain as a spoof of itself.
Logs
[registrar] "pаypal.com" (U+0430) cleared for registration
[alerts] "paypal.com" flagged as spoofing "paypal.com" (?!)The code as shipped
src/sec/spoofcheck.py (editable)
confusables = bug_require("./confusables")
def is_spoof(candidate, trusted):
return candidate.lower() == trusted.lower()
Read-only context: src/sec/confusables.py.
Open the hunt to edit the files, run the visible tests and submit against the hidden ones. More Python bug hunts.