KeyFrame內部研究專用

DEF CON 33 - RF Village - The dirty laundry of stored value washing cards - Aidan Nakache, Equip

DEFCONConference·10月22日週三·30 min英文

三句話摘要

安全研究員通過逆向工程揭露My Fair Classic洗衣卡的RFID芯片設計缺陷,展示如何利用數據結構中的鏡像機制任意修改儲值余額。 RFID儲值系統的安全漏洞往往因升級成本過高、單次損失有限、使用者認知不足而長期存在,廠商會理性選擇承受已知風險而非投入巨額改造。 設計根本缺陷:余額作為可讀寫的明文整數存儲在扇區,系統未採用真正的加密認證,只靠簡單校驗位防護,無法抵禦有物理卡片的攻擊者。

重點整理

重點
  • 1

    設計根本缺陷:余額作為可讀寫的明文整數存儲在扇區,系統未採用真正的加密認證,只靠簡單校驗位防護,無法抵禦有物理卡片的攻擊者。

  • 2

    鏡像機制反而成為破綻:為防止故障,卡片在塊2、4、8等多個位置存儲余額副本,但不同表示方式(十進制、十六進制、位元組反轉)的並存讓驗證邏輯完全暴露。

  • 3

    線性公式可被複制:交易ID和遞增計數器等驗證字節與余額值之間滿足線性關係,攻擊者只需修改一個字節,其他驗證位可通過公式自動生成,系統形同虛設。

  • 4

    升級困境驅動風險承受:修復需要全北美更換數百萬台編碼器硬件,成本數千萬美元;而單次欺詐金額低,加上消費者安全意識薄弱,廠商選擇承受持續漏洞風險。

實用技巧與重點

乾貨
  • 卡片規格:My Fair Classic 1-2代,容量~1KB(720字節),16個扇區×4個塊
  • 余額編碼:整數美分制($18.75 = 1875 = 0x753),小端序存儲
  • 關鍵位置:余額在塊2的第9-10字節;塊4、8為鏡像副本
  • 驗證公式:中間字節 = xFF XOR 余額字節(即y = -x + 255)
  • 其他數據:交易ID、遞增計數器、終端位、卡號(存為十六進制化十進制)
  • 攻擊工具:Proxmark讀卡設備 + Python自動計算腳本
  • 受影響廠商:Kiosoft(數據結構商)、Coinomatic、CSC等,涵蓋公寓、宿舍、校園自助洗衣房
  • 影子模式:第4代卡引入,案例中價格被鎖定為$6,969
  • 無法空生成:新卡須由同位置編碼器初始化,不能跨位置使用

結論

結論

RFID儲值系統的安全漏洞往往因升級成本過高、單次損失有限、使用者認知不足而長期存在,廠商會理性選擇承受已知風險而非投入巨額改造。

完整解析

詳細

從去年Defcon大會歸來,研究團隊萌發了對儲值洗衣卡的好奇心。My Fair Classic RFID卡廣泛部署於北美公寓、宿舍和大學,存儲加值信息供讀卡機驗證。他們的第一步是瞭解卡片架構。每張卡包含16個扇區,每個扇區由4個數據塊(共4或16字節)組成,總容量約720字節。第0塊存儲卡的身份標識(UID、製造商代碼等)且不可修改,其他塊則可讀寫。

早期分析中,他們發現$18.75的余額在卡片內存中表現為整數1875,進一步轉換為十六進制0x753。當他們搜尋這個值時,驚訝地發現它在多個位置重複出現——不僅在塊2,還在塊4和塊8,甚至以反向字節序(0x3507)的形式存在。這表明系統採用了大量冗餘來確保數據完整性,但正是這種冗餘暴露了內部邏輯。

突破點出現在分析驗證機制時。研究團隊注意到兩個神秘的「中間字節」在每次充值時都會變化。通過多組測試數據(分別充值$3、$10、$20),他們發現這些字節與余額值之間存在精確的數學關係:用余額值異或xFF即可得到驗證字節,反之亦然。更簡潔的表達是公式y = -x + 255。這一發現意味著他們不需要逆向整個加密流程,只需修改一個數值,其他防護層都能自動計算出來。

為了驗證可行性,他們使用Proxmark(一款RFID讀寫設備)和自寫Python腳本進行實驗。腳本先讀取卡片現有數據,計算目標金額對應的所有字節值(含驗證位),然後寫回卡片。演示中,一張原本余額$18.75的卡被成功修改為$85,整個過程耗時不到一分鐘。他們甚至發現了第4代卡引入的「影子模式」(Shadow Mode),某張測試卡的余額被永久固定在$6,969。

討論環節暴露了為何漏洞至今未被修復的根本原因。卡片無法空生成——新卡必須由同一位置(如特定公寓樓、大學宿舍)的編碼器初始化並分配卡號,這限制了廣泛欺詐的可能。更重要的是,修復系統需要更換全北美數百萬台編碼器和洗衣機硬件,涉及數千萬美元成本。相比之下,單個用戶的欺詐損失(通常不超過幾十美元)對廠商而言微不足道。消費者也普遍缺乏安全意識,不會因為漏洞公開而改變購買或使用決策。在這種經濟動機缺失的環境下,系統升級難以推進。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web2 安全」的內容

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car
7 min
Web2 安全英文PODCAST8月25日

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car

SANS Stormcast

  • PNG 容器攻擊的簡易性設計:Double Cup 不依賴複雜的 Exif 或隱寫技術,只用 PNG 副檔名和檔頭來偽裝,核心是利用 findstr 指令的常見可用性讓執行變得無需額外工具。
  • Web Audio API 的隱密指紋識別:音訊於增益零的無聲狀態下播放,使用者完全無感,但錄製波形足以建立裝置特徵,在瀏覽器原生功能層面難以區分是反詐欺還是過度追蹤。
  • 域名過期引發的串聯漏洞:DMARC 報告端點使用過期域名是常見疏漏,允許攻擊者透過簡單的域名註冊取得他人的 SPF/DKIM 錯誤報告,進而收集目標系統配置情報。
Risky Bulletin: Expired credit cards can be used for malicious transactions
5 min
Web2 安全英文PODCAST8月24日

Risky Bulletin: Expired credit cards can be used for malicious transactions

Risky Business

  • 支付安全的非對稱風險:Visa卡利用未加密的卡片資料與NFC通訊,攻擊者可藉由中間人技術竄改過期日期進行交易,但MasterCard、美運卡與Discover的防護更完善,顯示不同發卡機構的安全架構存在明顯差異。
  • 國家級駭客活動的連鎖延伸:北韓Lazarus集團在2月單一事件已累積100名受害者,涵蓋大學、警察部門、媒體與醫療機構,伊朗駭客則針對基礎建設如電力系統發動破壞性攻擊,反映地緣政治在網路戰爭中的升溫。
  • AI加速漏洞生態的雙面刃:AI工具催生近2萬份漏洞概念驗證代碼發布,但同時也導致大量失效漏洞代碼氾濫,增加資安團隊甄別真實威脅的難度;Mayer Protocol遭攻擊事件中,駭客用AI鏈接六個無關的小漏洞完成盜竊170萬美元的攻擊。
SANS Stormcast Monday, August 24th, 2026: More Entra Powershell; Entra Vulnerability; GitLab Vuln (and PoC); GTA 6 Leak Malware
5 min
Web2 安全英文PODCAST8月24日

SANS Stormcast Monday, August 24th, 2026: More Entra Powershell; Entra Vulnerability; GitLab Vuln (and PoC); GTA 6 Leak Malware

SANS Stormcast

  • Microsoft EntraID 的遠端代碼執行漏洞已由微軟修補,初期報告顯示已遭利用但後來更正為未遭利用。這反映 Microsoft 在雲端軟體安全上的透明度提升,對漏洞採用與內部軟體相同的 CVE 編號和公告流程。
  • PowerShell 指令碼可用於驗證 MFA 部署完整性,特別是找出未啟用 MFA 的遺漏帳號。同時可以分析 EntraID 登入日誌中的異常行為,如風險係數評估和地理位置檢測,幫助組織快速識別可疑登入。
  • GitLab 的 GraphQL 代碼注入漏洞允許未認證攻擊者刪除或修改儲存庫,潛在導致供應鏈攻擊。已有公開概念驗證 (PoC) 存在,使用內部部署 GitLab 的組織必須立即修補。