- Jika sistem pihak maskapai dalam alur autentikasi KCM/CASS milik TSA berhasil ditembus, penyerang dapat menambahkan pengguna sembarang seolah-olah sudah lolos verifikasi status kerja, yang bisa berujung pada melewati pemeriksaan keamanan atau bahkan akses ke kokpit
- FlyCASS menyediakan antarmuka web CASS untuk maskapai kecil, dan login administrator dapat dilakukan melalui SQL injection pada halaman login Air Transport International
- Layar administrator dapat memberikan hak KCM dan CASS saat menambahkan karyawan baru tanpa verifikasi tambahan, sehingga pengguna uji terlihat berstatus disetujui di kedua sistem
- Setelah diungkapkan kepada ARINC, FAA, dan DHS/CISA pada akhir April 2024, DHS mengonfirmasi bahwa FlyCASS telah dipisahkan dari KCM/CASS, tetapi tidak menanggapi permintaan koreksi atas penjelasan TSA
- TSA menyatakan akses ke checkpoint tidak mungkin karena ada pemeriksaan sebelum penerbitan barcode KCM, tetapi dalam prosedur sebenarnya masih ada jalur input manual ID karyawan, sehingga dampak kerentanan ini lebih besar
Verifikasi yang Ditangani KCM dan CASS
- Known Crewmember(KCM) adalah program TSA yang memungkinkan pilot dan awak kabin melewati pemeriksaan keamanan bahkan saat melakukan perjalanan pribadi domestik
- Karyawan menunjukkan barcode KCM di jalur khusus, atau memberikan nomor karyawan dan maskapai kepada petugas TSA
- Laptop petugas TSA memeriksa status kerja ke maskapai, dan jika berhasil, karyawan tersebut dapat masuk ke area aman tanpa pemeriksaan terpisah
- Cockpit Access Security System(CASS) adalah sistem terpisah yang memverifikasi kelayakan akses ke kokpit
- Sebagian besar pesawat memiliki jumpseat di dalam kokpit, di belakang pilot yang menerbangkan pesawat
- Saat pilot perlu commuting atau berpindah lokasi dan sulit memakai kursi berbayar, mereka dapat menggunakan jumpseat
- Petugas gate dapat menggunakan CASS untuk memastikan pengguna jumpseat adalah pilot yang disetujui, dan memberi tahu awak bahwa autentikasi CASS telah dilakukan
- Inti dari kedua prosedur ini adalah memastikan status kerja saat ini di maskapai
- Jika seseorang bukan karyawan maskapai, ia belum berada dalam status yang telah menjalani pemeriksaan latar belakang, sehingga tidak boleh diizinkan melewati pemeriksaan keamanan atau mengakses kokpit
- Foto awak juga dikembalikan untuk memastikan orang tersebut memang pihak yang disetujui
ARINC dan Sistem Autentikasi per Maskapai
- ARINC adalah anak perusahaan Collins Aerospace, dan tampaknya ditugaskan oleh TSA untuk mengoperasikan KCM
- ARINC mengoperasikan komponen pusat seperti situs web online tempat pilot dan awak kabin memeriksa status KCM, serta API yang merutekan permintaan persetujuan antar-maskapai
- Setiap maskapai tampaknya mengoperasikan sistem autentikasinya sendiri untuk berpartisipasi dalam KCM dan CASS, dan sistem ini berinteraksi dengan hub ARINC
- TSA dan maskapai dapat mengirim permintaan seperti
CockpitAccessRequest,CrewVerificationRequestke ARINC - ARINC merutekan permintaan ke sistem maskapai terkait dan menerima respons
- TSA dan maskapai dapat mengirim permintaan seperti
- Saat ini ada 77 maskapai yang berpartisipasi dalam KCM
- Maskapai besar kemungkinan membuat sistem sendiri, tetapi bagaimana maskapai kecil merespons permintaan KCM atau CASS menjadi target investigasi
SQL Injection yang Ditemukan di FlyCASS
- Para peneliti mencari vendor yang benar-benar mengoperasikan sistem autentikasi dan menemukan situs bernama FlyCASS
- FlyCASS menyediakan antarmuka berbasis web untuk CASS bagi maskapai kecil
- Setiap maskapai memiliki halaman login terpisah, dan Air Transport International(8C) dapat diakses di
/ati
- Ketika tanda kutip tunggal dimasukkan ke nama pengguna pada halaman login, error MySQL langsung dikembalikan
- Nama pengguna tampaknya dimasukkan langsung ke kueri SQL login
- Masalah SQL injection dikonfirmasi dengan sqlmap
- Dengan kombinasi nama pengguna
' or '1'='1dan kata sandi') OR MD5('1')=MD5('1, mereka dapat login ke akun administrator Air Transport International
Menambahkan Pengguna yang Disetujui KCM/CASS dengan Hak Administrator
- FlyCASS mengoperasikan baik KCM maupun CASS untuk maskapai yang berpartisipasi
- Setelah memperoleh hak administrator Air Transport International, daftar pilot dan awak kabin yang terkait dengan maskapai tersebut dapat dikelola
- Saat menambahkan karyawan baru ke maskapai, tidak ada konfirmasi atau autentikasi tambahan
- Administrator maskapai dapat menambahkan siapa pun sebagai pengguna yang disetujui KCM dan CASS
- Untuk pengujian, dibuat karyawan bernama
Test TestOnly, dimasukkan foto uji yang dipilih, lalu diberikan hak akses KCM dan CASS- Setelah diperiksa melalui fitur Query, pengguna uji tersebut berstatus disetujui baik di KCM maupun CASS
- Dengan pengetahuan dasar SQL injection saja, seseorang dapat login ke situs dan menambahkan pengguna sembarang ke KCM dan CASS
- Akibatnya, ini bisa memungkinkan seseorang melewati pemeriksaan keamanan dan bahkan mengakses kokpit pesawat penumpang komersial
- Segera setelah masalah pertama ditemukan, proses pengungkapan dimulai, dan beberapa masalah serius lain juga ditemukan
Proses Pengungkapan dan Tanggapan TSA
- Mencari kontak pengungkapan yang tepat saja tidak mudah
- FlyCASS tampaknya dioperasikan oleh satu orang, sehingga para peneliti tidak ingin langsung menghubungi FlyCASS sejak awal dan mengejutkannya
- Pada 23 April 2024, masalah ini diungkapkan kepada Department of Homeland Security, dan DHS mengonfirmasi telah mengetahuinya serta “menanggapinya dengan sangat serius”
- Setelah itu FlyCASS dinonaktifkan dari KCM/CASS, dan belakangan masalahnya tampaknya telah diperbaiki
- Setelah masalah diperbaiki, para peneliti berusaha mengoordinasikan pengungkapan yang aman, tetapi DHS berhenti merespons
- Kantor humas TSA mengeluarkan penjelasan yang menyangkal dampak kerentanan tersebut
- TSA mengatakan proses pemeriksaan dimulai sebelum barcode diterbitkan untuk anggota KCM baru, sehingga kerentanan ini tidak dapat digunakan untuk mengakses checkpoint KCM
- Namun barcode KCM tidak wajib untuk menggunakan checkpoint KCM, dan TSO dapat memasukkan ID karyawan maskapai secara manual
- Setelah para peneliti memberi tahu TSA tentang hal ini, TSA menghapus bagian situs web yang menyebutkan input manual ID karyawan, dan tidak menanggapi permintaan koreksi
- Antarmuka yang digunakan TSO dikonfirmasi masih mengizinkan input manual ID karyawan
Serangan Tambahan yang Mungkin Dilakukan dan Linimasa Pengungkapan
- Karena kerentanan ini memungkinkan pengubahan anggota KCM yang sudah ada, mengubah foto dan nama pengguna terdaftar yang sudah ada juga dimungkinkan
- Metode ini berpotensi melewati prosedur pemeriksaan anggota baru sekalipun prosedur itu ada
- Jika barcode KCM yang belum terdaftar dapat diperoleh, barcode tersebut juga dapat didaftarkan langsung ke ID karyawan di situs web KCM
- Linimasa pengungkapan:
- 2024-04-23: Pengungkapan awal kepada ARINC dan FAA
- 2024-04-24: Pengungkapan tambahan kepada DHS melalui CISA
- 2024-04-25: CISO DHS mengonfirmasi bahwa pekerjaan perbaikan sedang berlangsung
- 2024-05-07: CISO DHS mengonfirmasi bahwa FlyCASS telah dipisahkan dari KCM/CASS
- 2024-05-17: Menindaklanjuti penjelasan TSA kepada CISO DHS, tetapi tidak ada respons
- 2024-06-04: Kembali menindaklanjuti penjelasan TSA kepada CISO DHS, tetapi tidak ada respons
1 komentar
Pendapat di Hacker News
Respons TSA di sini kekanak-kanakan dan memalukan, tetapi tidak terlalu mengejutkan jika mengingat ini adalah organisasi yang sebenarnya tidak terlalu peduli pada keamanan.
DHS pada awalnya tampak menangani laporan dengan cepat dan profesional, tetapi menarik bahwa setelah itu mereka tidak mampu mempertahankan kewenangan tingkat atas atas proses perbaikan dan publikasi sampai akhir.
Saya pernah melihat masalah besar seperti kunci yang terekspos diperlakukan sepele, sementara hal-hal seperti library JavaScript lama atau tidak adanya dukungan IPv6 justru dieskalasi.
Jelas TSA dan para kontraktornya berusaha mengecilkan potensi eksposur, tetapi besar kemungkinan banyak manajer sulit memahami arti kerentanan, dan para developer juga sedang mengecilkan tanggung jawab mereka sendiri sambil menyalahkan pihak lain.
Dalam praktiknya, tujuannya tampak seperti memperkuat sistem pengawasan dan menciptakan tampilan luar yang terlihat kuat.
Mereka tidak berhenti pada memastikan adanya SQL injection, tetapi bahkan membuat rekaman karyawan palsu; mengejutkan bahwa Homeland Security tidak datang menangkap pihak-pihak terkait.
Saya kira Homeland Security adalah pihak yang paling mungkin salah mengira responsible disclosure sebagai peretasan jahat dan menyebutnya demikian.
Hal ini lebih mengesankan daripada inkompetensi kerentanan itu sendiri.
Kalau mereka menambahkan diri mereka ke Known Crewmember dan benar-benar melewati pemeriksaan bandara, saat itu mereka pasti masuk penjara.
Maka talenta terbaik dari negara lain yang kurang bersahabatlah yang akan melihatnya, dan kecil kemungkinan mereka akan mengungkapkannya secara bertanggung jawab.
https://bugcrowd.com/engagements/dhs-vdp
Karena sudah punya hubungan selama beberapa tahun, saya kira mereka cukup terbiasa. TSA sendiri mungkin kurang terbiasa, tetapi mengingat DHS menjalankan kebijakan pengungkapan kerentanan (VDP) untuk seluruh departemen dan melalui CISA juga memberi saran kepada departemen lain tentang pengoperasian VDP, rasanya mereka tidak akan meminta DOJ mengajukan dakwaan.
Namun mungkin saja saya terlalu optimistis.
Dengan begitu risiko dituntut karena responsible disclosure bisa dikurangi.
Cara yang lebih aman adalah mengirim laporan secara anonim dan menetapkan tenggat yang jelas untuk publikasi atau full disclosure, meski tentu saja dalam kasus ini sulit diakui sebagai penemunya.
Saking parahnya, bahkan pada saat tulisan ini dibuat pun belum ada yang membahas seburuk apa masalah penyimpanan kata sandi dengan MD5.
Dalam kasus ini juga terlihat bahwa salt pun tidak digunakan, dan pada MD5, memakai salt saja tetap tidak memadai.
Namun jika hanya dengan request orang bisa mengacak-acak query SQL itu sendiri sesuka hati, sebaik apa pun kata sandi disimpan tidak terlalu berarti.
Proporsi yang memakai salt sekaligus hash yang aman secara kriptografis mungkin di bawah 20%, dan MD5 benar-benar sering muncul.
Mengingat sebelum wawancara ini pun kandidat sudah cukup banyak disaring, baseline keseluruhannya lebih buruk lagi.
Penjelasan “FlyCASS tampak seperti dioperasikan oleh satu orang, jadi kami tidak menghubunginya lebih dulu” sulit dipercaya.
Rasanya mereka tahu developer situs itu akan langsung memperbaikinya, dan mereka ingin membuat temuan mereka meledak lebih besar.
Ini bukan sesuatu yang cukup diperbaiki diam-diam oleh penanggung jawab; semua orang di database harus diverifikasi ulang.
Jika satu-satunya developer langsung memperbaikinya, akan sulit mengangkat masalah ini ke tingkat atas agar diperbaiki secara sistematis.
Entah perombakan menyeluruh seperti itu benar-benar akan terjadi atau tidak, tetapi tanpa eskalasi kemungkinannya lebih kecil.
Tidak mengejutkan bahwa mereka menyangkal tingkat keparahan masalahnya, tetapi cukup mengejutkan bahwa mereka tidak memberi tahu FBI atau mencoba menangkapnya.
Mungkin ini kemajuan kecil.
Jika melapor langsung ke TSA, sangat mungkin berujung pada ancaman hukum dan gertakan.
Saya berani bertaruh 50 dolar bahwa Ian akan didakwa.
Sampai-sampai mengejutkan bahwa remaja 17 tahun yang bosan dengan identitas palsu belum mengunggah video menyelinap naik pesawat ke TikTok.
SQL injection, ya ampun.
Lucu bahwa satu SQL injection jadul bisa melumpuhkan seluruh teater keamanan bernilai puluhan miliar dolar per tahun, tetapi juga tidak terlalu mengejutkan.
Cukup mengejutkan bahwa maskapai membeli perangkat lunak yang begitu sensitif terhadap keamanan dari perusahaan satu orang
Jika Anda sampai pada tahap tertentu untuk menjual SaaS ke sebagian besar perusahaan AS, setidaknya laporan audit SOC2 akan diminta
SOC2, jika dilihat sebagai standar audit, tergolong cukup mudah dilalui tanpa temuan besar, tetapi jika sebuah perusahaan dijalankan oleh satu orang, ada beberapa kriteria yang seharusnya menyalakan lampu merah dalam laporan tersebut
Saya kira perangkat lunak yang terintegrasi dengan sistem akses TSA akan memiliki persyaratan yang jauh lebih ketat daripada SOC2
Semua hal di backend mereka disatukan dengan lakban lebih banyak daripada bisnis kecil rata-rata
Jika Anda membeli beberapa pesawat penumpang tua lalu mengubahnya menjadi pesawat kargo, Anda bisa menjadi “maskapai”
Apakah munculnya maskapai baru itu sesuatu yang bernilai? Haruskah mereka ditutup hanya karena belum memiliki sistem yang butuh bertahun-tahun hingga puluhan tahun untuk dibangun? Haruskah perusahaan yang mengoperasikan 1 rute antara tempat antah-berantah dengan tempat antah-berantah lain memakai 2 pesawat membayar mahal untuk sistem khusus bagi maskapai penumpang besar?
Di sini, persyaratan dan audit bukan jawabannya. Masalah desain mendasarnya adalah TSA menggabungkan autentikasi “maskapai XXX mengatakan Anda adalah karyawannya” dengan kewenangan yang sangat luas untuk “melewati semua pemeriksaan keamanan di bandara mana pun di seluruh negeri”, bahkan tanpa pemeriksaan dasar seperti “apakah maskapai itu memang beroperasi di bandara ini?”
Saya juga terkejut bahwa hal seperti ini bisa semudah itu, tetapi penjelasan respons TSA di bagian akhir benar-benar sangat meresahkan
Orang-orang yang melakukan ini mungkin akan mendapat kunjungan dari Homeland Security atau FBI
Entah mereka pikir bisa mendapatkan apa
Saya tidak melihat pemerintah peduli pada keamanan, tetapi mereka memang retaliatif
Teknik yang mungkin di sini adalah membeli tiket maskapai besar, memasukkan barang terlarang ke bagasi kabin, lalu menambahkan diri sendiri ke daftar Known Crew Member maskapai kecil melalui injeksi SQL pada sistem FlyCASS pihak ketiga untuk melewati pemeriksaan TSA
Lalu apakah ini kerentanan yang memungkinkan naik ke pesawat besar sambil membawa barang terlarang?
Saat ini sebagian besar antrean pemeriksaan TSA bahkan tidak meminta boarding pass, jadi secara teori orang bisa membawa bom dan melewati semua sandiwara keamanan ini