Sumber Trojan, serangan yang memungkinkan penambahan perubahan kode yang tidak terlihat oleh pengembang

Beberapa hari yang lalu Peneliti Universitas Cambridge merilis penerbitan teknik untuk mengganti kode secara halus berbahaya dalam kode sumber aplikasi.

Metode serangan menyiapkan itu Itu sudah terdaftar di bawah CVE-2021-42574 Itu datang di bawah nama Trojan Source dan didasarkan pada pembentukan teks yang terlihat berbeda dengan compiler / interpreter dan orang yang melihat kode.

Tentang Sumber Trojan

Metode bergantung pada penerapan karakter Unicode khusus dalam komentar kode, yang mengubah urutan tampilan teks dua arah. Dengan bantuan karakter kontrol ini, beberapa bagian teks dapat ditampilkan dari kiri ke kanan, sementara yang lain dari kanan ke kiri.

Dalam praktik sehari-hari, karakter kontrol ini dapat digunakan, misalnya, untuk menyisipkan string Ibrani atau Arab ke dalam file kode. Namun, jika Anda menggunakan karakter ini untuk menggabungkan garis dengan arah teks yang berbeda pada baris yang sama, bagian teks yang ditampilkan dari kanan ke kiri mungkin tumpang tindih dengan teks normal yang ada yang ditampilkan dari kiri ke kanan.

Dengan metode ini, konstruksi berbahaya dapat ditambahkan ke kode, tetapi kemudian buat teks dengan konstruksi ini tidak terlihat saat melihat kode, menambahkan karakter yang ditampilkan dari kanan ke kiri di komentar berikutnya atau di dalam literal, yang akan menghasilkan hasil karakter yang sama sekali berbeda yang ditumpangkan pada sisipan berbahaya. Kode tersebut akan tetap benar secara semantik, tetapi akan ditafsirkan dan ditampilkan secara berbeda.

Kami telah menemukan cara untuk memanipulasi pengkodean file kode sumber sehingga pemirsa dan kompiler manusia melihat logika yang berbeda. Salah satu metode yang sangat merusak menggunakan karakter override directionality Unicode untuk menampilkan kode sebagai anagram dari logika sebenarnya. Kami telah memverifikasi bahwa serangan ini bekerja terhadap C, C ++, C #, JavaScript, Java, Rust, Go, dan Python, dan kami menduga itu akan bekerja terhadap sebagian besar bahasa modern lainnya.

Saat meninjau kode, pengembang akan dihadapkan dengan urutan visual karakter dan akan melihat komentar mencurigakan di editor teks, antarmuka web atau IDE, tetapi kompiler dan juru bahasa akan menggunakan urutan karakter yang logis dan menangani kode berbahaya apa adanya, terlepas dari teks dua arah dalam komentar. Beberapa editor kode populer (VS Code, Emacs, Atom), serta antarmuka untuk melihat kode di repositori (GitHub, Gitlab, BitBucket, dan semua produk Atlassian) terpengaruh.

Ada beberapa cara untuk menggunakan metode ini untuk menerapkan tindakan jahat: tambahkan ekspresi "kembali" tersembunyi, yang mengarah pada penghentian eksekusi fungsi sebelum waktunya; kesimpulan dalam komentar ekspresi yang biasanya dianggap konstruksi yang valid (misalnya, untuk menonaktifkan pemeriksaan penting); Menetapkan nilai string lain yang menyebabkan kegagalan validasi string.

Selain itu, opsi serangan lain diusulkan (CVE-2021-42694), yang melibatkan penggunaan homoglyph, simbol yang tampak serupa dalam penampilan, tetapi berbeda dalam arti dan memiliki kode Unicode yang berbeda. Karakter ini dapat digunakan dalam beberapa bahasa dalam fungsi dan nama variabel untuk menyesatkan pengembang. Misalnya, Anda dapat menentukan dua fungsi dengan nama yang tidak dapat dibedakan yang melakukan tindakan berbeda. Tanpa analisis terperinci, Anda tidak dapat segera memahami yang mana dari dua fungsi ini yang dipanggil di tempat tertentu.

Sebagai tindakan perlindungan, direkomendasikan untuk diimplementasikan dalam kompiler, juru bahasa, dan alat perakitan yang mendukung karakter Unicode, yang menunjukkan kesalahan atau peringatan apakah ada karakter kontrol yang tidak berpasangan dalam komentar, literal string, atau pengidentifikasi yang mengubah arah output. Karakter ini juga harus secara eksplisit dilarang dalam spesifikasi bahasa pemrograman dan harus diperhitungkan dalam editor kode dan antarmuka untuk bekerja dengan repositori.

Selain itu kerentanan sudah mulai diperbaiki disiapkan untuk GCC, LLVM / Dentang, Rust, Go, Python dan binutils. GitHub, Bitbucket, dan Jira juga telah menyiapkan solusi bersama dengan GitLab.

Akhirnya Jika Anda tertarik untuk mengetahui lebih banyak tentang itu, Anda bisa berkonsultasi detailnya di tautan berikut.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Bertanggung jawab atas data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.