2 คะแนน โดย GN⁺ 2024-01-29 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • พบ ช่องโหว่ DoS ในห้องน้ำสำหรับผู้พิการบนรถไฟ Class 800 ของสหราชอาณาจักร โดยอาศัยจังหวะที่สถานะประตูและการตัดสินตำแหน่งคันล็อกไม่ตรงกัน ทำให้ประตูล็อกทันทีที่ปิด
  • การออกแบบรุ่นก่อนแบบปุ่มกดแยก “ปิด” กับ “ล็อก” ออกจากกัน เพื่อป้องกันสถานการณ์ที่มีคนล็อกห้องน้ำจากภายนอก แต่ผู้ใช้มักสับสนได้ง่ายว่าสถานะล็อกอยู่หรือไม่
  • การออกแบบรุ่นใหม่แบบคันโยกเข้าใจง่ายกว่า แต่ในวิธีของ Hitachi จะไม่ดันคันโยกกลับ แต่ใช้ หมุดโลหะ ขวางการเคลื่อนที่ ทำให้เกิดช่องว่างระหว่างระยะหลวมของคันโยกกับการตัดสินของคอนโทรลเลอร์
  • วิธีทำซ้ำคือ หลังปิดประตู ให้ขยับคันโยกเพียงเล็กน้อยจนหมุดล็อกยังเกี่ยวไม่ได้ จากนั้นเปิดประตูอีกครั้งให้หมุดยื่นออกไปในอากาศ แล้วจึงเลื่อนคันโยกไปยังตำแหน่งล็อก
  • ในการทดสอบครั้งหนึ่ง คอนโทรลเลอร์ประตูเข้าสู่โหมด out-of-order แต่การสาธิตทำเฉพาะในสถานการณ์ที่ไม่มีคนรอใช้และบนขบวนรถมีห้องน้ำหลายห้อง

โครงสร้างการล็อกประตูห้องน้ำของ Class 800

  • รถไฟ Class 800 ของสหราชอาณาจักรมีห้องน้ำสำหรับผู้พิการที่ใช้ประตูไฟฟ้า
  • ห้องน้ำรุ่นก่อนมีโครงสร้างที่ภายในมีปุ่ม open, close, lock
    • ผู้ใช้ต้องกด close รอให้ประตูปิด แล้วจึงกด lock
    • ไม่มีปุ่ม unlock แยกต่างหาก และเมื่อกดปุ่ม open จากด้านใน ระบบจะปลดล็อกอัตโนมัติแล้วเปิดประตู
  • การแยก “ปิด” กับ “ล็อก” ออกจากกันช่วยป้องกัน การโจมตีแบบปฏิเสธการให้บริการ ที่มีคนกด close แล้วออกมาก่อนประตูปิด ทำให้ห้องน้ำใช้งานไม่ได้ถาวร
  • แต่สำหรับผู้ใช้ที่ไม่คุ้นเคยกับ state machine อาจทำให้สับสน และเกิดกรณีที่ล็อกประตูไม่ถูกต้องหรือเข้าใจผิดว่าล็อกแล้ว

ช่องโหว่ที่เกิดจากการล็อกแบบคันโยก

  • ห้องน้ำสำหรับผู้พิการรุ่นใหม่จำนวนมากใช้วิธีขยับ คันโยก เพื่อล็อกประตูแทนปุ่ม
    • ผู้ใช้เข้าใจได้ง่ายกว่า
    • อย่างไรก็ตาม คันโยกนี้ไม่ใช่คันโยกเชิงกลที่เชื่อมกับกลไกล็อกจริงโดยตรง แต่เป็นอินพุตของไมโครคอนโทรลเลอร์
  • รถไฟบางขบวนในสหราชอาณาจักรจัดการความไม่ตรงกันของสถานะโดยทำให้คันโยกกลับไปยังตำแหน่ง unlocked หากพยายามขยับคันโยกไปยังตำแหน่งล็อกขณะที่ประตูเปิดอยู่
  • วิธีของ Hitachi จะไม่ดันคันโยกกลับ แต่เมื่ออยู่ในสถานการณ์ที่ไม่ควรขยับไปยังตำแหน่งล็อก จะยื่น หมุดโลหะ ขนาดเล็กออกมาเพื่อยึดคันโยกไว้ที่ตำแหน่ง unlocked
  • ช่องโหว่เกิดจาก ระยะหลวม ระหว่างจุดที่คันโยกถูกตรวจจับว่า “ล็อกแล้ว” กับจุดที่หมุดโลหะสามารถเกี่ยวได้จริง
    • หลังปิดประตู สามารถขยับคันโยกไปยังตำแหน่งที่หมุดยังเกี่ยวไม่ได้ แต่คอนโทรลเลอร์ยังไม่อ่านว่า locked
    • จากนั้นเมื่อเปิดประตูในสถานะนั้น หมุดล็อกจะยื่นออกไปในอากาศ
    • เนื่องจากหมุดไม่แตะคันโยก จึงสามารถเลื่อนคันโยกไปยังตำแหน่ง locked ได้
    • หลังจากนั้นปุ่ม close จะยังทำงานต่อไป และประตูจะล็อกทันทีที่ปิด
  • มีการเผยแพร่วิดีโอสาธิตปัญหานี้
  • ระหว่างการทดสอบครั้งที่สองบน Class 800 คอนโทรลเลอร์ประตูห้องน้ำเข้าสู่โหมด out-of-order
    • ในการทดสอบครั้งแรกไม่เกิดอาการนี้
    • ตอนผู้เขียนลงจากรถไฟ ห้องน้ำกลับมาทำงานอีกครั้งแล้ว
    • ไม่ทราบว่ารีเซ็ตเองโดยอัตโนมัติหลังผ่านไประยะหนึ่ง หรือมีใครบนรถไฟรีเซ็ตให้
  • การสาธิตทำเฉพาะในสถานการณ์ที่ไม่มีคนรอใช้ห้องน้ำอยู่ใกล้ ๆ และบนขบวนรถมีห้องน้ำหลายห้อง โดยจุดประสงค์ของวิดีโอไม่ใช่การทำ DoS ห้องน้ำจริง แต่เพื่อแสดงให้เห็นว่ามีความเป็นไปได้

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

 
GN⁺ 2024-01-29
ความคิดเห็นบน Hacker News
  • ตอนอยู่ประถม เรื่องแบบนี้ก็เกิดกับกลอนล็อกแบบอะนาล็อกที่หมุนด้วยมือเหมือนกัน ด้านนอกประตูจะมี อินเทอร์เฟซเหมือนร่องไขควง ประมาณนี้ เด็กที่ออกไปโดยบอกว่า “ต้องไปห้องน้ำ” ก่อนหมดคาบ 5 นาที มักจะใช้ไขควงหรือ Swiss Army knife ล็อกห้องทุกห้องจากด้านนอก ทำให้ดูเหมือนทุกห้องมีคนใช้อยู่

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

    • รถไฟตระกูล Pendolino ในอังกฤษ สมัยที่ Virgin ให้บริการ อย่างน้อยก็ขึ้นชื่อเสียเรื่อง ลูปการสั่นที่เปิด/ปิดซ้ำไปมา ถึงขั้นทุกครั้งหลังออกจากสถานี พนักงานจะประกาศว่าห้องน้ำในตู้ไหนใช้งานได้ และเป็นเรื่องปกติที่จะขอโทษเรื่องกลิ่นจากตู้อื่น
  • เมื่อก่อนในออสเตรเลียมีเครื่องที่ดูเหมือนความพยายามยุคแรก ๆ ของ โทรศัพท์สาธารณะแบบดิจิทัล บางเครื่องยังเหลืออยู่ แต่คงอยู่ได้ไม่นาน ถ้ากดปุ่มภาษาไว้ก่อนยกหูและระหว่างยกหู โทรศัพท์สาธารณะจะแสดงข้อความ “Out of Order” และแม้วางหูแล้ว ข้อความนั้นก็จะค้างอยู่จนกว่าคนถัดไปจะยกหูขึ้น
    ด้วยความเป็นเด็กมัธยม เราใช้แนวทางเชิงวิทยาศาสตร์ล้วน ๆ ในการทำให้ชีวิตคนจำนวนมากพัง ถ้าทำให้โทรศัพท์ 2 ใน 3 เครื่องอยู่ในสภาพแบบนี้ จะไม่มีใครตรวจสอบหูโทรศัพท์ที่เสียอย่างละเอียดพอเพื่อคืนสถานะเดิม ทำให้เกิดคิวยาวหน้าเครื่องที่ยังใช้ได้ 1 เครื่อง แต่ถ้าทำให้ทั้ง 3 เครื่องดับหมด ผู้ใช้ที่โมโหจะลองยกหูทดสอบจนทุกเครื่องกลับมาเป็นปกติ เป็นการศึกษาที่ทำซ้ำได้กับแทบทุกกลุ่มโทรศัพท์สาธารณะในละแวกเรา

  • ตู้โดยสารบางรุ่นที่ใช้ในเส้นทางอังกฤษ น่าจะเป็นคันที่เคยเห็นแถว Bradford มี การออกแบบผิดพลาดแบบนั้นพอดี ที่ปุ่มปิดด้านใน
    ผมมีรีเฟล็กซ์ชอบกด ‘ปิด’ ตอนเดินออกไปเพราะติดนิสัยจัดให้เรียบร้อย เลยต้องระวังมาก และครั้งแรกที่ใช้ ผมน่าจะเผลอกดไปจริง ๆ แล้วพอได้ยินเสียงคลิกถึงค่อยรู้ตัวว่าทำอะไรกับผู้โดยสารคนอื่นลงไป

    • นั่นน่าจะเป็น class 333
  • การแยกการปิดกับการล็อกเป็นคนละการกระทำกันก็มี แง่จิตวิทยา อยู่ด้วย รถไฟบางขบวนในเดนมาร์กมีแค่ปุ่ม ‘ปิด’ ซึ่งครั้งแรกที่เห็นก็ค่อนข้างงง

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

    • วิธีดัดแปลงที่ง่ายกว่ามากคือแปะป้าย “Open/Unlock” ข้างปุ่มเปิด
  • ไม่รู้ว่ากลอน กลไก แบบเก่าในห้องน้ำรถไฟมีปัญหาอะไร ผู้โดยสารจำนวนมาก โดยเฉพาะผู้สูงอายุ ใช้อุปกรณ์ไฟฟ้าหรู ๆ เหล่านี้ไม่เป็นจนลำบาก และมีเหตุการณ์น่าอายมากมายจากประตูที่จริง ๆ แล้วไม่ได้ล็อก บางคนก็ดูเหมือนจะสนุกกับการจงใจทำให้มันเสีย
    บางคนอาจมีธุระเร่งด่วนจริง ๆ และจำเป็นต้องใช้ห้องน้ำที่ใช้งานได้บนรถไฟ

    • ยังไม่แก่ แต่เคยลำบากกับประตูห้องน้ำรถไฟคล้าย ๆ กัน ทำไมอุปกรณ์โง่ ๆ นี่ต้องมี ปุ่มล็อก แยกต่างหากด้วย? เข้าไปในห้องน้ำแล้วกด “ปิดประตู” จะมีสถานการณ์ไหนกันที่ไม่อยากให้ประตูล็อก
      ดีไซน์ปุ่มก็ไม่ได้ชัดเจนอะไร เข้าใจข้อดีของกลไกเปิดปิดไฟฟ้าเพราะประตูเลื่อนหนัก แต่การล็อกควรเป็นอุปกรณ์กายภาพ หรืออย่างน้อยควรทำงานเหมือนอุปกรณ์กายภาพ
    • ประตูเลื่อนทรงโค้งแบบนี้น่าจะกินพื้นที่น้อยกว่าบานที่ปิดด้วยมือมาก ปัญหาคือประตูเลื่อนทรงโค้งอาจหนักมากเมื่อปิดด้วยมือ โดยเฉพาะสำหรับ ผู้ใช้วีลแชร์
      ถ้าต้องการให้ผู้พิการควบคุมกระบวนการส่วนตัวอย่างการเข้าห้องน้ำได้ด้วยตัวเองมากที่สุด วิธีนี้อาจแทบเป็นทางเลือกเดียว
    • บริบทตรงนี้คือ ห้องน้ำที่ออกแบบมาสำหรับผู้พิการ ความพิการบางอย่างทำให้การใช้สลักหรือคันโยกยากมาก และในบริบทนั้น การกดปุ่มถือว่าเป็นวิธีควบคุมที่เข้าถึงได้ง่ายกว่า
    • ถ้าลองคิดเป็นการทดลองทางความคิด ระบบกลไกเปิดยากสำหรับพนักงานรถไฟในกรณีฉุกเฉิน และอาจเสียบ่อยกว่าเพราะคนผลักประตูทั้งที่มีคนใช้อยู่ ถ้าคุ้นกับระบบแล้ว เวลาปวดฉุกเฉินปุ่มเดียวอาจสะดวกกว่า และยังลดการสัมผัสมือจับหรือสลัก ทำให้รักษาความสะอาดง่ายขึ้น
      นอกจากนี้ที่สถานีสามารถล็อกอัตโนมัติเพื่อให้คนใช้เฉพาะระหว่างสถานีได้ ช่วยลดกลิ่นเหม็นระหว่างรอขึ้นลงรถ
    • ปัญหาเดียวของกลอนกลไกแบบเก่าคือมันไม่ “ทันสมัย” พอ กล่าวคือเรียบง่ายและคาดเดาได้เกินไป
      แต่ถ้าไม่มีอินเตอร์ล็อก กลอนกลไกก็ทำให้เกิด สภาวะปฏิเสธการให้บริการ ได้ง่ายเช่นกัน คนที่เคยล็อกรถหรืออาคารโดยทิ้งกุญแจไว้ข้างในย่อมจำได้ดี
  • การแฮ็กเชิงกลไก แบบนี้เห็นทีไรก็สนุกเสมอ ถึงอย่างนั้น คนโชคร้ายที่ยืนรอห้องน้ำแล้วพบว่ามันล็อกอยู่ทั้งที่ข้างในไม่มีใคร ก็อาจเป็นผมเองก็ได้
    ของแบบนี้ทดสอบยากกว่า และไม่ใช่แค่ปัญหาของซอฟต์แวร์หรือ state machine ง่าย ๆ เท่านั้น ยังมี “การแฮ็ก” เชิงกลไกที่อันตรายจริง ๆ เช่น เครื่องฉายรังสีรักษาอย่าง Therac-25 ที่ให้ปริมาณรังสีผิด

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

    • ความหลงใหลไมโครคอนโทรลเลอร์ มีอยู่จริง เช่นเดียวกับความอยากทำทุกอย่างด้วยซอฟต์แวร์แทนที่จะเป็นกลไก ตัวอย่างก็คือจอสัมผัสในรถยนต์ ในฐานะนักพัฒนา ฉันเข้าใจดีถึงวิธีคิดที่อยากทำให้ทุกอย่างเป็น software-defined เพื่อให้ภายหลังถ้าจำเป็นก็เปลี่ยนได้ทั้งหมด แต่ดูเหมือนมันจะนำไปสู่ผลลัพธ์ที่แย่ลงเรื่อย ๆ
      ได้ยินมาว่า “superloos” ซึ่งเป็นห้องน้ำล้างตัวเองอัตโนมัติที่ติดตั้งบนทางเท้า มีการจำกัดเวลา และจะเล่นเสียงเตือนก่อนเปิดประตูไม่กี่นาที สิ่งที่น่ากังวลกว่าคือมีกรณีที่ระบบล้างอัตโนมัติเริ่มทำงานตอนยังมีคนอยู่ข้างใน ถ้าคนก่อนหน้าจับประตูค้างไว้เพื่อประหยัดเงินให้คนถัดไปเข้าไป ห้องน้ำก็จะตัดสินว่าข้างในว่าง และพยายามทำให้ผู้ใช้ที่ “ไม่ได้รายงานตัว” เปียกโชกไปด้วยน้ำ
    • กลอนประตูรถไฟแบบนี้ยังส่งสถานะไปยัง ไฟแสดงว่ากำลังใช้งาน ที่ด้านหน้าของขบวนด้วย ดังนั้นจึงรู้ได้ว่าห้องน้ำว่างที่ใกล้ที่สุดอยู่ตรงไหน และตัดสินใจได้ว่าจะทนต่ออีกหน่อยหรือถ้าเร่งด่วนก็ไปยังตู้ที่ไกลกว่า
      นอกจากนี้ เมื่อไม่ได้ใช้งาน ประตูจะปิดเองเพื่อกันกลิ่น เหตุผลสำคัญที่สุดคือประตูไม่เป็นมิตรกับผู้ใช้รถเข็น ผู้ใช้รถเข็นจำนวนมากไม่มีแรงหรือความคล่องตัวพอจะขยับประตูได้ การออกแบบระบบประตูกลไกที่ตอบโจทย์ทั้งสามข้อนี้ค่อนข้างยาก แต่ UI ยังปรับให้ดีขึ้นได้แน่นอน
      โดยส่วนตัวคงออกแบบให้ต้องกดปุ่ม ‘ปิด’ ค้างไว้ตลอดเวลาที่ประตูกำลังปิด ถ้าปล่อยปุ่มกลางคัน ประตูก็เปิดกลับ และหลังจากปิดสนิทแล้วเท่านั้นจึงจะคงสถานะปิดและ ‘ล็อก’ ไว้ ไม่จำเป็นต้องมีกลอนกลไกจริง ๆ แต่ควรมีไฟสัญลักษณ์แม่กุญแจสีแดงขนาดใหญ่ที่ติดขึ้นมา
    • ส่วนใหญ่เป็นเพราะ การลดต้นทุนชิ้นส่วน สามารถใส่กลอนโซลินอยด์ที่แข็งแรงกับการควบคุมด้วยไมโครโปรเซสเซอร์ได้ถูกกว่าระบบกลไกล้วนที่แข็งแรง ระบบกลไกต้องมีการบำรุงรักษาเชิงกล และยังต้องรับมือกับอินพุตผิด ๆ สารพัดแบบ เช่น คนเอาน้ำหนักตัวทั้งหมดไปกดคันโยก
      ปุ่มที่เสมอกับพื้นผิวหรือคันโยกทรงเตี้ยแบบที่เห็นในภาพมีน้ำหนักและระยะเคลื่อนที่น้อย และไม่จำเป็นต้องให้ความได้เปรียบเชิงกล จึงอาจทนทานต่อการโจมตีทางกลบางอย่างได้มากกว่า ถ้าเป็นไปได้ฉันก็ชอบกลไกเรียบง่ายที่ไม่มีซอฟต์แวร์ แต่ก็ไม่ใช่คนที่ต้องรับมือกับปัญหาต้นทุนและความน่าเชื่อถือโดยตรง
    • เกี่ยวข้องกันนิดหน่อย เพิ่งรู้ว่า Boeing 737MAX จะเปลี่ยน คีย์บอร์ด CDU ในห้องนักบินเป็นจอสัมผัสที่จำลองคีย์บอร์ดเดียวกัน
      https://www.gableseng.com/wp-content/uploads/2020/05/G7330-....
      พูดไม่ออกเลย
    • ฉันก็เคยคิดคล้าย ๆ กัน แต่พออ่านเจอว่าจริง ๆ แล้วสำหรับคนที่มีปัญหาด้านการเคลื่อนไหวหรือกล้ามเนื้อ ปุ่มกด หรืออุปกรณ์อย่างคันโยกด้านบนนั้นง่ายกว่ามาก เพราะไม่ต้องใช้แรงกาย ก็เลยเปลี่ยนความคิด
      ดูเหมือนเหตุผลเดิมของการนำปุ่มมาใช้คือเรื่องการเข้าถึง และเข้าใจว่าเครื่องบินรุ่นใหม่ ๆ ก็พยายามย้ายไปใช้ระบบคล้ายกันด้วยเหตุผลเดียวกัน
  • ห้องน้ำบนรถไฟในอังกฤษเป็นกรณีคลาสสิกใน ตำราตัวอย่างการออกแบบแย่ คนที่ล็อกประตูไม่สำเร็จจะถูกเผยให้ผู้โดยสารในตู้เห็น บางคนปิดประตูไม่ได้ และบางคนก็เปิดไม่ออก
    นี่ยังพูดถึงกรณีที่ไปถึงห้องน้ำแล้วผู้ใช้ก่อนหน้าไม่ได้ทำให้มันเละเทะไว้ก่อนนะ

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