← 返回 Siami 首頁

歐盟年齡驗證 App 上線不到一天就被駭 資安研究員:兩分鐘可繞過所有保護

▲ 107 💬 60
歐盟年齡驗證 App 上線不到一天就被駭 資安研究員:兩分鐘可繞過所有保護

編按:本文綜合整理自 Proton、WIRED、Cybernews、ID Tech Wire 與歐盟執委會官方資料,並加入 Siami 編輯部觀點與分析。

兩分鐘破解:歐盟 App 程式碼公開當天就被打穿

歐盟執委會在 2026 年 4 月 15 日公開展示一款 Android 與 iOS 年齡驗證 App,主打「零知識證明」(zero-knowledge proof):用戶可以用護照、身份證或銀行授權完成年齡驗證,平台只會收到「已滿 18 歲」或「未滿 18 歲」的單一布林值,看不到姓名、生日或證件號碼。執委會主席 von der Leyen 在記者會上稱這是「為家長而設計、給孩子安全網路空間」的關鍵基礎建設,並強調 App 採用開源、原始碼公開透明,「沒有藉口再不做」。

問題是原始碼一公開,安全研究員當天就動手拆。

資安顧問 Paul Moore 在 X 上發布影片,展示只要拿到實體手機、打開 App 的設定檔(純文字、可編輯),刪除幾個值並重啟 App,就能設定新的 PIN、繼續沿用舊的認證資料。整個過程不到兩分鐘。Moore 隨後證實了三項更致命的設計缺陷:

  • 防止暴力破解的「失敗次數計數器」也存放在同一個可編輯檔,歸零就等於消除所有嘗試紀錄
  • 生物辨識(指紋、Face ID)只是設定檔裡的一個布林值,把 true 改成 false 就能完全跳過
  • 用於證明用戶身份的私密金鑰,沒有放進現代手機內建的 Secure Enclave(硬體級防護區),而是放在一般可讀的儲存空間

歐盟執委會第一時間的反應是把它定位為「展示版本」(demo version),Moore 與法國密碼學家 Olivier Blazy 隨即反駁:我們驗的就是最新版原始碼,不是早期 demo。


「隱私保護」設計反而暴露了最根本的攻擊面

歐盟這套架構的精神是「不讓平台看到任何個資」,所以敏感資料、驗證狀態、PIN、生物辨識旗標都必須存在用戶手機上。這正是問題所在。Cybernews 引述多位研究員指出,「所有安全控制都用明文存在本機」等於把整套防線交給用戶的檔案系統保護——而 Android 與 iOS 雖然有沙盒機制,卻沒有任何機制防止 App「修改自己的設定檔」。

WIRED 的安全週報則點出一個更深層的問題:年齡驗證本身需要把「真實身分」與「網路行為」綁定,這條連結即便只存在幾秒鐘,也必須在某個地方落地。無論是 Secure Enclave、雲端、還是執法單位可調閱的後台——只要存在,就是攻擊目標。如果這條連結被設計成可重複使用(同一個 EUDI Wallet 可驗證不同平台),那目標只會更大。

歐盟執委會聲稱這套 App「符合最高隱私標準」,但其內部設計卻讓所有安全控制都可由使用者手動修改。這不是零知識證明失敗,是零信任架構失敗。

更尷尬的是,2026 年 3 月已經有 400 多位資安與隱私研究員聯名致函執委會,呼籲在「年齡驗證技術尚未穩定」之前暫緩部署。執委會選擇照原定時間表公開,於是公開當天就出事。


為什麼這件事重要:歐盟把「數位身分」押在 Google 與 Apple 身上

這不只是資安事件,更是歐洲數位主權的一場挫敗。

EUDI(European Digital Identity Wallet)是 eIDAS 2.0 的核心產物,預計 2026 年底前所有會員國都必須提供給公民。原本目的是讓歐洲人擺脫「要登入歐洲網站得用美國平台帳號」的窘境,結果年齡驗證 App 的第一個版本,就只能在 Google 認證過的 Android 與 Apple 認證過的 iOS 上跑。

Hacker News 上一則被推 412 次的回應講得最直接:「所以現在我們知道誰在推動年齡驗證了——FAANG。」當一款以「隱私與自主」為賣點的歐洲 App,卻把裝置認證外包給兩家美國公司,這套數位身分基礎設施的主控權,就實質落在 Mountain View 與 Cupertino 兩地。

對使用 GrapheneOS、CalyxOS、LineageOS、e/OS 等去 Google 化 Android 的用戶來說,這款 App 等於直接關上大門。對任何想用 F-Droid 安裝第三方 APK 的用戶也是如此。歐洲議會原本在 2024 年通過《數位市場法》要打破 App Store 與 Play Store 的雙佔,現在自家推出的年齡驗證 App 反向強化了這兩家的守門人地位。


數據解讀:為什麼「展示版」這個託辭撐不住

執委會把被破解的版本定位為「展示版」,這個說法在技術與政治兩個層面都站不住。

技術層面:Moore 與 Blazy 明確表示他們驗的是原始碼儲存庫裡的「latest release」標籤。執委會如果要在公開展示前先用「內部版本」測試,應該在釋出時就直接關閉 git 歷史,而不是事後把漏洞歸因於「demo」。

政治層面:歐盟已經確定 7 個會員國(西班牙、法國、希臘、丹麥、義大利、波蘭、葡萄牙)為 2026 年的試辦國,預計年底前完成 EUDI Wallet 的全面部署。如果連「技術已就緒」這句話都能在上線 24 小時內被研究員推翻,那所謂的「端到端測試」做了什麼?

更關鍵的是,這不是單一漏洞,是設計哲學的問題。歐盟想同時達成兩個互相衝突的目標:對平台隱私、對政府可審計。Moore 的攻擊顯示這兩個目標在當前架構下只能擇一——而執委會選了隱私,卻連隱私都沒做對。

年齡驗證 App 的問題不是「再多測幾輪就好」,是「整個威脅模型從一開始就畫錯」。400 位研究員 3 月的聯署信已經預見了這件事,執委會選擇忽略。


接下來會發生什麼

短期內執委會必須決定是否暫緩 7 個試辦國的時程表,這會直接衝擊已經投入資源的 Scytáles(希臘身分驗證商)與 T-Systems(德國電信子公司)兩家技術承包商。中期則要看 EUDI Wallet 主架構(eIDAS 2.0 的 ARF 2.4.0 版本)是否也繼承同樣的設計缺陷——目前釋出的 ARF 文件並未強制要求 Secure Enclave,這意味著各會員國自行實作時,很可能會出現 27 種不同品質的版本。

對台灣與亞洲讀者而言,這件事的延伸意義在於:當一個有 4.5 億人口、預算充裕、有頂尖密碼學家與資安社群的司法管轄區,都無法在時間壓力下做出兼顧隱私、安全與平台中立的年齡驗證系統,那其他國家(包括正在研擬《數位中介服務法》或類似兒少保護法的亞洲國家)就更不該把這套模板當成可複製的解方。


參考來源

網友熱門留言 (5)

#1 HN 用戶 jonathanstrange ▲ 412
所以現在我們知道誰在推動年齡驗證了。FAANG。當一款以隱私為賣點的「驗證 App」只能跑在 Google 或 Apple 認證過的裝置上,這個 App 本身就在把數位身分基礎設施交給兩家美國公司。這比它試圖解決的問題更糟。
#2 HN 用戶 (item 47803773) ▲ 287
EU 不希望 App 跑在 rooted 裝置上,但 App 也不支援 Android 8 那種可被 hack 的軟體 attestation。這等於直接把 GrapheneOS、CalyxOS、LineageOS 這類去 Google 化的 Android 用戶排除在外。
#3 Reddit r/cybersecurity ▲ 565
儲存安全控制的檔案居然是「明文可編輯的純文字檔案」,這根本不是密碼學問題,是基本工程問題。設計這套系統的人從來沒想過攻擊者模型。
#4 Reddit r/europe ▲ 581
技術上是合格的,但溝通完全失敗。歐盟把這個 App 定位成「家長可以放心、小孩不會被騷擾」的解方,卻埋了所有正向功能;用恐懼行銷當賣點,再把一個框架包成產品推出來。
#5 Paul Moore(資安顧問) 0
在不到 2 分鐘內破解 #EU #AgeVerification App。設定階段就只要編輯裝置上一個純文字檔就能繞過 PIN。如果這是「技術已就緒」,那 EU 對「就緒」的定義需要重新檢討。