Jurutera dari Meta* telah menerbitkan laporan tentang pengolahan semula komponen pemesejan WhatsApp menggunakan bahasa Rust. Sebagai sebahagian daripada inisiatif peningkatan keselamatan projek ini, versi baharu pustaka wamedia, yang asalnya ditulis dalam C++ dan digunakan oleh WhatsApp untuk menghantar dan memproses fail media MP4, telah dibangunkan.
Reka bentuk semula ini didorong oleh penemuan pepijat dalam wamedia yang berlaku semasa memproses fail MP4 yang cacat. Pepijat ini telah dibaiki dan semakan kesahihan fail telah ditambah, tetapi pustaka tersebut berpotensi menimbulkan risiko keselamatan disebabkan oleh potensi kehadiran pepijat serupa yang belum ditemui dan penggunaannya dalam pemprosesan automatik data masuk. Eksploitasi kerentanan yang belum ditambal dalam wamedia boleh menyebabkan pelaksanaan kod dengan menghantar data multimedia yang direka khas, seperti yang baru-baru ini ditunjukkan dalam pustaka Dolby Unified Decoder.
Daripada menulis semula wamedia secara beransur-ansur, versi pustaka baharu telah dicipta dalam Rust, yang dibangunkan selari dengan versi C++ yang asal. Akhirnya, kira-kira 160 baris kod C++ telah digantikan dengan 90 baris kod Rust.
Cabaran utama dalam mengintegrasikan kod Rust ke dalam WhatsApp adalah peningkatan saiz boleh laku disebabkan oleh penyepaduan pustaka standard Rust dan keperluan untuk menyesuaikan sistem binaan sambil mengekalkan sokongan untuk semua platform yang disokong. Walau bagaimanapun, versi Rust bukan sahaja menampilkan pengurangan ketara dalam bilangan baris kod tetapi juga menunjukkan peningkatan prestasi dan pengurangan penggunaan memori berbanding pelaksanaan C++.
В настоящее время версия WhatsApp с кодом на Rust доведена до пользователей Android,iOS, macOS, Web, носимых устройств и некоторых других платформ. Утверждается, что опыт внедрения Rust в WhatsApp и распространение новой библиотеки wamedia на миллиарды устройств и браузеров показывает готовность к применению языка Rust в глобальном масштабе.
Menurut Meta, kebanyakan kerentanan berbahaya dalam produk yang sedang dibangunkan disebabkan oleh isu pengurusan memori dalam kod C dan C++. Bagi mengelakkan kerentanan sedemikian, syarikat itu menggalakkan tiga strategi: menggunakan bahasa yang selamat untuk memori untuk kod baharu; mengurangkan permukaan serangan semasa reka bentuk; dan melabur dalam membangunkan alatan keselamatan untuk kod C dan C++ yang selebihnya.
Sumber: opennet.ru
