Hampir semua program yang mengubah kode sumber yang dapat dibaca manusia menjadi kode mesin yang dapat dieksekusi komputer rentan terhadap serangan berbahaya di mana musuh dapat memasukkan kerentanan yang ditargetkan ke dalam perangkat lunak apa pun tanpa terdeteksi. Pengungkapan kerentanan dikoordinasikan dengan beberapa organisasi, beberapa di antaranya sekarang merilis pembaruan untuk mengatasi kelemahan keamanan.
Para peneliti di University of Cambridge menemukan bug yang memengaruhi sebagian besar kompiler kode komputer dan banyak lingkungan pengembangan perangkat lunak. Yang dipermasalahkan adalah komponen standar pengkodean teks digital Unicode, yang memungkinkan komputer untuk bertukar informasi terlepas dari bahasa yang digunakan. Unicode saat ini mendefinisikan lebih dari 143.000 karakter di 154 skrip bahasa yang berbeda (selain banyak set karakter non-skrip, seperti emoji).
Secara khusus, kelemahannya melibatkan algoritme bi-directional atau “Bidi” Unicode, yang menangani tampilan teks yang mencakup skrip campuran dengan urutan tampilan yang berbeda, seperti bahasa Arab — yang dibaca dari kanan ke kiri — dan bahasa Inggris (kiri ke kanan).
Tetapi sistem komputer perlu memiliki cara deterministik untuk menyelesaikan arah yang saling bertentangan dalam teks. Masukkan “Bidi override”, yang dapat digunakan untuk membuat teks dari kiri ke kanan dibaca dari kanan ke kiri, dan sebaliknya.
“Dalam beberapa skenario, urutan default yang ditetapkan oleh Algoritma Bidi mungkin tidak cukup,” tulis para peneliti Cambridge. “Untuk kasus ini, Bidi menimpa karakter kontrol yang memungkinkan pengalihan urutan tampilan grup karakter.”
Bidi menimpa memungkinkan bahkan karakter skrip tunggal untuk ditampilkan dalam urutan yang berbeda dari pengkodean logisnya. Seperti yang ditunjukkan oleh para peneliti, fakta ini sebelumnya telah dieksploitasi untuk menyamarkan ekstensi file malware yang disebarkan melalui email.
Inilah masalahnya: Sebagian besar bahasa pemrograman memungkinkan Anda menempatkan penggantian Bidi ini dalam komentar dan string. Ini buruk karena sebagian besar bahasa pemrograman mengizinkan komentar di mana semua teks — termasuk karakter kontrol — diabaikan oleh kompiler dan juru bahasa. Selain itu, ini buruk karena sebagian besar bahasa pemrograman mengizinkan literal string yang mungkin berisi karakter arbitrer, termasuk karakter kontrol.
“Jadi Anda dapat menggunakannya dalam kode sumber yang tampaknya tidak berbahaya bagi pengulas manusia [yang] sebenarnya dapat melakukan sesuatu yang buruk,” kata Ross Anderson, seorang profesor keamanan komputer di Cambridge dan rekan penulis penelitian. “Itu berita buruk untuk proyek-proyek seperti Linux dan Webkit yang menerima kontribusi dari orang-orang acak, membuat mereka ditinjau secara manual, kemudian memasukkannya ke dalam kode penting. Kerentanan ini, sejauh yang saya tahu, yang pertama mempengaruhi hampir semua hal.”
Makalah penelitian, yang menjuluki kerentanan “Sumber Trojan,” mencatat bahwa sementara komentar dan string akan memiliki semantik khusus sintaks yang menunjukkan awal dan akhir mereka, batas ini tidak dihormati oleh Bidi override. Dari kertas:
Anderson mengatakan serangan seperti itu bisa menjadi tantangan bagi peninjau kode manusia untuk dideteksi, karena kode sumber yang diberikan terlihat sangat dapat diterima.
“Jika perubahan logika cukup halus untuk tidak terdeteksi dalam pengujian berikutnya, musuh dapat memperkenalkan kerentanan yang ditargetkan tanpa terdeteksi,” katanya.
Yang juga memprihatinkan adalah bahwa karakter override Bidi bertahan melalui fungsi salin dan tempel di sebagian besar browser, editor, dan sistem operasi modern.
“Setiap pengembang yang menyalin kode dari sumber yang tidak tepercaya ke dalam basis kode yang dilindungi dapat secara tidak sengaja memperkenalkan kerentanan yang tidak terlihat,” kata Anderson kepada KrebsOnSecurity. “Penyalinan kode seperti itu adalah sumber signifikan dari eksploitasi keamanan dunia nyata.”
Matthew Green, seorang profesor di Institut Keamanan Informasi Johns Hopkins, mengatakan penelitian Cambridge dengan jelas menunjukkan bahwa sebagian besar kompiler dapat ditipu dengan Unicode untuk memproses kode dengan cara yang berbeda dari yang diharapkan pembaca untuk diproses.
“Sebelum membaca makalah ini, gagasan bahwa Unicode dapat dieksploitasi dengan cara tertentu tidak akan mengejutkan saya,” kata Green kepada KrebsOnSecurity. “Apa yang mengejutkan saya adalah berapa banyak kompiler yang akan dengan senang hati mengurai Unicode tanpa pertahanan apa pun, dan seberapa efektif teknik pengkodean kanan-ke-kiri mereka dalam menyelundupkan kode ke dalam basis kode. Itu trik yang sangat pintar yang saya bahkan tidak tahu itu mungkin. Astaga.”
Green mengatakan kabar baiknya adalah bahwa para peneliti melakukan pemindaian kerentanan yang meluas, tetapi tidak dapat menemukan bukti bahwa ada orang yang mengeksploitasi ini. Belum.
“Kabar buruknya adalah tidak ada pertahanan untuk itu, dan sekarang orang-orang mengetahuinya, mereka mungkin mulai mengeksploitasinya,” kata Green. “Semoga pengembang kompiler dan editor kode akan menambal ini dengan cepat! Tetapi karena beberapa orang tidak memperbarui alat pengembangan mereka secara teratur, setidaknya akan ada beberapa risiko untuk sementara waktu.”
Nicholas Weaver, seorang dosen di departemen ilmu komputer di University of California, Berkeley, mengatakan penelitian Cambridge menyajikan “serangan yang sangat sederhana dan elegan yang dapat membuat serangan rantai pasokan jauh, jauh lebih buruk.”
“Sudah sulit bagi manusia untuk mengatakan ‘ini baik-baik saja’ dari ‘ini jahat’ dalam kode sumber,” kata Weaver. “Dengan serangan ini, Anda dapat menggunakan pergeseran arah untuk mengubah bagaimana hal-hal dirender dengan komentar dan string sehingga, misalnya ‘Ini baik-baik saja’ adalah bagaimana itu dirender, tetapi ‘Ini’ oke adalah bagaimana itu ada dalam kode. Untungnya, ini memiliki tanda tangan yang sangat mudah untuk dipindai, sehingga kompiler dapat [mendeteksi] jika mereka menemukannya di masa mendatang.”
Paruh terakhir dari makalah Cambridge adalah studi kasus yang menarik tentang kompleksitas pengaturan pengungkapan kerentanan dengan begitu banyak bahasa pemrograman dan perusahaan perangkat lunak yang terpengaruh. Para peneliti mengatakan mereka menawarkan periode embargo 99 hari setelah pengungkapan awal mereka untuk memungkinkan produk yang terpengaruh diperbaiki dengan pembaruan perangkat lunak.
“Kami bertemu dengan berbagai tanggapan mulai dari menambal komitmen dan karunia bug hingga pemecatan cepat dan referensi ke kebijakan hukum,” tulis para peneliti. “Dari sembilan belas pemasok perangkat lunak yang terlibat dengan kami, tujuh menggunakan platform outsourcing untuk menerima pengungkapan kerentanan, enam memiliki portal web khusus untuk pengungkapan kerentanan, empat pengungkapan yang diterima melalui email terenkripsi PGP, dan dua pengungkapan yang diterima hanya melalui email non-PGP. Mereka semua mengkonfirmasi penerimaan pengungkapan kami, dan akhirnya sembilan dari mereka berkomitmen untuk merilis patch.”
Sebelas penerima memiliki program hadiah bug yang menawarkan pembayaran untuk pengungkapan kerentanan. Namun dari jumlah tersebut, hanya lima bounty yang dibayar, dengan pembayaran rata-rata $2.246 dan kisaran $4.475, para peneliti melaporkan.
Anderson mengatakan sejauh ini sekitar setengah dari organisasi yang memelihara bahasa pemrograman komputer yang terkena dampak yang dihubungi telah menjanjikan tambalan. Yang lain menyeret kaki mereka.
“Kami akan memantau penyebaran mereka selama beberapa hari ke depan,” kata Anderson. “Kami juga mengharapkan tindakan dari Github, Gitlab, dan Atlassian, sehingga alat mereka harus mendeteksi serangan terhadap kode dalam bahasa yang masih kekurangan pemfilteran karakter bidi.”
Adapun apa yang perlu dilakukan tentang Sumber Trojan, para peneliti mendesak pemerintah dan perusahaan yang mengandalkan perangkat lunak penting untuk mengidentifikasi postur pemasok mereka, memberikan tekanan pada mereka untuk menerapkan pertahanan yang memadai, dan memastikan bahwa setiap celah ditutupi oleh kontrol di tempat lain di mereka. rantai alat.
“Fakta bahwa kerentanan Sumber Trojan mempengaruhi hampir semua bahasa komputer menjadikannya peluang langka untuk perbandingan lintas-platform dan lintas-vendor yang valid secara ekologis dan seluruh sistem,” makalah itu menyimpulkan. “Karena serangan rantai pasokan yang kuat dapat diluncurkan dengan mudah menggunakan teknik ini, sangat penting bagi organisasi yang berpartisipasi dalam rantai pasokan perangkat lunak untuk menerapkan pertahanan.”
Weaver menyebut penelitian itu “pekerjaan yang sangat bagus untuk menghentikan sesuatu sebelum menjadi masalah.”
“Pelajaran pengungkapan terkoordinasi adalah studi yang sangat baik dalam apa yang diperlukan untuk memperbaiki masalah ini,” katanya. “Kerentanan itu nyata, tetapi juga menyoroti kerentanan yang lebih besar dari pergeseran stand dependensi dan paket yang diandalkan oleh kode modern kami.”
Rust telah merilis penasehat keamanan untuk kelemahan keamanan ini, yang dilacak sebagai CVE-2021-42574 dan CVE-2021-42694. Saran keamanan tambahan dari bahasa lain yang terpengaruh akan ditambahkan sebagai pembaruan di sini.
Penelitian Sumber Trojan tersedia di sini (PDF).
sumber: KREBSONSECURITY