·閱讀 6 分鐘

QR Code 重新導向劫持:看不見的中間人

當你的 QR Code 運作正常時,中間人是看不見的。等到壞掉,為時已晚。理解重新導向模型,是避開它的第一步。


你掃過的每一個動態 QR Code,都涉及一個你從未選擇的第三方。在手機相機和目的網站之間,QR 服務商擁有的一台重新導向伺服器悄悄轉送了請求。大多數使用者完全不會察覺。這就是重點所在。

本文解釋重新導向劫持在實務上看起來的樣子、中間人實際做什麼,以及這件事帶來什麼風險。

重新導向序列

當你掃描一個指向 https://shop.example.com 的靜態 QR 時:

  1. 相機讀取 QR Code
  2. 作業系統辨識出它是一個網址
  3. 瀏覽器開啟 https://shop.example.com

三步。沒有第三方。

當你掃描一個指向同樣目的地的動態 QR 時:

  1. 相機讀取 QR Code,裡面編碼的是類似 https://qr-provider.com/r/x7n2 的內容
  2. 作業系統開啟這個網址
  3. qr-provider.com 收到請求、記 log、在自己的資料庫裡查 x7n2
  4. qr-provider.com 發出 301 或 302 重新導向到 https://shop.example.com
  5. 瀏覽器跟著重新導向,抵達真實目的地

五步。第 3 步多了一個額外的角色 — 你從未同意、從未付費、也看不見的一方。

中間人得到什麼

每一次掃描都會產生一筆伺服器 log 紀錄,內容包含:

  • 掃描時間戳
  • 掃描端的 IP 位址
  • User-agent 字串(裝置、作業系統、瀏覽器)
  • Referrer 標頭(掃描端從哪裡來,若適用)
  • Accept-Language 標頭(語言偏好)

根據這些資料,服務商可以推斷出:大致的地理位置、裝置類型、作業系統版本,以及整體而言一段時間內的掃描模式。這些會被以「分析」之名行銷給客戶。同時這也是一種對掃描你 Code 的人們的監控 — 而這些人從未同意過。

中間人能做什麼

更換目的地

重新導向目的地住在服務商的資料庫裡。QR 擁有者通常可以透過儀表板編輯它。這會被當作功能販售,對某些情境而言確實如此。但這也意味著 QR Code 已經不再是它看起來的樣子。實體物件寫著「掃描以參觀我們的網站」,但實際行為取決於服務商資料庫今天說了什麼。

停用重新導向

當擁有者的訂閱失效、帳號被關閉,或違反了服務商的服務條款,重新導向可以被移除。QR Code 的每一份印刷本立即失效。使用者掃描後只會看到一般錯誤頁或 404。

插入中介頁

有些服務商會在最後重新導向之前,把動態 QR 掃描導過一個品牌化的中介頁 — 播放廣告、索取同意、蒐集 email。QR 擁有者通常並沒有同意這件事。它是之後才加上去的,隨著服務商越來越積極地變現。

賣掉或弄丟掃描資料

掃描 log 很值錢。它們曾被賣給分析資料掮客、被用來訓練廣告投放模型,而在至少有紀錄的幾起資安事件中,也曾隨著服務商遭入侵而外洩。你的客人掃了一份菜單;現在他們的裝置指紋存在某個資料外洩資料集裡。

為什麼使用者從不察覺

現代瀏覽器會自動跟著重新導向走。除非你有開開發者工具,否則看不到這個中間跳轉。掃描感覺是瞬間完成的,因為重新導向很快(能運作時)。從使用者角度看,動態 QR 的行為跟靜態 QR 完全相同。

直到重新導向伺服器失效為止。那時體驗會急速分道揚鑣 — 但此刻 QR Code 早已印在上千個地方。

資安上的意義

重新導向伺服器是每一個依賴它的 QR Code 的單點失效來源。有三種攻擊面值得考慮:

  • 帳號被攻陷。 如果攻擊者取得 QR 擁有者在服務商的帳號,他可以把每一個 QR 都轉向釣魚頁。客人掃描實體 Code 期待看到餐廳菜單,結果落地在餐廳登入頁的憑證收割複本上。
  • 服務商被入侵。 如果 QR 服務商本身被攻破,所有流通中的動態 QR 都可能被重新指向攻擊者控制的內容。這不是理論 — 多家 QR-as-a-service 服務商都有過公開的資安事件揭露。
  • 服務商端的 DNS 或 TLS 失效。 若重新導向網域無法解析、TLS 憑證過期,依賴它的每個 QR 都會失效。不是惡意行為人 — 只是 QR 擁有者無法控制的常態性營運風險。

靜態 QR Code 沒有任何這些失效模式,因為掃描和目的地之間根本沒有第三方伺服器。

如何檢查你是否正在掃描一個重新導向

使用會在跟隨之前顯示解碼內容的 QR 掃描器 — 我們的 網頁掃描器 就會這麼做。掃描 QR Code 並檢視解碼出來的網址。如果是你真正的目的地,這個 QR 就是靜態的。如果長得像 qrco.de/xyz 或你不認識的短網域,那就是重新導向 — 中間還坐著一個第三方。

替代方案

產生直接編碼你目的地的 QR Code。沒有第三方伺服器、沒有重新導向 log、沒有訂閱。完整比較請見 靜態 vs 動態 QR Code,想了解為何這種中間人模式主宰業界,請見 QR Code 騙局的真相

或者就直接 產生一個靜態 QR Code,然後不用再擔心了。


準備好製作靜態 QR Code 了嗎?

在瀏覽器中產生一個 — 免註冊、免追蹤、免訂閱。你建立的東西就屬於你。