1 ความคิดเห็น

 
GN⁺ 2024-08-17
ความคิดเห็นจาก Hacker News
  • เป็นที่รู้กันมานานกว่า 10 ปีแล้วว่าการ์ด MIFARE Classic มีช่องโหว่ และถ้าอยู่ในอุตสาหกรรมการ์ด โดยทั่วไปก็ควรบอกให้ย้ายไปใช้ชิปที่ปลอดภัยกว่าอย่าง DESFire
    ในคำนำของงานวิจัยก็เขียนไว้ว่า “ถึงปี 2024 ทุกคนก็รู้แล้วว่า MIFARE Classic ถูกเจาะจนเละ” ดังนั้นถ้ายังแจกจ่าย MIFARE Classic อยู่ ก็แทบจะเรียกได้ว่าหาเรื่องเอง

    • ตู้ขายของอัตโนมัติที่มหาวิทยาลัยของเราก็เคยใช้วิธีใส่ยอดเงินไว้ใน โทเคน MIFARE Classic ประมาณปี 2014
      กลางเดือนกรกฎาคมเงินหมดจนแทบไม่มีเงินซื้อตั๋วรถไฟกลับบ้านช่วงปิดเทอม แต่เพราะ MIFARE ทำให้ผมอยู่รอดด้วยแซนด์วิชจากตู้ขายของอัตโนมัติได้ราว 2 สัปดาห์ สมัยวัยรุ่นนี่ดีจริงๆ
    • MIFARE Classic ราคาถูกและเสถียร สิ่งที่พังคือแค่การเข้ารหัสเท่านั้น
      ถ้าใช้เป็นที่เก็บข้อมูลธรรมดา แล้วจัดการการเข้ารหัสข้อมูลและการยืนยันตัวตนด้วยวิธีอื่นก็ไม่มีปัญหา ลายเซ็น ECC ก็เล็กพอจะใส่ในการ์ด 2K/4K ได้ เคยลองทำแบบนั้นมาแล้ว
    • โดยทั่วไปกว่านั้น ไม่เข้าใจว่าทำไมผู้ผลิตที่ใส่ SoC แบบ ARM และฟีเจอร์คล้าย SecureBoot ถึงเอา เอกสารเกี่ยวกับความปลอดภัยไว้ภายใต้ NDA
      เป็นพวกสเปก PDF ที่กันการคัดลอก-วาง และมีลายน้ำ “confidential” แปะอยู่ เหมือนยังคิดว่าการปิดบังเรื่องความปลอดภัยยังใช้ได้ผล
    • TFL ของลอนดอนเริ่มเลิกใช้ MIFARE Classic ตั้งแต่ปี 2010 เพราะปัญหานี้
      แปลกใจที่เรื่องนี้ยังเป็นปัญหาอยู่จนถึงตอนนี้
    • การ์ดเหล่านี้มี แบ็กดอร์ระดับฮาร์ดแวร์ ดังนั้นรุ่นหรือประเภทจึงไม่ได้สำคัญมากนัก
  • สงสัยว่าจะมีใครอธิบายเส้นทางการโจมตีนี้แบบง่ายมากๆ ได้ไหม
    ถ้าเป็นแบ็กดอร์ ฟังดูเหมือนหมายความว่ามีใครบางคน “เข้าไปได้” ใน RFID ของผม แต่ RFID ส่วนใหญ่ปิดไฟอยู่เกือบตลอดเวลา ตอนที่ RFID ได้รับพลังงาน โฮสต์ที่จ่ายพลังงานให้มันก็ต้องมีช่องโหว่หรืออยู่ในเครือข่ายที่ถูกเจาะด้วยหรือเปล่า
    แล้วหลังจากนั้นจะทำอะไรได้บ้างก็ยังไม่ค่อยเข้าใจ ประตูก็เปิดอยู่แล้ว บัตรเครดิตก็พร้อมจ่ายเงินอยู่แล้ว หรือหมายถึงแค่คนที่เดินเฉียดกันบนถนนสามารถโคลนการ์ดของผมได้ประมาณนั้นหรือเปล่า

    • ระบบการ์ด RFID จำนวนมากทั่วโลกใช้ MIFARE Classic เพราะต้นทุนและประวัติการใช้งานที่ยาวนาน
      MIFARE ไม่ได้มีแค่ Classic แต่มี UID 32 บิตและบล็อกข้อมูลเข้ารหัสหลายบล็อก โดยแต่ละบล็อกถูกป้องกันด้วยคีย์ A และคีย์ B
      ระบบการ์ดยุคแรกใช้แค่ UID ในการยืนยันตัวตน ถ้า UID ตรงก็ผ่านได้ แน่นอนว่าใครๆ ก็ทำการ์ด UID เดียวกันได้ ระบบภายหลังจึงเริ่มใช้ฟิลด์เข้ารหัส 12 ฟิลด์ในการยืนยันตัวตน รีดเดอร์จะขอให้การ์ดเข้ารหัสเลขสุ่มและข้อมูลระบุตัวตนที่เก็บไว้ และมีเพียงการ์ดที่มีคีย์ถูกต้องเท่านั้นที่จะส่ง ciphertext และ nonce ที่ถูกต้องกลับมาได้
      การยืนยันตัวตนใช้ การเข้ารหัสแบบกุญแจสมมาตร ขึ้นอยู่กับการตั้งค่า คีย์ A อาจใช้สำหรับอ่านอย่างเดียวหรืออ่าน-เขียน, A ใช้อ่านและ B ใช้เขียน, หรืออาจต้องใช้ทั้ง A/B สำหรับทั้งอ่านและเขียน
      เดิมที MIFARE Classic ใช้รหัสลับเฉพาะของตัวเองชื่อ crypto-1 และคีย์ MIFARE Classic แบบดั้งเดิมสามารถถูกเจาะได้ง่ายด้วยเหตุผลอย่างตัวสร้างเลขสุ่มที่อ่อนแอหรือการชนกัน อย่างไรก็ตาม ยังมีคีย์ที่เสริมความแข็งแกร่งซึ่งยังไม่ถูกเจาะเพราะมีมาตรการรับมือหลายอย่าง
      งานวิจัยดูเหมือนจะพบคีย์ A/B แบบฮาร์ดโค้ด A396EFA4E24F ในการ์ด RFID ยี่ห้อหนึ่ง ผมอ่านงานวิจัยแบบผ่านๆ และไม่ได้ทำงานกับ RFID มานานแล้ว รายละเอียดจึงอาจผิดได้
    • ประเด็นหลักคือ ถ้ามีใครได้การ์ดของคุณไปแค่ไม่กี่นาที ก็สามารถ โคลนแล้วสวมรอยเป็นคุณ ได้
      แน่นอนว่าเขาอาจขโมยการ์ดไปเลยก็ได้ แต่นั่นคุณจะรู้ตัวได้ ในทางกลับกัน ถ้าการ์ดในกระเป๋าสตางค์ถูกวางไว้บนโต๊ะไม่กี่นาที หรือฝ่าย IT “ขอยืม” ไปเข้ารหัสใหม่ หรือวิธีอื่นๆ อีกมากมายที่ทำให้ได้การ์ด RFID มาแค่ชั่วคราว ก็สามารถดัมป์และโคลนได้
    • ถ้าเป็น การ์ด RFID ที่ได้รับผลกระทบในกลุ่มชิปเซ็ตที่อยู่ในหน้าก่อนหน้าสุดท้าย ก็สามารถโคลนได้ทันทีด้วยการเข้าถึงรูทผ่านแบ็กดอร์
  • “ควรซื้อ ของโคลน MIFARE Classic ที่ผลิตในจีน ไหม?” ดูเหมือนเป็นคำถามที่มีคำตอบอยู่แล้ว แต่ก็นั่นแหละ บางทีนี่อาจเป็นเหตุผลที่ผมยังไม่ได้เลื่อนตำแหน่งเป็น CISO

    • ผู้ใช้ปลายทางของการ์ดแบบนี้มักไม่รู้แหล่งที่มา และโดยทั่วไปจะถูกจัดหาโดย รีเซลเลอร์ ที่พยายามประหยัดเงินให้ได้แม้เพียงเล็กน้อย
      เรามีลูกค้าที่ใช้สมาร์ตการ์ด และเราต้องอ่านหรือเขียนการ์ดเป็นบางครั้ง ตอน onboarding พวกเขามักไม่รู้ว่าตัวเองใช้เวอร์ชันหรือสเปกอะไร พวกเขาจะส่งการ์ดที่แทบไม่มีเครื่องหมายมาให้ไม่กี่ใบ แล้วให้เราค่อยๆ ลองผิดลองถูกจนรู้
    • ตามงานวิจัย แบ็กดอร์เดียวกันดูเหมือนจะมีอยู่ใน SKU บางรายการของ NXP และ Infineon ด้วย รวมถึงสินค้าที่ผลิตในยุโรป
    • ถ้าคุณเสนอวิธีประเมินความเสี่ยงเชิงปริมาณอย่างสร้างสรรค์ได้ คุณก็อาจได้เลื่อนเป็น CISO
      เฟรมเวิร์กบริหารความเสี่ยงช่วยแสดงผลกระทบ ความเป็นไปได้ และมาตรการตอบสนองออกมาเป็นตัวเงินได้ ถ้าเสนอทางเลือกหลายแบบว่ามาตรการลดความเสี่ยงต่างๆ ส่งผลต่อความเสี่ยงคงเหลือสุดท้ายอย่างไร คนที่ไม่ใช่สายเทคนิคก็จะยอมรับทิศทางด้านความปลอดภัยขององค์กรได้
      แน่นอนว่าก็ต้องพูดเรื่องพื้นฐานอย่าง “ความปลอดภัยสำคัญ”, “ช่องโหว่เป็นเรื่องไม่ดี”, “ความเสี่ยงซัพพลายเชนต้องจัดการ” ด้วย ยิ่งรู้มากเรื่องพวกนี้ก็ยิ่งน่าปวดหัว อย่างน้อยก็จากประสบการณ์ของผม แต่ผมไม่ใช่ CISO
    • คำถามจริงมักซับซ้อนกว่านั้น เช่น “ต้องรื้อรีดเดอร์และประตูทางเข้าหลายพันจุดในอาคารออกไหม หรือจะใช้ การ์ดที่เสริมความแข็งแกร่ง ซึ่งใช้โปรโตคอลเดียวกันต่อไปได้อีกสักหลายปี”
      ไม่ได้แนะนำให้ทำแบบนั้น แต่ในบริษัทส่วนใหญ่ ความปลอดภัยทางกายภาพก็ไม่ได้มีงบไม่จำกัดเหมือนกับด้านอื่นๆ
    • ไม่แน่ใจว่า CISO เป็นคนตัดสินใจเรื่องแบบนี้หรือเปล่า
      ดูมีความเป็นไปได้มากกว่าว่าผู้รับเหมาที่ผู้จัดการอาคารของบริษัทถือครองอสังหาริมทรัพย์เชิงพาณิชย์นิรนามจ้างมาเป็นคนตัดสินใจ
  • ลิงก์บทคัดย่อที่ไม่ใช่ PDF: https://eprint.iacr.org/2024/1275
    MIFARE Classic: exposing the static encrypted nonce variant
    Cryptology ePrint Archive, Paper 2024/1275
    ผู้เขียน: Philippe Teuwen

  • สงสัยว่าสิ่งนี้เกี่ยวข้องอย่างไรกับการ์ดที่ใช้ PKCS หรือ PKI
    สงสัยด้วยว่ามีระบบควบคุมการเข้าออกที่ใช้วิธีแบบนี้จริงหรือไม่ และปลอดภัยกว่าหรือเปล่า
    หรืออาจมีระบบควบคุมการเข้าออกประตูที่ใช้ FIDO2 ก็ได้

    • ระบบควบคุมการเข้าออกที่ใช้ PKI มีอยู่จริง
      ตัวอย่างเช่น ในสเปก PIV อย่าง DOD CAC สล็อต 9e มักถูกกำหนดให้ใช้สำหรับ “การยืนยันตัวตนของการ์ด” โดยไม่ต้องใช้ PIN
      การ์ดที่ใช้ PKCS ได้ข้อดีของสมาร์ตการ์ด เช่น ตามทฤษฎีแล้วดึงคีย์ออกมาได้ยากและมีความทนทานต่อการโจมตีแบบ side-channel เป็นต้น แต่ก็มีความเสี่ยงทั่วไปที่ต้องเชื่อว่าผู้จัดหาและผู้ออกบัตรจะไม่ใส่ APDU แบ็กดอร์ไว้ในแอปเพล็ต
      คงมีคนไม่มากที่อยากใช้ FIDO2 กับการควบคุมการเข้าออกประตู แต่ในทางทฤษฎีก็ไม่มีเหตุผลที่จะห้าม ทำเพียงออกแบบสคีมา URI ที่ฉลาดสำหรับแต่ละประตู และรู้ว่าในแต่ละ URI ควรคาดหวังคีย์สาธารณะใดสำหรับแต่ละตัวตนก็พอ อย่างไรก็ตาม FIDO2 ไม่ได้เหมาะนัก เพราะแต่ละ URI จะให้ตัวตนที่ต่างกัน จึงมีแนวโน้มว่าต้องใช้ URI หรือโซนเดียวสำหรับทั้งไซต์ แล้วให้ตัวตรวจสอบแต่ละตัวทำการตรวจสอบสิทธิ์เข้าถึงโซนเอง
      ในทางปฏิบัติ ถ้าใช้ การตรวจสอบ PKI แบบ PIV ก็แทบจะได้ข้อดีของ FIDO2 พร้อมทั้งยังจัดการการเพิกถอนการ์ดได้ผ่าน CRL ที่แจกจ่ายไปทั่วทั้งระบบ
  • สงสัยว่าสามารถทำการโจมตีนี้ด้วย Flipper Zero ได้ไหม

    • ตอนนี้ยังไม่ได้ แต่กำลังเขียนอยู่
      คาดว่าจะใช้ได้ภายในสิ้นเดือนนี้ และติดตาม PR ได้ที่นี่: https://github.com/flipperdevices/flipperzero-firmware/pull/...
    • เดาว่าน่าจะอยู่ที่ NFC -> Extra Actions -> MIFARE Classic Keys -> Add
      ตอนนี้ไม่มีคีย์ Classic ให้ทดสอบ เลยยืนยันไม่ได้
  • ประมาณ 8 ปีก่อน ใช้บทช่วยสอนนี้เพื่อเอา อาหารไม่จำกัด จากตู้ขายของอัตโนมัติของมหาวิทยาลัย
    เป็นช่วงเวลาดี ๆ
    https://firefart.at/post/how-to-crack-mifare-classic-cards/

  • เหมือนปรากฏการณ์ Baader-Meinhof เลย แต่ตลอดสองวันที่ผ่านมากำลังพยายามโคลน MIFARE Classic 1K ของมหาวิทยาลัยอยู่
    เพราะบัตรนักศึกษาซีดจนถูกปฏิเสธการเปิดใช้งานใหม่

  • ปัญหานี้ไม่ใช่ช่องโหว่เชิงทฤษฎีที่เข้าใจยาก แต่เป็น รูรั่วใหญ่ ที่ค่อนข้างร้ายแรง ตามบทคัดย่อระบุว่า
    “จากการศึกษาเชิงประจักษ์ เราค้นพบแบ็กดอร์ฮาร์ดแวร์และถอดรหัสคีย์ของมันได้สำเร็จ ผู้ที่รู้แบ็กดอร์นี้สามารถเข้าถึงการ์ดเพียงไม่กี่นาที ก็สามารถละเมิดคีย์ที่ผู้ใช้กำหนดเองทั้งหมดของการ์ดนั้นได้โดยไม่ต้องมีความรู้ล่วงหน้า นอกจากนี้ ระหว่างการตรวจสอบการ์ดรุ่นเก่า เรายังค้นพบคีย์แบ็กดอร์ฮาร์ดแวร์อีกชุดหนึ่งที่มีอยู่ร่วมกันในผู้ผลิตหลายรายด้วย”