1 คะแนน โดย GN⁺ 2025-03-15 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

> "เราไม่ต้องการ WebUSB!"

  • มีวิธีที่หน้าเว็บจะเข้าถึงอุปกรณ์ USB ได้โดยไม่ต้องใช้ WebUSB และยังสามารถออกแบบอุปกรณ์ให้เลี่ยงข้อกำหนดเรื่องการขอความยินยอมจากผู้ใช้ได้ด้วย

เดโมแบบรวดเร็ว

  • โหลด u2f-hax.uf2 ลงบน Raspberry Pi Pico แล้วโหลด index.html บน localhost หรือ secure context อื่น
  • ปุ่ม "On!" และ "Off!" จะสลับสถานะ LED และสถานะของพิน GP22 จะอัปเดตบนหน้าเพจเป็นระยะ

มันเป็นไปได้อย่างไร?

  • Pico ถูกโปรแกรมให้จำลอง U2F dongle (physical two-factor security key)
  • แทนที่จะเป็นฟังก์ชันด้านความปลอดภัย ข้อมูลตามอำเภอใจจะถูกซ่อนไว้ใน "key handle" และลายเซ็นของข้อความ U2F_AUTHENTICATE
  • หาก key handle เริ่มต้นด้วย 0xfeedface, Pico จะ "ยืนยัน" การมีอยู่ของผู้ใช้ทันทีและส่งข้อมูลกลับ

ทำไมถึงเป็นไปได้?

  • U2F key handle ถูกออกแบบให้เป็นก้อนข้อมูลทึบแสงที่ security dongle เป็น "เจ้าของ"
  • มันถูกออกแบบมาเพื่อให้ dongle ต้นทุนต่ำหนึ่งตัวสามารถเชื่อมโยงกับหลายเว็บไซต์ได้
  • ภายใน dongle จะเก็บ "master" cryptographic key เฉพาะไว้ และเมื่อมีการลงทะเบียนก็จะสร้างคู่ public/private key ใหม่แล้วส่งกลับ
  • เนื่องจาก key handle ถูกจัดการแบบทึบแสง จึงสามารถซ่อนข้อมูลตามอำเภอใจไว้ได้

วิธีส่งข้อมูลกลับ

  • ซ่อนข้อมูลไว้ในลายเซ็น ECDSA
  • ลายเซ็นประกอบด้วยตัวเลขสองค่า (r, s) และแต่ละค่าจะถูกคำนวณให้อยู่ในช่วงที่กำหนด
  • Chrome ตรวจสอบว่าตัวเลขในลายเซ็นอยู่ในช่วงที่ถูกต้อง แต่ Firefox ไม่ตรวจสอบ
  • เพื่อเลี่ยงการตรวจสอบความถูกต้องเริ่มต้นของ Chrome จึงตั้งค่าไบต์แรกของแต่ละตัวเลขเป็น 0x7f

นี่เป็นช่องโหว่ด้านความปลอดภัยหรือไม่?

  • ไม่ใช่ และไม่สามารถเข้าถึงอุปกรณ์ USB ใดก็ได้ตามอำเภอใจ
  • ใช้งานได้เฉพาะกับอุปกรณ์ที่จงใจฝ่าฝืนกฎเท่านั้น
  • security model ของอุปกรณ์ USB นั้นน่าสงสัยอยู่แล้วบนแพลตฟอร์มส่วนใหญ่
  • ไม่ควรเชื่อมต่ออุปกรณ์ที่ไม่รู้จักแบบสุ่มเข้ากับคอมพิวเตอร์

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

 
GN⁺ 2025-03-15
ความคิดเห็นจาก Hacker News
  • เธรดนี้พูดถึง WebUSB เป็นหลัก ไม่ได้เกี่ยวกับ OP โดยตรง WebUSB เป็นการแฮ็กที่เจ๋งมาก

    • ในแง่หนึ่งก็อยากได้ WebUSB แต่ก็ไม่อยากให้คนทั่วไปมี WebUSB
    • ป๊อปอัปขอความยินยอมใช้ไม่ได้ผล และผู้คนก็มักกดตกลงกับทุกอย่างโดยอัตโนมัติ
    • ชอบรูปแบบสิทธิ์อนุญาตของ Internet Explorer ต้องทำเครื่องหมายบางเว็บไซต์ว่าเป็นเว็บไซต์ที่ "เชื่อถือได้" ก่อนจึงจะใช้ฟีเจอร์ได้
    • ถ้าต้องทำเครื่องหมายเว็บไซต์ว่าเป็นเว็บไซต์ที่ "เชื่อถือได้" ก่อนถึงจะใช้ API ที่เสี่ยงอย่าง WebUSB, WebBluetooth ฯลฯ ได้ ก็น่าจะมีคนน้อยลงที่เผลอทำโดยไม่ตั้งใจ
  • Firefox ไม่รองรับการสื่อสารกับอุปกรณ์ USB แบบสุ่มใด ๆ อย่างไรก็ตาม รองรับการสื่อสารผ่าน USB กับกุญแจความปลอดภัย U2F

    • โปรเจ็กต์นี้โปรแกรมไมโครคอนโทรลเลอร์ให้ปลอมตัวเป็นกุญแจความปลอดภัย U2F เป้าหมายคือสื่อสารกับไมโครคอนโทรลเลอร์ผ่าน USB โดยใช้ Firefox
    • ใช้ Javascript Credentials API และลูกเล่นเล็กน้อยเพื่อส่งข้อมูลไปยังไมโครคอนโทรลเลอร์และรับการตอบกลับ
  • คนที่ใช้ WebUSB บอกว่ามันยอดเยี่ยม ส่วนคนที่ไม่ได้ใช้ก็งงว่าทำไมถึงจำเป็น

    • สำหรับผมแล้ว WebUSB ยอดเยี่ยมมาก ยูทิลิตี WebUSB ส่วนใหญ่มีให้เป็นแอปติดตั้งแยกอยู่แล้ว แต่การใช้เวอร์ชันเว็บง่ายกว่า
    • คิดว่าน่าจะได้รับความนิยมในหมู่คนที่เบื่อการต้องมีแอปแยกสำหรับทุกอย่าง
  • การปรับแต่งคีย์บอร์ดที่ใช้เฟิร์มแวร์ QMK/Via ด้วย WebUSB เป็นฝันร้าย

    • ต้องทำให้เบราว์เซอร์สามารถอ่านอุปกรณ์ /dev/hidraw ได้ครบถ้วนก่อนที่เฟิร์มแวร์จะโต้ตอบกับมัน
    • ในแง่การใช้งานแล้วไม่น่าอภิรมย์อย่างมาก และเครื่องมือปรับแต่งแบบออฟไลน์ก็ล้วนเป็น Electron
    • วิธีแก้ที่สมเหตุสมผลคือให้เว็บไซต์ตั้งค่าเลย์เอาต์คีย์บอร์ดที่ต้องการเป็นไฟล์เทมเพลต json จากนั้นดาวน์โหลด json ที่ได้ แล้วแฟลชเฟิร์มแวร์ลงคีย์บอร์ดผ่านเครื่องมือแฟลชระดับ sudo
  • USB Serial เป็นเครื่องมือที่ยอดเยี่ยม และตอนนี้ก็มีรายชื่อเครื่องมือที่ใช้เบราว์เซอร์ตั้งค่าอุปกรณ์ได้

    • มีทั้ง ESPHome, Betaflight, ELRS, Flipper เป็นต้น
    • WebKit ได้รับการรองรับไม่ดีเพราะ Apple เป็นผู้พัฒนา อย่างไรก็ตาม Firefox ขาดการรองรับการ "เชื่อมต่อ" ฮาร์ดแวร์และไม่เป็นมิตรกับนักพัฒนา
    • ไม่เพิ่มการรองรับเพราะมองว่าความยินยอมของผู้ใช้เพียงอย่างเดียวไม่เพียงพอสำหรับการเข้าถึงอุปกรณ์ ขณะที่ Blink ได้พิสูจน์แล้วว่าสามารถทำให้ปลอดภัยได้
  • สำหรับคนที่แฟลชอุปกรณ์บ่อย ๆ ข้อดีนั้นชัดเจน แต่สำหรับผู้ใช้ทั่วไปไม่ใช่เรื่องสำคัญ

    • อาจต้องใช้เครื่องมือหรือเบราว์เซอร์แยกต่างหาก Flash Browser อาจมาพร้อมเครื่องมือเพิ่มเติมได้
  • อาจจะดีกว่าถ้าไม่ปล่อยให้พอร์ต USB ถูกใช้โดยโค้ดที่ทำงานบนเบราว์เซอร์

  • การแฟลช GrapehenOS ลงบนโทรศัพท์ Pixel เป็นหนึ่งในประสบการณ์ติดตั้ง OS ที่ราบรื่นและรวดเร็วที่สุด

  • เข้ารหัสคีย์ส่วนตัวด้วยคีย์ "มาสเตอร์" แล้วส่งคืนคีย์ส่วนตัวที่เข้ารหัสแล้วเป็น key handle

    • การเปิดโอกาสแบบไม่จำกัดดูเหมือนสุดท้ายจะย้อนกลับมาสร้างผลเสีย
  • มีข้อถกเถียงทางการเมืองที่เกี่ยวข้องกับ WebUSB

    • สงสัยว่าข้อถกเถียงทางการเมืองนั้นคืออะไร