- Kereta Impuls 45WE buatan Newag di Polandia tidak bisa berangkat setelah perawatan independen meski diagnosis menunjukkan normal, sehingga bengkel SPS meminta Dragon Sector melakukan rekayasa balik pada komputer onboard
- Para peneliti menganalisis bus CAN, melakukan dump memori berbasis TriCore, dan menyempurnakan Ghidra untuk menemukan flag penguncian serta kondisi startup dalam perangkat lunak, lalu membuat kereta bisa bergerak lagi
- Pada kode sejumlah kereta ditemukan kondisi yang mencegah startup jika berada di koordinat GPS bengkel tertentu selama lebih dari 10 hari, penguncian setelah penggantian komponen, kondisi gagal setelah 1 juta km, dan kondisi pelaporan kerusakan kompresor berbasis tanggal
- Total ada 29 kereta yang dianalisis, dan kecuali 5 unit, ditemukan “surprises” di luar pedoman operasi resmi; masalah ini meluas ke berbagai wilayah seperti Wrocław, Opole, Krakow, Szczecin, dan Warsaw
- Kasus ini berlanjut ke gugatan hukum dan penyelidikan aparat penegak hukum, tetapi tidak ada tindakan konkret dari lembaga perlindungan konsumen/persaingan atau otoritas transportasi perkeretaapian yang terkonfirmasi
Kereta Newag Impuls berhenti setelah perawatan
- Kasus ini bermula pada musim semi 2022, ketika kereta pertama dari 11 unit Impuls 45WE buatan Newag yang dioperasikan Lower Silesian Railways tidak bisa berangkat setelah menyelesaikan perawatan wajib 1 juta km
- Perawatan ditangani oleh bengkel independen Serwis Pojazdów Szynowych(SPS)
- Newag juga ikut tender, tetapi penawaran pabrikan sekitar 750 ribu dolar lebih mahal
- SPS memenangkan tender dengan nilai sekitar 5,5 juta dolar untuk merawat 11 unit
- SPS membongkar, memeriksa, dan merakit ulang kereta sesuai manual perawatan setebal sekitar 20 ribu halaman yang diberikan pabrikan, tetapi meski komputer onboard menunjukkan status normal, kereta tetap tidak bergerak
- Inverter tidak memasok tegangan ke motor, dan teknisi perawatan tidak dapat menemukan penyebabnya hanya dengan manual serta pemeriksaan listrik dan mekanis
Penghentian berulang dan risiko kontrak yang membesar
- Kereta kedua juga berhenti dengan cara yang sama setelah perawatan identik, dan pabrikan Newag menolak membantu
- Kereta ketiga melewatkan inspeksi karena masalah baterai, dan kereta keempat masuk ke bengkel sebagai gantinya
- Saat kereta keempat yang beroperasi normal dihubungkan ke kereta yang mogok, kereta normal itu juga ikut berhenti
- Penyebabnya belum diketahui hingga kini
- Di bengkel lain di Szczecin, juga muncul kasus kereta Impuls yang tidak bisa dinyalakan setelah perawatan
- Dengan 6 rangkaian panjang milik Lower Silesian Railway tidak tersedia, jadwal dipangkas, kereta pengganti dikerahkan, dan rangkaian yang lebih pendek menjadi padat
- Newag menjelaskan bahwa kereta diblokir oleh “sistem keselamatan”, tetapi di manual 20 ribu halaman tidak ada penyebutan sistem tersebut
- Setiap kereta yang tertahan di bengkel menimbulkan denda kontraktual lebih dari 1.000 dolar per hari, sehingga beban SPS makin besar
Rekayasa balik oleh Dragon Sector
- SPS mencari “Polish hackers”, menemukan Dragon Sector yang dikenal lewat CTF, lalu kedua pihak menandatangani kontrak
- Proyek ini melibatkan Michał “Redford” Kowalczyk, Sergiusz “q3k” Bazański, dan Kuba “PanKleszcz” Stępniewicz
- Redford dan q3k dikenal dari peretasan laptop Toshiba
- Kuba memiliki pengalaman di otomasi industri
- Di lokasi, para peneliti menerima kereta yang tidak bisa bergerak, 2 komputer cadangan, dan file SDK dari pabrikan komputer
- Analisis awal dimulai dengan menyadap bus CAN, tetapi tanpa dokumentasi protokol, lalu lintasnya sulit ditafsirkan
- SDK hanya mendukung unggah perangkat lunak baru dan tidak memiliki fungsi dump perangkat lunak yang ada
- Saat versi perangkat lunak lama yang mereka temukan diunggah ke komputer cadangan pertama, komputer itu menjadi tidak responsif
- Para peneliti melanjutkan pekerjaan hanya dengan 1 komputer cadangan yang tersisa
- Pada akhirnya mereka menemukan antarmuka debugging dan mengunduh memori perangkat per byte
- Komputer onboard berbasis arsitektur TriCore yang juga digunakan di bidang otomotif, dan karena kurangnya disassembler yang baik, mereka menyempurnakan sebagian Ghidra untuk menganalisis kode
Kondisi startup ditemukan tepat sebelum tenggat
- Setelah sekitar satu setengah bulan, Lower Silesian Railway memutuskan tidak bisa menunggu lebih lama dan memilih bekerja sama dengan Newag untuk memperbaiki serta merawat kereta yang rusak
- Pengakhiran kontrak dengan SPS diperkirakan terjadi seminggu kemudian, dan para peneliti harus menunjukkan hasil dalam waktu yang tersisa
- Para peneliti membandingkan image memori komputer dari kereta normal dan kereta rusak
- Karena tiap kereta memiliki set fitur dan versi perangkat lunak berbeda, perbandingan sederhana tidak mudah dilakukan
- Mereka menemukan perbedaan nilai yang di beberapa kereta terisi, tetapi di kereta lain bernilai 0
- Bahkan saat komputer dilepas dari kereta, komputer masih bisa dijalankan sebentar untuk memeriksa status kesiapan operasi inverter, sehingga pengujian di meja kerja memungkinkan
- Kurang dari sehari sebelum tenggat, mereka menemukan konfigurasi flag yang berpotensi membuat kereta bergerak, tetapi saat eksperimen kapasitor pada komputer onboard normal terakhir terbakar
- Setelah mencoba menggabungkan 2 komputer yang rusak, mereka berhasil memperbaiki komputer yang terbakar dan mengaturnya pada pukul 2 dini hari untuk menyalakan kereta
- Seorang peneliti membawa komputer itu ke bengkel, tetapi kereta terlambat tiba, dan setelah terpasang di lokasi pun kereta awalnya masih tidak mau menyala
- Setelah diskusi tambahan, mereka menemukan satu flag yang terlewat dan berhasil menyalakan kereta pada pukul 8:42 pagi
- Pada pukul 9:30 pagi, delegasi Lower Silesian Railway mengonfirmasi kemungkinan kereta bisa dihidupkan kembali, dan kontrak dengan SPS tidak jadi diputus
Kondisi penguncian yang tersembunyi dalam kode
- Selama berbulan-bulan analisis dan rekayasa balik, ditemukan berbagai kondisi dalam perangkat lunak kereta yang dipasok Newag yang dapat menyebabkan kereta tiba-tiba tidak bisa beroperasi
- Angka seperti
53.13845,17.99011dalam kode ternyata adalah koordinat GPS yang menunjuk ke area PESA dekat Bydgoszcz Główny Railway Station - Setelah itu ditemukan juga koordinat bengkel lain di Polandia yang dapat melakukan perawatan dan perbaikan
- Dalam kode terdapat kondisi yang menonaktifkan kemampuan startup jika kereta berada di salah satu area bengkel tertentu selama setidaknya 10 hari
- Salah satu koordinat adalah bengkel milik Newag sendiri
- Untuk koordinat bengkel Newag, ada kondisi logika lain yang didefinisikan, dan diduga digunakan untuk tujuan pengujian
- Pada kereta lain juga ditemukan kondisi penguncian terpisah
- Jika komponen tertentu diganti, kereta diblokir melalui verifikasi nomor seri komponen
- Tersedia opsi untuk membuka kunci dengan menekan urutan tombol tertentu pada kabin masinis dan layar komputer onboard
- Setelah keberhasilan startup Impuls diberitakan media, kereta-kereta itu menerima pembaruan perangkat lunak yang menghapus opsi “fix” tersebut
- Pada kereta lain ditemukan kode yang memerintahkan kereta “rusak” setelah 1 juta km
Laporan kerusakan kompresor yang dipicu kondisi tanggal
- Kereta lain menolak beroperasi pada 21 November 2022 meski saat itu tidak sedang menjalani perawatan
- Komputer melaporkan kerusakan kompresor, tetapi teknisi menilai tidak ada masalah pada kompresor
- Hasil analisis kode menunjukkan kondisi berikut
- jika hari >= 21
- dan bulan >= 11
- dan tahun >= 2021
- maka laporkan kerusakan kompresor
- Kereta tersebut awalnya dijadwalkan untuk perawatan pada November 2021, tetapi sebenarnya masuk bengkel lebih awal dan baru kembali pada Januari 2022
- Pada November 2021 kondisi itu kebetulan tidak aktif, dan baru pada 21 November 2022 kondisi kerusakan terjadwal itu terpenuhi
Perangkat koneksi GSM yang ditemukan di perangkat keras
- Keanehan tidak hanya ditemukan di perangkat lunak, tetapi juga di perangkat keras
- Pada satu set kereta, para peneliti menemukan perangkat bertanda “UDP<->CAN converter”
- Perangkat itu tampak memungkinkan komunikasi jarak jauh dengan kereta
- Tidak ada fungsi yang berhenti bekerja meski perangkat itu dilepas
- Komputer onboard mengirimkan informasi status penguncian ke perangkat tersebut, dan perangkat itu sendiri terhubung ke modem GSM
Masalah meluas ke berbagai wilayah dan skala analisis
- Kabar bahwa SPS berhasil memperbaiki kereta Newag yang “rusak” menyebar ke perusahaan lain, dan terungkap bahwa masalah serupa cukup umum
- Di Wrocław, 13 unit Impuls dianalisis
- Kereta bermasalah juga dikonfirmasi di wilayah lain
- 1 unit Kolej Mazowieckie
- 2 unit Opole
- 4 unit Krakow
- 1 unit Zielona Góra
- 4 unit Szczecin
- 1 unit Warsaw
- Alat yang dibuat para peneliti menghapus penguncian perangkat lunak pada komputer onboard, dan tiap kereta dapat diperbaiki
- Total perangkat lunak dari 29 unit dianalisis, dan kecuali 5 unit, ditemukan elemen di luar pedoman operasi resmi
Tindak lanjut dan cakupan pengungkapan
- Kasus ini sedang dalam proses gugatan hukum
- Tidak diketahui apakah Office of Consumer and Competition Protection atau Railway Transport Office di Polandia telah mengambil langkah konkret
- Para peneliti melaporkan temuan ini ke CERT Polska
- CERT Polska memberi tahu “otoritas terkait”
- Kasus ini sedang ditangani aparat penegak hukum
- Isi ini merupakan ringkasan singkat dari presentasi Jakub Stępniewicz, Sergiusz Bazański, dan Michał Kowalczyk di konferensi Oh My H@ck pada 5 Desember 2023
- Teks asli menyebut bahwa sebagian besar analisis teknis lengkap sengaja dihilangkan, dan menyatakan harapan agar para peneliti menerbitkan dokumen teknis terpisah
1 komentar
Komentar di Hacker News
Ada juga tulisan terbaru terkait: Polish trains lock up when serviced in third-party workshops - https://news.ycombinator.com/item?id=38530885 - Desember 2023, 347 komentar
Tidak masuk akal bisa seberani ini. Kode yang membuat lokomotif jadi brick kalau koordinat GPS berada di area bengkel pesaing selama lebih dari 10 hari
Ini jauh melampaui sekadar membuat perbaikan sulit lewat antarmuka yang tidak terdokumentasi atau firmware bertanda tangan kriptografis; menurut saya ini mendekati perusakan properti secara jahat. Saya tidak tahu sistem hukum Polandia, tapi sulit membayangkan bagaimana hal seperti ini bisa lolos begitu saja
Kereta sudah ada dan harus beroperasi, tetapi perusahaan pemeliharaan/perbaikan tidak bisa memodifikasi perangkat lunak secara legal karena hak cipta. Benar-benar jalan buntu. Saya berharap perusahaan itu kena denda besar dan bahkan tuntutan pidana, tetapi saya ragu apakah itu benar-benar akan terjadi
Tim hukum yang bersemangat seharusnya bisa menemukan dakwaan serius yang dapat diterapkan. Apalagi jika kereta atau lokomotif tersebut termasuk infrastruktur kritis, meski itu belum tentu pasti
Menyisipkan handshake rahasia dan membuat dokumentasi prosedur buruk agar pesaing terlihat tidak kompeten adalah satu hal; secara sengaja merusakkan produk sendiri karena masuk ke bengkel pesaing adalah level yang sama sekali berbeda
Judulnya agak menyesatkan. “Gate” dalam kasus ini bukan seperti Dieselgate, yaitu menipu soal ramah lingkungan agar lolos sertifikasi dalam kondisi buatan, melainkan mensimulasikan kerusakan palsu
Perusahaan tersebut meng-hardcode algoritma yang, jika berdasarkan informasi lokasi menilai bahwa perusahaan lain telah memperbaiki kereta, akan melaporkan komponen yang sebenarnya berfungsi normal seperti kompresor seolah-olah rusak dan menghentikan operasi kereta
Tentu kedua kasus itu tidak mungkin sepenuhnya sama, tetapi tampak jelas mengapa analogi tersebut muncul
Yang pertama adalah membuat kereta tidak berfungsi setelah berada 10 hari di lokasi bengkel pesaing berdasarkan GPS. Yang kedua adalah meng-hardcode firmware tertentu agar berpura-pura terjadi kerusakan kompresor beberapa hari setelah jadwal pemeliharaan berikutnya
Bagian terburuknya adalah: “Sulit menemukan lembaga di Polandia yang menunjukkan lebih dari sekadar ketertarikan sopan terhadap masalah ini. Kami juga tidak tahu apakah Kantor Perlindungan Konsumen dan Persaingan atau Kantor Transportasi Kereta Api telah mengambil tindakan apa pun”
Lembaga perlindungan konsumen tidak memiliki kewenangan sekuat lembaga-lembaga ini
Diskusi dari tulisan sebelumnya tentang artikel terkait juga layak dilihat: https://news.ycombinator.com/item?id=38530885
Solusi untuk masalah kontrol mesin yang aneh seperti manipulasi uji emisi dan penghalangan perbaikan pihak ketiga mungkin adalah standardisasi antarmuka pada sistem semacam ini
Jika keluaran sensor distandardisasi, berbagai komponen bisa ditukar-pasang untuk memastikan sistem tidak sedang menipu regulator
[1]: https://wheelsports.co/formula-1s-standardised-ecu-explained...
Saya punya teman dengan WRX; mobilnya tidak punya katalis, memakai turbo besar dan sudah di-tuning, jadi semestinya tidak mungkin lolos uji emisi. Namun data sensornya disintesis dan mengendalikan bagian terkait, sehingga tidak ada kode error dan selalu lolos tanpa masalah
Akan bagus kalau lubang hitam bernama firmware dihilangkan dan audit menjadi memungkinkan
Tidak perlu sampai standardisasi total; keterbukaan saja sudah cukup. Namun pada dasarnya arahnya memang benar
Tampaknya mereka memakai perangkat lunak untuk melakukan penghalangan secara sengaja agar orang tidak bisa memakai layanan pihak ketiga yang lebih murah daripada layanan produsen
Saya penasaran dengan putusan pengadilannya
Memang bermasalah ketika pembuat undang-undang, pengadilan, dan publik tersesat saat menghadapi isu teknis, tetapi kejahatan ini seharusnya cukup bisa dimasukkan ke dalam hukum pidana yang sudah ada terkait tindakan penghalangan. Caranya memang “baru”, tetapi kejahatannya sendiri klasik
Kesan saya, kualitas firmware kereta secara umum tidak terlalu bagus, dan saya berharap skandal ini mendorong peninjauan yang lebih ketat.
Tiga tahun lalu, Deutsche Bahn secara terbuka mengeluhkan masalah perangkat lunak yang “aneh” pada kereta Bombardier yang baru dikirim. Misalnya, ketika masinis mengubah arah perjalanan, perangkat lunak kereta crash, dan butuh 1 jam untuk boot ulang [0]. Swiss juga mengalami masalah serupa pada 2018 [1].
Sebagai ilmuwan komputer, ini memalukan. Bandingkan saja dengan kereta lama buatan Jerman Timur tahun 1980-an [2] yang sampai belum lama ini masih menarik gerbong Jerman Barat era 1950-an [3] di sini. Hampir tidak ada, atau bahkan sama sekali tidak ada, elektronik digital, dan tidak ada waktu boot. Semuanya langsung bekerja. Kalau tidak, masinis biasanya tahu bagian mesin mana yang perlu dipukul dengan palu agar beres. Kita tidak bisa mengharapkan masinis meretas firmware kereta dan menjalankan gdb untuk mencari tahu kenapa kereta tidak bergerak.
[0] https://www.sueddeutsche.de/wirtschaft/deutsche-bahn-ic-1.47...
[1] https://bahnblogstelle.com/33872/twindexx-swiss-express-soft...
[2] https://de.wikipedia.org/wiki/DR-Baureihe_243
[3] https://de.wikipedia.org/wiki/N-Wagen
Perusahaan yang membuat benda yang berisi perangkat lunak tidak berada di pasar yang siap membayar talenta perangkat lunak 2–3 kali lipat seperti dulu. Yang tersisa adalah orang-orang yang menganggap unsur “menarik” itu sebagai bagian dari selisih kompensasi total, serta orang-orang yang tidak bisa masuk ke tempat kerja yang membayar lebih tinggi. Sebagian besar sistem kritis keselamatan yang kita pakai dibuat oleh orang-orang seperti ini. Bandingkan kompensasi developer di X dan SpaceX, dan terlihat bagaimana pasar bekerja. Faktor menarik memang masuk ke kompensasi total, tetapi akibatnya juga muncul orang-orang yang bukan developer bagus beralih ke perancangan proses dan alat baru di bidang ini. Mereka bisa saja berpegang pada tren full-stack yang sudah lewat masanya dan mencoba menerapkannya pada firmware kereta. Saya tidak akan heran jika di Jira ada teks 10 kali lebih banyak daripada di Git, pengembangannya scrumfall, dan mereka memasukkan REST API atau arsitektur berorientasi layanan ke sistem tertanam yang kritis untuk keselamatan.
Kecuali kira-kira Tc3 dari Beckhoff, bidang ini bahkan belum benar-benar sampai ke pemrograman berorientasi objek, dan seluruh bidangnya masih terperangkap di tambang blue screen masa lalu. Kompleksitas dikelola dengan dokumen standar yang tipis, tidak ada version control, sementara mesin menjadi makin kompleks dari sisi sensor dan aktuator. Mesin modern tidak bisa diperlakukan seperti perangkat tertanam hobi berukuran kecil, tetapi industri melakukannya begitu. Programmer dari luar kadang masuk dan menghasilkan banyak uang dengan menyelesaikan masalah-masalah kemarin memakai arsitektur perangkat lunak yang layak dan praktik pengembangan C. Namun industri tidak belajar dari situ. Bagi mereka, pembuatan perangkat lunak selamanya tidak akan menjadi profesi spesialis.
Banyak kereta modern mengalami masalah perangkat lunak untuk operasi dasar [0] dan penundaan persetujuan perangkat lunak [1]. Namun kemunduran terburuk menurut saya adalah hilangnya kompatibilitas. Rangkaian kereta listrik modern pada dasarnya hanya bisa bekerja bersama rangkaian dari batch yang sama. Bahkan untuk model yang sama, jika dua perusahaan memesannya secara terpisah, sering kali keduanya tidak cocok; dan memakai bersama rangkaian dari perusahaan berbeda atau dengan selisih waktu pemesanan lebih dari 10 tahun hampir harus dianggap mustahil. Sebaliknya, sebelum era digital, lazim mengoperasikan trem dari generasi berbeda bersama-sama dan menyesuaikannya dengan mengubah kabel. Gerbong-gerbong lama bisa bekerja bersama tanpa masalah, tetapi tidak mudah mengoperasikan IC2 bersama Railjet, atau RailJet bersama ICE-L. Sering juga hanya kombinasi lokomotif dan gerbong tertentu yang bisa bekerja.
Sistem terkomputerisasi jauh lebih sulit dibuat agar bisa bekerja bersama karena kompleksitasnya tinggi dan opasitasnya besar. Papan rangkaian logika tradisional umumnya bisa direkayasa balik dengan cukup mudah, tetapi rekayasa balik perangkat lunak adalah pekerjaan yang sangat spesialis. Fenomena ini juga tampak jelas di bidang lain yang interoperabilitasnya sangat memburuk setelah berpindah ke protokol digital proprietary.
Ini sebagian karena perangkat lunak bersifat opak sehingga lebih sulit disetujui dibanding teknologi sebelumnya, tetapi kekurangan kualitas nyata juga besar. Salah satu alasan Bombardier jatuh ke kesulitan besar juga perangkat lunak yang buruk, sampai kontrak untuk lebih dari 40 unit yang dipesan dibatalkan ([2]).
Menurut saya, membuat perangkat lunak yang dapat dipercaya dan dipahami jauh lebih sulit daripada membuat rangkaian logika atau sistem mekanis. Saya tidak tahu solusinya, tetapi ini masalah yang sudah berlangsung lama.
[0]: https://www.vrt.be/vrtnws/de/2013/02/12/belgische_bahn_storn...
[1]: https://www.augsburger-allgemeine.de/augsburg/Neue-Zuege-auf...
[2]: https://de.wikipedia.org/wiki/Bombardier_Talent_3#%C3%96BB
Hanya mengonsumsi konten berbahasa Inggris. Konten dari negara lain hanya tersentuh jika bocor lewat media besar
Jadi penasaran ada berapa banyak konten bagus yang sebenarnya bisa diterjemahkan
Namun, setidaknya di kalangan yang lebih terdidik di dunia, bahasa Inggris kini secara ironis telah menjadi lingua franca, dan banyak orang yang lebih nyaman dengan bahasa ibu mereka pun menerjemahkan karya terbaiknya ke bahasa Inggris agar dibaca lebih luas. Makalah ilmiah adalah contoh utamanya. Mungkin hadiah terbesar yang diberikan Inggris kepada dunia adalah bahasa Inggris
Namun saya pertama kali mengetahui seluruh soal vendor lock-in kereta ini dari HN. Kalau tidak, mungkin saya sama sekali tidak akan tahu, atau baru mengetahuinya beberapa minggu atau bulan kemudian