Ingeniører fra Meta* har udgivet en rapport om omarbejdning af WhatsApp messenger-komponenter ved hjælp af Rust-sproget. Som en del af projektets sikkerhedsforbedringsinitiativ blev der udviklet en ny version af wamedia-biblioteket, oprindeligt skrevet i C++ og brugt af WhatsApp til at sende og behandle MP4-mediefiler.
Redesignet blev foranlediget af opdagelsen af fejl i wamedia, der opstod under behandling af misdannede MP4-filer. Disse fejl blev rettet, og der blev tilføjet filvaliditetskontroller, men biblioteket udgjorde potentielt en sikkerhedsrisiko på grund af den potentielle tilstedeværelse af lignende, endnu ikke opdagede fejl og dets brug i automatiseret behandling af indgående data. Udnyttelse af en ikke-opdateringssårbarhed i wamedia kunne føre til kodeudførelse ved at sende specialfremstillede multimediedata, som for nylig demonstreret i Dolby Unified Decoder-biblioteket.
I stedet for gradvist at omskrive wamedia, blev en ny biblioteksversion oprettet i Rust, udviklet parallelt med den originale C++-version. I sidste ende blev cirka 160 linjer C++-kode erstattet med 90 linjer Rust-kode.
De største udfordringer ved at integrere Rust-kode i WhatsApp var den øgede størrelse på eksekverbare filer på grund af integrationen af Rust-standardbiblioteket og behovet for at tilpasse byggesystemet, samtidig med at understøttelsen af alle understøttede platforme blev opretholdt. Rust-versionen indeholdt dog ikke kun en betydelig reduktion i antallet af kodelinjer, men demonstrerede også ydeevneforbedringer og reduceret hukommelsesforbrug sammenlignet med C++-implementeringen.
В настоящее время версия WhatsApp с кодом на Rust доведена до пользователей Android, IOS, macOS, Web, носимых устройств и некоторых других платформ. Утверждается, что опыт внедрения Rust в WhatsApp и распространение новой библиотеки wamedia на миллиарды устройств и браузеров показывает готовность к применению языка Rust в глобальном масштабе.
Ifølge Meta skyldes størstedelen af farlige sårbarheder i produkter under udvikling problemer med hukommelsesstyring i C- og C++-kode. For at forhindre sådanne sårbarheder promoverer virksomheden tre strategier: brug af hukommelsessikre sprog til ny kode; reduktion af angrebsfladen under design; og investering i udvikling af sikkerhedsværktøjer til den resterende C- og C++-kode.
Kilde: opennet.ru
