Kerentanan jarak jauh dalam implementasi protokol TIPC di kernel Linux

Kerentanan kritis (CVE-2021-43267) telah diidentifikasi dalam implementasi protokol jaringan TIPC (Transparent Inter-process Communication) yang disertakan dalam kernel Linux, yang memungkinkan Anda mengeksekusi kode dari jarak jauh dengan hak istimewa kernel dengan mengirimkan kode yang dirancang khusus paket jaringan. Bahaya masalah ini dikurangi dengan fakta bahwa serangan tersebut memerlukan pengaktifan eksplisit dukungan TIPC dalam sistem (memuat dan mengkonfigurasi modul kernel tipc.ko), yang tidak dilakukan secara default di distribusi Linux yang tidak terspesialisasi.

Protokol TIPC telah didukung sejak kernel Linux 3.19, tetapi kode yang menyebabkan kerentanan disertakan dalam kernel 5.10. Kerentanan telah diperbaiki di kernel 5.15.0, 5.10.77 dan 5.14.16. Masalah muncul dan belum diperbaiki di Debian 11, Ubuntu 21.04/21.10, SUSE (di cabang SLE15-SP4 yang belum dirilis), RHEL (belum dirinci apakah perbaikan rentan telah di-backport) dan Fedora. Pembaruan kernel telah dirilis untuk Arch Linux. Distribusi dengan kernel yang lebih lama dari 5.10, seperti Debian 10 dan Ubuntu 20.04, tidak terpengaruh oleh masalah ini.

Protokol TIPC awalnya dikembangkan oleh Ericsson, dirancang untuk mengatur komunikasi antar-proses dalam sebuah cluster dan diaktifkan terutama pada node cluster. TIPC dapat beroperasi melalui Ethernet atau UDP (port jaringan 6118). Saat bekerja melalui Ethernet, serangan dapat dilakukan dari jaringan lokal, dan saat menggunakan UDP, dari jaringan global jika port tidak tercakup oleh firewall. Serangan juga dapat dilakukan oleh pengguna lokal host yang tidak memiliki hak istimewa. Untuk mengaktifkan TIPC, Anda perlu mengunduh modul kernel tipc.ko dan mengkonfigurasi pengikatan ke antarmuka jaringan menggunakan netlink atau utilitas tipc.

Kerentanan memanifestasikan dirinya dalam fungsi tipc_crypto_key_rc dan disebabkan oleh kurangnya verifikasi yang tepat atas korespondensi antara data yang ditentukan dalam header dan ukuran sebenarnya dari data saat menguraikan paket dengan tipe MSG_CRYPTO, yang digunakan untuk mendapatkan kunci enkripsi dari node lain di cluster untuk tujuan dekripsi selanjutnya atas pesan yang dikirim dari node ini. Ukuran data yang disalin ke memori dihitung sebagai selisih antara nilai field dengan ukuran pesan dan ukuran header, tetapi tanpa memperhitungkan ukuran sebenarnya dari nama algoritma enkripsi dan isi dari kunci yang dikirimkan dalam pesan. Diasumsikan bahwa ukuran nama algoritme adalah tetap, dan atribut terpisah dengan ukuran juga diteruskan untuk kunci tersebut, dan penyerang dapat menentukan nilai dalam atribut ini yang berbeda dari yang sebenarnya, yang akan mengarah pada penulisan ekor pesan di luar buffer yang dialokasikan. struct tipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; tidak ditandatangani int keylen; /* dalam byte */ kunci char[]; };

Kerentanan jarak jauh dalam implementasi protokol TIPC di kernel Linux


Sumber: opennet.ru

Tambah komentar