Mendapatkan root shell dari terminal kartu kredit
(stefan-gloor.ch)- Mencoba melakukan reverse engineering untuk penelitian keamanan pada terminal kartu kredit Worldline Yomani XR
- Dalam proses pembongkaran internal, ditemukan bahwa fitur deteksi intrusi fisik diimplementasikan dengan baik, namun ada masalah karena root shell terekspos ke port serial eksternal secara perangkat lunak
- Melalui dump memori serta ekstraksi dan analisis firmware, terkonfirmasi struktur sistem berbasis kernel Linux 3.6 dan berbagai komponen yang sangat tua
- Dibuktikan bahwa melalui port konsol serial, hak akses root dapat diperoleh dengan mudah dan malware dapat dipasang tanpa perlu membongkar perangkat
- Semua tugas penting terkait pembayaran dan autentikasi dijalankan pada prosesor keamanan terpisah, sehingga risiko paparan data penting yang sebenarnya tidak besar
Gambaran proyek
- Proyek ini berfokus pada proses reverse engineering model Worldline Yomani XR untuk tujuan penelitian keamanan terminal pembayaran
- Model ini banyak digunakan di seluruh Swiss; meski kini sudah dihentikan produksinya, perangkatnya masih dipakai di banyak peritel besar dan toko kecil
Pengamatan awal dan pembongkaran perangkat keras
- Setelah penyelidikan dasar seperti menelusuri UI dan memindai port, pembongkaran perangkat keras dimulai
- Terlihat tingkat keamanan perangkat keras yang cukup tinggi, termasuk beberapa PCB, casing dengan material yang tersusun baik, dan prosesor Arm dual-core berbasis ASIC kustom
- SoC utamanya adalah ASIC khusus dengan nama kode Samoa II, dengan flash dan RAM eksternal terpasang
Deteksi intrusi dan perlindungan anti-tamper
- Bahkan tanpa membuka casing, peristiwa intrusi dapat terdeteksi hanya karena kegagalan sambungan papan berbasis sensor tekanan (Zebra strip) atau baut yang mengendur
- Deteksi tetap aktif melalui baterai bahkan saat daya utama terputus
- Kerusakan pada jalur zigzag (trace) di PCB utama atau PCB fleksibel yang membungkus pembaca kartu akan memicu deteksi intrusi
- Setelah dibongkar sebentar lalu dirakit kembali, karena deteksi intrusi perangkat hanya menampilkan layar merah "TAMPER DETECTED" dan tidak merespons input eksternal
Ekstraksi firmware chip-off
- Flash onboard dilepas dengan desolder lalu dihubungkan langsung untuk mengekstrak firmware
- Datanya tidak dienkripsi, tetapi ditemukan struktur ECC yang unik serta penempatan metadata sistem berkas YAFFS2
- Dengan mengimplementasikan pembaca sistem berkas, seluruh daftar file berhasil diperoleh
- Sistem ini menggunakan kernel 3.6 berbasis Buildroot versi 2010, dengan uClibc, busybox, dan banyak pustaka lama
Proses menemukan root shell secara tidak sengaja
- Setelah analisis firmware, flash dipasang kembali dan jalur konsol serial dicari, lalu sinyalnya ditangkap menggunakan penganalisis logika
- Bersama log boot, prompt login juga terekspos
- Saat memasukkan "root", root shell langsung terbuka tanpa kata sandi
- Ternyata port serial ini benar-benar bisa diakses dari luar hanya dengan membuka penutupnya
- Penyerang dapat terhubung dengan cepat tanpa membongkar terminal, lalu menyuntikkan malware dan melakukan tindakan lain
Seberapa serius masalah ini?
- Dari analisis boot dan konfigurasi sistem, Linux hanya menangani jaringan, pembaruan, dan sebagian logika bisnis
- Pembayaran kartu, input PIN, tampilan, dan semua fungsi terkait keamanan dikelola oleh prosesor mp1 yang terpisah
- Linux (mp2) selalu melakukan boot terlebih dahulu, lalu image yang ditandatangani dan dienkripsi dimuat ke inti keamanan oleh bootloader aman
- Secara internal, perlindungan inti keamanan tetap berfungsi normal, dan data inti keamanan tidak bocor meski root shell terekspos
Jadwal pengungkapan dan pelaporan
- 14 November 2024: root shell ditemukan
- 15 November 2024: produsen diberi tahu dengan rencana pengungkapan 90 hari
- 18 November 2024: balasan konfirmasi laporan diterima dari produsen
- 1 Juni 2025: proyek dipublikasikan
Kesimpulan
- Paparan root shell melalui port serial eksternal jelas merupakan permukaan serangan yang tidak perlu sekaligus kesalahan rekayasa
- Namun, berkat desain pemisahan prosesor keamanan, risiko nyata kebocoran informasi pembayaran rendah
- Ada kemungkinan izin login root diterapkan secara keliru pada firmware produksi, atau berbeda tergantung versinya
- Dalam proses penelitian, ada juga beberapa perangkat yang fungsi login root-nya sepenuhnya dinonaktifkan
- Secara internal, masalah ini kemungkinan sudah diketahui dan telah diperbaiki
Proyek ini menghasilkan sejumlah temuan menarik dan kembali menunjukkan nilai dari eksplorasi firmware secara mendalam
1 komentar
Opini Hacker News
Sedikit pesan untuk para pengembang muda: inilah arti "hacker" dalam “Hacker News”; postingan ini direkomendasikan sebagai contoh yang dengan mudah menguraikan perjalanan hacker yang khas langkah demi langkah; jika ingin tahu kasus serupa, Hack-a-day layak dilihat; penulis tampak seperti sosok yang penuh rasa ingin tahu dan sangat kuat dalam dasar-dasarnya; pada intinya ini soal meneliti datasheet chip, melakukan desoldering tanpa merusak, menyambungkan kembali dengan kabel jika itu memori, improvisasi dan trial-and-error; lain kali, saat mengebor lubang dangkal, kamera pinhole mungkin patut dipertimbangkan untuk menghindari bekas kerusakan; dan andai penulis juga berhasil menembus pemeriksaan anti-tamper lalu membuatnya tetap berfungsi normal, itu pasti akan sangat menarik
Dijelaskan bahwa istilah hacker tidak terbatas pada keamanan komputer, melainkan punya makna yang jauh lebih luas dan definisi yang lebih filosofis; definisi hacker diperkenalkan dengan mengutip Jargon File yang dirangkum Guy Steele dkk.; misalnya, istilah itu bisa berarti “orang yang senang mempelajari detail sistem pemrograman dan memperluas batas-batasnya”, “orang yang benar-benar menikmati pemrograman”, hingga “pakar yang mahir pada program tertentu”; diduga PG, pendiri Hacker News, kemungkinan menamai situs itu dengan definisi luas ini dalam benaknya; ditambahkan pula bahwa sejarah istilah hacker juga wajib menyebut The UNIX-HATERS Handbook
Sangat setuju dengan kalimat pertama; kalau hari ini keluar satu wrapper LLM lagi, rasanya benar-benar akan muak
Ada pandangan bahwa karena situs ini lahir dari inkubator startup VC, sulit mengartikannya sebagai hacking keamanan; mungkin lebih dekat ke hacking ala startup "move fast and break things", yakni gaya menerobos masalah dengan cepat sambil terus menggelontorkan kode
Setelah lama hanya menjadi pembaca diam-diam dan baru belakangan membuat akun untuk mulai berkomentar, ada pujian bahwa postingan seperti inilah yang benar-benar menunjukkan semangat ‘hacker’ di Hacker News: kaya informasi dan penuh eksekusi nyata
Pengakuan bahwa ini pertama kalinya menekan tombol upvote pada sebuah postingan karena isinya benar-benar tentang hacking; biasanya upvote hanya diberikan ke komentar, tetapi postingan ini jadi pengecualian
Diperkenalkan bahwa dengan pembaca kartu USB seharga $2, transaksi kartu kredit/debit palsu bisa disimulasikan; semua spesifikasi dan protokolnya sangat besar tetapi terbuka, jadi secara teori bisa diimplementasikan hanya dengan membaca dokumentasinya; namun untuk benar-benar mendapatkan persetujuan transaksi, data harus dikirim ke bank melalui internet, dan kalau melakukan itu aparat berwenang (misalnya FBI) kemungkinan besar akan segera datang; pembaca kartu itu sendiri hampir tidak punya perlindungan (kebanyakan menjalankan Linux dan memakai kata sandi lemah), dan keamanannya pada dasarnya berasal dari kontrak dan aturan antara toko dan bank
Ada bantahan terhadap klaim bahwa pembaca kartu ‘tidak punya perlindungan’; kenyataannya hanya biner bertanda tangan yang bisa dijalankan, sistem file eksekusi bersifat read-only, sistem file data juga diberi flag
noexec, login root dinonaktifkan, busybox-nya dipangkas, kunci dimuat dari area aman saat boot, master key pun hanya bisa dimasukkan di pabrik, proses boot sendiri sangat aman, dan jika tamper terdeteksi chip akan mengosongkan dirinya sendiri; perangkat murah yang tidak tersertifikasi mungkin nyaris tak punya keamanan, tetapi menurut pengalaman seseorang yang pernah mengembangkan EMV, terminal sungguhan hampir terkunci sempurnaDiakui bahwa bagian tentang ‘aturan antara toko dan bank sebagai satu-satunya keamanan’ memang akurat; karena itu, teori konspirasi bahwa orang bisa mencuri uang dari kartu nirsentuh memakai pembaca kartu portabel sulit diwujudkan; sekalipun bisa membuat transaksi, hampir mustahil menarik uang itu dengan aman karena prosedur sesudahnya dan tahapan persiapan sebelumnya; terutama sekarang, notifikasi push transaksi kemungkinan besar akan membuat upaya kejahatan cepat ketahuan
Yang lebih dikhawatirkan adalah terminal kartu diretas di lapangan untuk membaca informasi CC yang di-cache atau dipasangi malware pencegat; inilah alasan riset di bidang ini dianggap penting
Dijelaskan bahwa pernyataan transaksi harus dikirim ke bank lewat internet agar disetujui itu tidak benar; bank tidak menyediakan open API di internet untuk memproses transaksi kartu
Tidak setuju bahwa keamanan pembaca kartu itu lemah; dijelaskan bahwa terminal toko nyata memiliki hardware aman bawaan untuk menyimpan kunci bank dan jaringan pembayaran, dan jika kunci itu bocor maka transaksi sah bisa dipalsukan
Ada pengalaman membeli dan memakai 36 pembaca Stripe M2, lalu 7 di antaranya rusak: 2 baterainya tidak bisa mengisi daya, 1 tidak bisa memindai NFC, dan 4 mati dengan error ‘tampered’; secara kasat mata tingkat kerusakannya tampak parah, tetapi konteks seperti jumlah hari pemakaian dan usia perangkat juga perlu dipertimbangkan; justru yang terasa lebih serius adalah 7 unit rusak padahal total pemakaian pembaca berusia 1–3 tahun itu hanya 9 hari; saat dipindahkan pun masing-masing disimpan rapi dalam hard-shell case dan foam insert, jadi bukan karena penyimpanan buruk; meski begitu, pembaca Stripe M2 tetap menjadi pilihan paling layak sehingga tetap terpakai; ditambahkan bahwa perusahaannya menangani pembayaran untuk festival, jadi perangkat-perangkat itu memang dipakai dalam jumlah besar hanya dalam waktu singkat
Ada bayangan bahwa ketika proteksi anti-tamper fisik aktif, root shell justru bisa terbuka; artinya sistem bisa saja masuk ke mode aman yang masih memiliki semua kunci kripto yang dibutuhkan, atau sebaliknya membuka root shell dan beralih ke mode debugging/analisis kerusakan; tetapi dalam kondisi begitu, diharapkan private key penting sudah otomatis dihapus
Bersama kutipan dari tulisan asli bahwa ‘meski root shell terbuka, data kartu tidak berada dalam bahaya’, materi ini direkomendasikan sebagai bacaan yang layak bagi para perancang keamanan
Ada pendapat bahwa Linux (yang sudah ditamper) menentukan apakah akan memuat kode “compromised mode” atau sistem keamanan mp1; meski bootloader itu sendiri aman, maknanya bisa berubah tergantung lingkungan tempat ia benar-benar berjalan; coprocessor bisa berperan seperti Secure Enclave, tetapi jika Linux dapat memuat bootloader lain maka itu bisa menjadi masalah keamanan yang serius
loadercodedanmp1.imgbersama-sama terlepas dari status tamper, lalu percabangan berdasarkan status tamper dilakukan di dalamloadercodeyang dilindungi integritasnyaUntuk pemula, disarankan mencoba terminal kartu kredit berbasis Android yang lebih modern terlebih dahulu; karena PIN dimasukkan lewat layar sentuh, tantangannya terasa lebih menarik
Dijelaskan bahwa kontroler sentuh umumnya terhubung ke MUX yang dikendalikan prosesor aman, dan saat informasi sensitif dimasukkan, input sentuh dikirim langsung ke prosesor aman tanpa melibatkan OS keluarga Android
Ditekankan bahwa meskipun PIN ditampilkan di touchpad, data PIN dikelola oleh firmware yang berjalan di trust zone dan tetap terenkripsi; aplikasi-aplikasi di tengah tidak bisa melihat PIN itu
Ada prediksi bahwa sekalipun terminal Android semacam ini diretas, jika desain keamanannya sama maka kartu itu sendiri melakukan kriptografi kompleks sehingga praktis tak ada informasi berguna yang bisa diambil; serangan seperti ini hanya efektif jika yang tersisa hanyalah pembaca kartu kredit, dan terminal seperti itu justru akan menjadi tanda bahaya skimmer bagi pengguna
Disebut singkat bahwa terminal Android yang dipakai di India masih berjalan dengan Android Oreo (dukungan berakhir Januari 2021), dan hal itu dianggap menarik
Ada reaksi heran mengapa begitu mulai menganalisis bagian dalam terminal, perangkat langsung dibuka dan mode tamper dipicu; diduga penulis mungkin tidak tahu bahwa kebanyakan pembaca memiliki deteksi tamper; menguji dalam mode tamper bisa mengurangi makna hasilnya, dan mungkin saja setelah tamper terpicu memang ada shell yang dibuka untuk keperluan inisialisasi ulang; sebagai penutup, disarankan untuk mempertimbangkan lagi apakah membuka perangkat sejak awal memang langkah yang paling wajar
Ada pujian bahwa ‘meski proteksi anti-tamper sangat ketat, masih banyak celah pem-bypass-an dan jejak menarik yang tersisa’, dan bahwa bagian keamanan memang dirancang untuk gagal dengan aman
Ditekankan bahwa prosesor yang diperkeras (
mp1) masih belum bisa ditembus; sebenarnya yang dilakukan hanyalah mengirim string teks ke binerdisplay_tooluntuk bertukar pesan dengan prosesor lain; card reader, keypad, dan komponen serupa tidak bisa diakses langsung dari Linux, karena semua penanganan ‘aman’ seperti kartu, input PIN, dan tampilan layar sepenuhnya dikelola prosesormp1yang terpisah, sedangkan Linuxmp2hanya menangani jaringan, pembaruan, dan logika bisnisAda skenario risiko bahwa sisi Linux mungkin bertugas mendeteksi penanganan event tamper, tetapi jika penghapusan security key baru bisa dilakukan setelah tamper sepenuhnya terdeteksi, maka alurnya bisa saja dibalik: root shell didapat dulu, lalu tamper di-bypass kemudian, yang akan berbahaya
Ada pengalaman bahwa perangkat semacam ini tersebar di seluruh Eropa; Swiss memang belum pasti, tetapi di banyak wilayah Eropa yang dikenal orang tersebut, kepemilikan kartu kredit terasa tidak terlalu umum; sementara terminal POS dapat membaca berbagai macam kartu, sehingga menurutnya lebih tepat disebut ‘sistem POS’; bagaimanapun, postingannya tetap menyenangkan untuk dibaca