1 คะแนน โดย GN⁺ 2023-12-06 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • นักวิจัย 3 คนทำวิศวกรรมย้อนกลับโค้ด PLC ของรถไฟ NEWAG Impuls EMU เป็นเวลาประมาณ 1 ปี หลังพบปัญหารถไฟหยุดทำงานหลังเข้าซ่อมที่อู่บุคคลที่สาม
  • ผู้ผลิตกล่าวโทษว่าเกิดจาก ความผิดพลาดในการซ่อมบำรุง และยืนยันให้ซ่อมกับบริษัทตนเอง แต่ในโค้ดมีลอจิกที่ล็อกรถไฟด้วยข้อผิดพลาดปลอมเมื่อเข้าเงื่อนไขบางอย่าง
  • คอนโทรลเลอร์บางเวอร์ชันพยายามแยกแยะอู่ซ่อมบุคคลที่สามด้วย พิกัด GPS และสามารถปลดล็อกได้ด้วยชุดปุ่มในห้องคนขับที่ไม่ได้มีเอกสารระบุไว้
  • ในซอฟต์แวร์ PLC รุ่นถัดมา การปลดล็อกด้วยชุดปุ่มถูกนำออกไปแล้ว แต่ ลอจิกการล็อก ยังอยู่ และหลังอัปเดตบางรายการ HMI ถึงกับแสดงคำเตือนเรื่องการละเมิดลิขสิทธิ์
  • อุปกรณ์เทเลเมทรี GSM ของรถไฟส่งข้อมูลเงื่อนไขการล็อก และในบางกรณีก็ดูเหมือนมีความเป็นไปได้ที่จะล็อกรถไฟจากระยะไกลได้

การทำวิศวกรรมย้อนกลับโค้ด PLC ของ NEWAG Impuls EMU

  • q3k, redford, mrtick ทำวิศวกรรมย้อนกลับโค้ด PLC ของรถไฟ NEWAG Impuls EMU เป็นเวลาประมาณ 1 ปี
  • รถไฟที่เป็นปัญหามีอาการถูกล็อกด้วยเหตุผลแบบสุ่ม หลังได้รับการซ่อมบำรุงจาก อู่ซ่อมบุคคลที่สาม
  • ผู้ผลิตอ้างว่าสาเหตุเกิดจากความผิดพลาดในการซ่อมบำรุงของอู่บุคคลที่สาม และยืนยันว่าควรซ่อมกับผู้ผลิต ไม่ใช่บุคคลที่สาม

เงื่อนไขการล็อกที่อยู่ในโค้ด

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

วิธีปลดล็อกที่ไม่มีเอกสารระบุไว้และการเปลี่ยนแปลงภายหลัง

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

คำเตือนบน HMI และเทเลเมทรี GSM

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

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

 
GN⁺ 2023-12-06
ความคิดเห็นบน Hacker News
  • รถไฟเหล่านี้ถูกใช้แบบแทบผูกขาดโดยบริษัททางรถไฟท้องถิ่นจำนวนไม่น้อยในโปแลนด์ ระดับการซ่อมบำรุงมี 5 ระดับ ตั้งแต่ P1 ไปจนถึง P5 ซึ่งซับซ้อนที่สุด โดยในอดีตมีแต่บริษัทใหญ่ ๆ ที่รับงานตั้งแต่ P3 ขึ้นไป แต่เมื่อไม่กี่ปีที่ผ่านมา European Union Agency For Railways เปิดตลาด ทำให้คู่แข่งรายเล็กเริ่มชนะการประมูลด้วยราคาที่ต่ำกว่ามาก
    เรื่องเริ่มจากรถไฟ 4 ขบวนที่ SPS Mieczkowski ซ่อมบำรุงแล้วถึงขั้นสตาร์ตไม่ติด บริษัทจึงต้องจ่าย ค่าปรับ €500,000 และรถไฟถูกส่งกลับไปที่ Newag ในเวลาเดียวกัน รถไฟของบริษัทอื่น ๆ ก็ขยับไม่ได้เช่นกัน เพียงเพราะจอดอยู่ที่เดียวกันนานเกินไป แม้ยังไม่ได้เข้าซ่อมบำรุงด้วยซ้ำ สุดท้าย SPS Mieczkowski จ้าง Dragon Sector ให้ตรวจสอบ และพบรูทีนแยกหลายชุดที่ทำให้รถไฟถูกปิดใช้งาน
    เหตุการณ์นี้อยู่ระหว่างการสอบสวนของ Central Anti-Corruption Bureau ของโปแลนด์ แต่ยังน่าสงสัยว่าจะสร้างผลกระทบหนักต่อ Newag หรือไม่ Office of Rail Transport ของโปแลนด์เป็นหน่วยงานที่เคยถล่มเรื่องร้องเรียนและออกคำสั่งแม้กับความผิดพลาดเล็ก ๆ ในตารางรถไฟ แต่ในกรณีนี้กลับถอนตัวจากการแทรกแซง และการจัดซื้อรถไฟก็มีขั้นตอนประมูลที่เข้มงวดมากจนบริษัททางรถไฟแทบไม่มีช่องให้ขยับ

    • เรื่องนี้ดูเป็น ความผิดฐานก่อวินาศกรรมตามมาตรา 254a ของประมวลกฎหมายอาญาโปแลนด์อย่างชัดเจน ขั้นตอนการประมูลไม่ใช่ประเด็นสำคัญในคดีนี้ แค่ต้องมีอัยการที่มีความสามารถเท่านั้น
      https://sip.lex.pl/akty-prawne/dzu-dziennik-ustaw/kodeks-kar...
    • Internal Security Agency ก็กำลังสอบสวนอยู่เช่นกัน และดูเหมือน Newag จะหลีกเลี่ยงปัญหาใหญ่ได้ยาก ภายในองค์กรเองก็รับเรื่องนี้ว่า ร้ายแรงอย่างยิ่ง
      มีหลักฐานมากมายมหาศาลที่จะพิสูจน์ว่าเกิดอะไรขึ้น โอกาสหลุดรอดจึงแทบไม่มี ถึงอย่างนั้นก็ยังพยายามเอาตัวรอดโดยอ้างว่าถูกแฮ็ก ประมาณว่าแฮกเกอร์แฟลชเฟิร์มแวร์ของรถไฟที่คู่แข่งเป็นผู้ซ่อมบำรุงจนทำให้รถไฟกลายเป็นก้อนอิฐ ทั้งที่ พิกัด GPS ของเส้นทางรถไฟคู่แข่งถูกฮาร์ดโค้ดไว้อย่างชัดเจน
    • Impuls 2 ซึ่งเป็นรุ่นใหม่กว่านั้นถูกใช้นอกโปแลนด์ด้วย FSE ของอิตาลีใช้งานอยู่ 11 ขบวน
      อย่างไรก็ตาม เมื่อคิดว่า Newag ยังอยากขยายตลาดในอิตาลีต่อ ก็น่าจะไม่ได้ก่อวินาศกรรมรถไฟเหล่านั้นด้วย แน่นอนว่าอาจคิดว่าต่อให้เผาลูกค้าใหม่ไปด้วยก็ไม่เป็นไรก็ได้
  • มีลิงก์ไปยังบทความที่ยาวกว่าและรายละเอียดเพิ่มเติมถูกฝังอยู่ในคอมเมนต์
    ภาษาโปแลนด์:
    https://zaufanatrzeciastrona.pl/post/o-trzech-takich-co-zhak...
    https://wiadomosci.onet.pl/kraj/awarie-pociagow-newagu-haker...
    ภาษาอังกฤษ:
    https://zaufanatrzeciastrona-pl.translate.goog/post/o-trzech...
    https://wiadomosci-onet-pl.translate.goog/kraj/awarie-pociag...
    หากเสริมบริบท โปแลนด์แบ่งออกเป็น voivodship 16 แห่ง และหลังการปฏิรูปช่วงต้นทศวรรษ 2000 แทบทุกภูมิภาคมีบริษัททางรถไฟท้องถิ่นของตัวเองและร่วมมือกัน แทบทุกคนรู้กันอยู่แล้วมานานกว่าหนึ่งปีว่ามีเรื่องน่าสงสัยเกิดขึ้นกับรถไฟของ Newag รถไฟที่บริษัทหลายแห่งเป็นเจ้าของเสียต่อเนื่อง และบริษัทเหล่านี้ใช้ผู้ให้บริการซ่อมบำรุงภายนอก ไม่ใช่ Newag ดังนั้นผู้ให้บริการซ่อมบำรุงจึงจ้างแฮกเกอร์ และต้องใช้เวลาพอสมควรในการทำ reverse engineering เพื่อเข้าใจอย่างแม่นยำว่าเกิดอะไรขึ้น

    • ผมเป็นคนโปแลนด์เลยรู้ว่า województwo หมายถึงอะไร แต่ไม่รู้มาก่อนว่ามีคำคู่กันในภาษาอังกฤษว่า voivodship พออ่านใน Wikipedia แล้วก็น่าสนใจดี
      https://en.wikipedia.org/wiki/Voivodeship
  • ทำให้นึกถึง AARD “crash” ที่ Microsoft เคยใช้เพื่อทำลายการแข่งขันของ DR-DOS ในทางปฏิบัติ
    โค้ด AARD เป็นชิ้นส่วนโค้ดที่อยู่ใน Microsoft Windows 3.1 รุ่นเบต้า ออกแบบมาเพื่อตรวจว่า Windows กำลังรันอยู่บนผลิตภัณฑ์ที่เข้ากันได้ของคู่แข่งอย่าง DR-DOS หรือไม่ แทนที่จะเป็น MS-DOS หรือ PC DOS และถ้าใช่ก็จะแสดงข้อความผิดพลาดที่เข้าใจยาก โค้ดภาษาเครื่องที่เข้ารหัสแบบ XOR แก้ไขตัวเองได้ และจงใจทำให้อ่านยากนี้ใช้โครงสร้างและฟังก์ชันของ DOS ที่ไม่ได้มีการจัดทำเอกสารไว้หลายอย่าง
    https://en.wikipedia.org/wiki/AARD_code
    https://www.geoffchappell.com/notes/windows/archive/aard/drd...
    https://news.ycombinator.com/item?id=36042213

    • ถ้าเป็น Microsoft ก็ฟังดูเป็นไปได้ นี่คือบริษัทเดียวกันที่เคยบอก Compaq ว่าถ้าขายพีซีที่ติดตั้ง OS/2 Warp แม้แต่เครื่องเดียว ก็จะไม่ได้ขายพีซีที่ติดตั้ง Windows อีกต่อไป
      สุดท้ายแล้วมนุษย์นี่แหละที่ทำให้ของดี ๆ อยู่ได้ไม่นาน OS/2 Warp เป็นระบบปฏิบัติการที่ยอดเยี่ยม
    • โค้ด AARD เป็น คำเตือนที่ไม่ร้ายแรง ซึ่งไม่ได้ขัดขวางการใช้งาน Windows และจริง ๆ แล้วก็ไม่เคยถูกปล่อยออกมา ในรุ่นสุดท้ายมันถูกแพตช์ให้เข้าถึงไม่ได้ อาจเป็นการแพตช์ไบนารีเพื่อหลีกเลี่ยง regression และลดเวลาบิลด์ที่ยาวนาน อีกทั้งยังมีปัญหาใหญ่เรื่องการจัดแพ็กเพื่อปรับตำแหน่งข้อมูลบนฟลอปปีดิสก์ให้เหมาะสมด้วย
      อนึ่ง DR-DOS เป็นผลิตภัณฑ์ที่ถึงทางตันตั้งแต่ตอนออกวางจำหน่ายแล้ว เห็นได้ชัดมากว่าผู้คนและ OEM จะไม่ซื้อระบบปฏิบัติการสองตัวพร้อมกัน คือระบบปฏิบัติการแบบกราฟิก กับ DOS ที่ทำตัวเหมือน bootloader ของระบบปฏิบัติการกราฟิกนั้น ความคิดที่ว่าตลาด DOS 16 บิตแบบข้อความล้วนที่ใช้งานเดี่ยวจะคงอยู่ได้อย่างมีนัยสำคัญเป็นเวลานานนั้นเป็นภาพลวงตาโดยสิ้นเชิง และ DR-DOS ก็ไม่ได้สำคัญในแง่ยอดขายด้วย ต่อให้โค้ด AARD เข้าไปอยู่ใน Windows 3.x รุ่นสุดท้ายจริง ๆ ก็คงไม่ทำให้อะไรเปลี่ยนไป
    • กรณีนี้ไม่ได้เหมือนกันเท่าไร AARD crash เป็นการ ทำลายความเข้ากันได้ โดยเจตนา ส่วนเรื่องนี้ใกล้เคียงกับ planned obsolescence มากกว่า
      การที่รถไฟถูกปิดใช้งานถ้าจอดทิ้งไว้ “นานเกินไป” นี่ Microsoft ก็คงอยากควบคุมแพลตฟอร์มได้ถึงระดับนั้นเหมือนกัน
    • ตามบทความบอกว่าฟีเจอร์นั้นไม่ได้ถูกเปิดใช้งาน ถ้าอย่างนั้นก็สงสัยว่ามันถูกใช้ทำลายการแข่งขันของ DR-DOS ได้อย่างไร
    • ถ้าจ่าย ค่าสินไหมทดแทน 280 ล้านดอลลาร์ เพื่อแลกกับการยึดครองระบบปฏิบัติการทั่วโลกได้หลายปี ก็นับว่าค่อนข้างถูก
  • หลังโพสต์นี้ถูกเผยแพร่ ราคาหุ้น Newag ตกลงไปพอสมควร นี่จะเป็นกรณีแรกของ การปรับราคาจาก Mastodon หรือเปล่า?
    https://g.co/kgs/WVku4C

    • ถึงอย่างนั้นก็ยัง +10% ในรอบ 1 เดือน และ +25% ในรอบ 3 เดือน
    • สื่อโปแลนด์ก็รายงานเรื่องนี้ด้วย ดังนั้นคงไม่ได้เกิดจาก Mastodon อย่างเดียว
  • เมื่อวันที่ 21 พฤศจิกายน 2022 มีสถานการณ์ที่ค่อนข้างตลกคือขบวนรถไฟอีกขบวนหนึ่งซึ่งไม่ได้กำลังวิ่งอยู่ด้วยซ้ำปฏิเสธที่จะทำงาน คอมพิวเตอร์รายงานว่าคอมเพรสเซอร์เสีย แต่เมื่อช่างตรวจสอบก็พบว่าคอมเพรสเซอร์ไม่มีปัญหาใด ๆ ถึงอย่างนั้นรถไฟก็ยังไม่ยกแพนโทกราฟขึ้น และเมื่อวิเคราะห์โค้ดคอมพิวเตอร์ก็พบเงื่อนไขที่บังคับให้เกิดความเสียหาย
    ลักษณะคือถ้าวันที่ตั้งแต่วันที่ 21 ขึ้นไป เดือนตั้งแต่พฤศจิกายนขึ้นไป และปีตั้งแต่ 2021 ขึ้นไป ให้รายงานว่า คอมเพรสเซอร์เสีย

    • ถ้าตีความในแง่ดี ผู้ผลิตคอมเพรสเซอร์อาจใส่ วันหมดอายุ ไว้เพื่อรับประกันว่าจะมีการเปลี่ยนชิ้นส่วนสำคัญ แต่คงมีโอกาสสูงกว่าแค่ว่าเป็นธุรกิจที่น่าสงสัย
    • อาชญากรรมที่แท้จริงคือการไม่ใช้ไลบรารีวันที่/เวลามาตรฐานกับการเปรียบเทียบง่าย ๆ แบบ > 2021-11-21
    • เหตุผลที่เขียนโค้ดแบบนี้อาจเป็นเพื่อไม่ให้วันที่เฉพาะเจาะจงปรากฏตรง ๆ ในโค้ดที่คอมไพล์แล้ว
  • ผู้ผลิตรายนี้ไม่ได้ทำให้โครงสร้างพื้นฐานสำคัญเป็นอัมพาต แล้วจับโปแลนด์เป็น ตัวประกัน อย่างแท้จริงหรือ? เป็นอาชญากรรมที่กล้าบ้าบิ่นจนน่าเชื่อยาก และผมไม่ค่อยมั่นใจว่าจะรอดไปได้ง่าย ๆ

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

    • หมายถึงมีบุคคลที่สามทำ code review หรือ? ปกติมีเรื่องแบบนั้นด้วยหรือ?
      เรื่องนี้ดูชัดเจนว่าผู้ผลิตรถไฟตั้งใจ และผู้ผลิตเป็นคนสั่งให้เขียนโค้ดนั้น ไม่น่าจะเป็นสถานการณ์ที่แฮกเกอร์แอบใส่เข้าไปโดยที่ผู้ดูแลไม่รู้ เลยสงสัยว่าใครจะเป็นคนทำ code review อะไร
      พออ่านคอมเมนต์อื่น ๆ ดูเหมือนบทความที่อยู่บนสุดของ HN เปลี่ยนไปแล้ว และคอมเมนต์บางส่วนเขียนอิงจากบทความที่มีข้อมูลน้อยกว่ามาก ดังนั้นคอมเมนต์เลยดูสับสน
    • โค้ดนั้นน่าจะผ่านการรีวิวอย่างเหมาะสม และคงผ่านการทดสอบค่อนข้างจริงจังด้วย เดาได้จากการมี geofence พร้อมเงื่อนไข trigger เพิ่มเติม
  • น่าเสียดายที่รถไฟของ Newag มีคุณภาพค่อนข้างดีกว่าผู้ผลิตโปแลนด์อีกรายอย่าง Pesa ดูเหมือนว่าจะเชื่อถือได้สูงเกินไป จนต้องสร้างความเสียหายเทียมขึ้นมาเอง

  • สงสัยว่าใครเป็นคนเขียนโค้ดเงื่อนไขอันตรายเหล่านี้ และใครบ้างที่รู้เรื่อง ไม่มีใครคิดจะเป็น whistleblower เลยหรือ?
    อนึ่ง มีหน้าประเมินบริษัทโดยพนักงานแบบไม่ระบุตัวตนอยู่: https://www.gowork.pl/opinie_czytaj,19587
    ดูเหมือนเป็น สภาพแวดล้อมการทำงานที่เป็นพิษ พอสมควร

    • ในฐานะนักพัฒนาซอฟต์แวร์ ถ้าถูกสั่งให้ทำเรื่องแบบนี้ ต้องขอ คำสั่งเป็นลายลักษณ์อักษร ให้ได้
  • น่าสนใจว่าสถานการณ์นี้จะส่งผลต่อสัญญากับ Akiem บริษัทให้บริการรถไฟของยุโรปอย่างไร Akiem ได้ทำสัญญามูลค่า 164 ล้านยูโรกับ Newag สำหรับบริการและรถไฟสำหรับฝรั่งเศส
    [1] https://biznes.pap.pl/pl/news/all/info/3509606,newag-inks-eu...