Sumber Trojan, serangan yang membenarkan penambahan perubahan kod tidak dapat dilihat oleh pembangun

Beberapa hari yang lalu Penyelidik Universiti Cambridge dikeluarkan penerbitan teknik untuk menggantikan kod secara halus kod berniat jahat dalam kod sumber aplikasi.

Kaedah serangan menyediakan itu Ia sudah disenaraikan di bawah CVE-2021-42574 Ia datang di bawah nama Sumber Trojan dan berdasarkan pembentukan teks yang kelihatan berbeza dengan pengkompil / jurubahasa dan orang yang melihat kod.

Mengenai Sumber Trojan

Kaedah ini bergantung pada penggunaan aksara Unicode khas dalam komen kod, yang mengubah susunan paparan teks dwiarah. Dengan bantuan watak kawalan ini, sesetengah bahagian teks boleh dipaparkan dari kiri ke kanan, manakala yang lain dari kanan ke kiri.

Dalam amalan harian, aksara kawalan ini boleh digunakan, contohnya, untuk memasukkan rentetan Ibrani atau Arab ke dalam fail kod. Walau bagaimanapun, jika anda menggunakan aksara ini untuk menggabungkan baris dengan arah teks yang berbeza pada baris yang sama, petikan teks yang dipaparkan dari kanan ke kiri mungkin bertindih dengan teks biasa sedia ada yang dipaparkan dari kiri ke kanan.

Dengan kaedah ini, binaan berniat jahat boleh ditambah pada kod, tetapi kemudian jadikan teks dengan binaan ini tidak kelihatan apabila melihat kod, menambah aksara yang ditunjukkan dari kanan ke kiri dalam ulasan seterusnya atau di dalam literal, yang akan mengakibatkan hasil daripada aksara yang berbeza sepenuhnya ditindih pada sisipan berniat jahat. Kod sedemikian masih akan betul dari segi semantik, tetapi ia akan ditafsirkan dan dipaparkan secara berbeza.

Kami telah menemui cara untuk memanipulasi pengekodan fail kod sumber supaya penonton dan penyusun manusia melihat logik yang berbeza. Satu kaedah yang sangat merosakkan menggunakan aksara mengatasi arah arah Unikod untuk memaparkan kod sebagai anagram logiknya yang sebenar. Kami telah mengesahkan bahawa serangan ini berfungsi terhadap C, C ++, C #, JavaScript, Java, Rust, Go dan Python, dan kami mengesyaki bahawa ia akan berfungsi terhadap kebanyakan bahasa moden yang lain.

Semasa menyemak kod, pembangun akan berhadapan dengan susunan visual watak dan akan melihat komen yang mencurigakan dalam editor teks, antara muka web atau IDE, tetapi pengkompil dan jurubahasa akan menggunakan susunan logik aksara dan mengendalikan kod berniat jahat sebagaimana adanya, tanpa mengira teks dwiarah dalam ulasan. Beberapa editor kod popular (Kod VS, Emacs, Atom), serta antara muka untuk melihat kod dalam repositori (GitHub, Gitlab, BitBucket dan semua produk Atlassian) terjejas.

Terdapat beberapa cara untuk menggunakan kaedah untuk melaksanakan tindakan berniat jahat: tambah ungkapan "kembali" tersembunyi, yang membawa kepada penamatan pelaksanaan fungsi lebih awal; kesimpulan dalam ulasan ungkapan yang biasanya dianggap sebagai binaan yang sah (contohnya, untuk melumpuhkan semakan penting); penetapan nilai rentetan lain yang membawa kepada kegagalan pengesahan rentetan.

Selain itu, pilihan serangan lain telah dicadangkan (CVE-2021-42694), yang melibatkan penggunaan homoglyphs, simbol yang kelihatan serupa dalam rupa, tetapi berbeza dalam makna dan mempunyai kod Unicode yang berbeza. Aksara ini boleh digunakan dalam beberapa bahasa dalam fungsi dan nama pembolehubah untuk mengelirukan pembangun. Sebagai contoh, anda boleh menentukan dua fungsi dengan nama yang tidak dapat dibezakan yang melakukan tindakan yang berbeza. Tanpa analisis terperinci, anda tidak dapat memahami dengan segera mana antara kedua-dua fungsi ini dipanggil di tempat tertentu.

Sebagai langkah perlindungan, adalah disyorkan untuk melaksanakan dalam penyusun, jurubahasa dan alat pemasangan yang menyokong aksara Unikod, menunjukkan ralat atau amaran sama ada terdapat aksara kawalan yang tidak berpasangan dalam ulasan, literal rentetan atau pengecam yang mengubah arah output. Aksara ini juga mesti dilarang secara jelas dalam spesifikasi bahasa pengaturcaraan dan mesti diambil kira dalam editor kod dan antara muka untuk bekerja dengan repositori.

selain itu kelemahan sudah mula dibaiki disediakan untuk GCC, LLVM / Clang, Rust, Go, Python dan binutils. GitHub, Bitbucket dan Jira juga sedang dalam penyediaan penyelesaian bersama-sama dengan GitLab.

Akhirnya Sekiranya anda berminat untuk mengetahui lebih lanjut mengenainya, anda boleh berunding perinciannya di pautan berikut.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab untuk data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.