TL;DR
Sáng 15/4/2026, Ủy ban châu Âu công bố ứng dụng EU Age Verification "đã sẵn sàng kỹ thuật" — bảy nước đầu tiên (Pháp, Đan Mạch, Hy Lạp, Ý, Tây Ban Nha, Síp, Ireland) sẽ nhúng vào ví định danh số quốc gia. Cùng ngày, nhà nghiên cứu IntCyberDigest công bố ba lỗi bypass mức "tầm thường": PIN không gắn với danh tính, lockout chỉ là counter trong text file, biometric là cờ bật/tắt trong cùng file đó.
What's new
App được phát triển bởi liên danh T-Scy (Scytáles + T-Systems) theo hợp đồng của Ủy ban châu Âu. Người dùng quét hộ chiếu hoặc CCCD qua NFC, app sinh ra "proof of age attestation" lưu cục bộ trên thiết bị. Nền tảng (Meta, YouTube, X, TikTok, site 18+…) chỉ nhận chuỗi "trên 18 / 16" — không nhận ngày sinh, "hoàn toàn ẩn danh" theo khẳng định của Chủ tịch Ursula von der Leyen.

Ba lỗi bypass IntCyberDigest công bố
- PIN không bind với credential: PIN tạo lúc setup không hề được liên kết mã hoá với dữ liệu định danh đã lưu. Attacker xoá vài entry trong một file local trên máy, restart app, đặt PIN mới — app vẫn vui vẻ trả về credential gốc của user cũ.
- Lockout chỉ là counter trong text file: cơ chế "quá nhiều lần thử sai" được lưu nguyên dạng integer trong một text file. Reset về
0rồi tiếp tục brute-force, không có giới hạn. - Biometric là toggle: kiểm tra face/fingerprint được bật bằng một boolean trong cùng file đó. Đổi
truethànhfalse→ app bỏ qua bước biometric hoàn toàn.
Why it matters
Lỗ hổng không chỉ nằm ở phần lưu trữ cục bộ. Tháng 3/2026, Dibran Mulder (CTO Caesar Groep) đã cảnh báo trên blog Yivi rằng kiến trúc này có một "trust gap" cốt lõi: issuer không có cách nào kiểm tra việc xác thực hộ chiếu thực sự đã xảy ra trên thiết bị người dùng. App tự chạy mọi bước rồi gửi cho server câu "user này trên 18 tuổi". Server tin và ký credential. IntCyberDigest chỉ chứng minh kết luận của Mulder bằng PoC chạy trong vài phút.
Technical facts
Ngoài ba lỗi tampering file local, phân tích của Mulder mô tả thêm ba class tấn công ở tầng cao hơn:
- App modification — decompile bằng
apktool, NOP routine xác thực trongPassportNFC.kt, return ngày sinh hardcode. - Runtime hooking — chạy Frida trên thiết bị root, override return value của hàm verify.
- Protocol-level attack — bỏ qua app, POST trực tiếp ngày sinh giả lên endpoint của issuer.

Thư viện đọc hộ chiếu là JMRTD — một Java library bảo trì kém, vẫn còn CVE chưa patch và mất tương thích với nhiều passport format mới. Threshold liveness 97.2% của face-match cũng vô nghĩa vì kết quả có thể bị hook lại. Mục 3.3.2 và 4.3 của spec mâu thuẫn nhau: 3.3.2 nói provider không nhận data cá nhân, 4.3 nói provider phải verify tuổi trước khi cấp credential — không thể đồng thời.
Comparison
| Đặc điểm | EU av-app | Yivi (NL) | Yoti (commercial) |
|---|---|---|---|
| Verification chạy ở đâu | Hoàn toàn client-side | Cryptographically signed bởi authority | Server-side (vendor) |
| Issuer có verify lại không | Không | Có (chữ ký) | Có |
| Lưu credential ở đâu | Local storage trên máy | Trong app | Trên vendor |
| Phụ thuộc Big Tech | Google Play Integrity (Android) | Không | Vendor backend |
Ai bị ảnh hưởng
Bảy nước pilot (Pháp, Đan Mạch, Hy Lạp, Ý, Tây Ban Nha, Síp, Ireland) sẽ nhúng app này vào ví EUDI quốc gia trước cuối năm 2026. Điều đó có nghĩa mọi lỗ hổng còn nguyên trong build hôm nay sẽ lan vào ví định danh số quốc gia. Người ảnh hưởng trực tiếp: bất kỳ công dân EU nào bị yêu cầu chứng minh tuổi để vào MXH, cờ bạc online, nội dung 18+. Người hưởng lợi từ bypass: trẻ vị thành niên muốn lách chặn, kẻ làm credential giả, attacker thu hoạch credential xác thực từ máy đã bị compromise.
Limitations & pricing
- App miễn phí cài đặt, miễn phí dùng. Member state chịu chi phí tích hợp quốc gia.
- Android bắt buộc Google Play Integrity API — không có đường F-Droid hay sideload. iOS dùng Keychain để lưu PIN (an toàn hơn ở phần storage, nhưng không vá được trust gap kiến trúc).
- Lời hứa "completely anonymous" chỉ đúng trên thiết bị không bị tampered. Các bypass đã công bố làm vỡ tiền đề đó.
- Tại thời điểm IntCyberDigest công bố, EC chưa công bố chương trình bug-bounty hay coordinated disclosure chính thức.
What's next
Mulder đề xuất fix duy nhất khả thi: chuyển logic verify lên server — yêu cầu thiết bị gửi SOD file, DS certificate và DG1 bytes của hộ chiếu để issuer tự kiểm tra chữ ký. Đánh đổi rất lớn: server sẽ thấy đầy đủ MRZ (tên, số hộ chiếu) — tức huỷ luôn lời hứa "ẩn danh" mà EC đang quảng bá. Code ZKP thử nghiệm xuất hiện tháng 4/2026 nhưng chỉ ở demo build, verifier chính thức chưa đọc được những proof này.
Nguồn: IntCyberDigest, Yivi, European Commission, Biometric Update, GitHub av-app.
