Krytyczna wada rdzy stwarza zagrożenie exploitem w określonych przypadkach użycia systemu Windows

Krytyczna wada rdzy stwarza zagrożenie exploitem w określonych przypadkach użycia systemu Windows

Krytyczna wada rdzy stwarza zagrożenie exploitem w określonych przypadkach użycia systemu Windows PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Projekt Rust wydał aktualizację swojej standardowej biblioteki po tym, jak badacz podatności odkrył, że określona funkcja używana do wykonywania plików wsadowych w systemach Windows może zostać wykorzystana przy użyciu luki polegającej na wstrzykiwaniu.

Zestaw typowych funkcji zawartych w języku programowania Rust, znany jako biblioteka standardowa, oferuje możliwość — wśród wielu innych możliwości — wykonywania plików wsadowych systemu Windows za pośrednictwem interfejsu Command API. Funkcja jednak nie przetwarzała danych wejściowych do API na tyle rygorystycznie, aby wyeliminować możliwość wstrzyknięcia kodu do wykonania, zgodnie z zalecenie Grupy Roboczej ds. Reagowania na Bezpieczeństwo Rust opublikowany 9 kwietnia.

Chociaż Rust jest dobrze znany ze swoich funkcji zapewniających bezpieczeństwo pamięci, incydent ten podkreśla, że ​​język programowania nie jest odporny na błędy logiczne, mówi Yair Mizrahi, starszy badacz luk w zabezpieczeniach w firmie JFrog zajmującej się bezpieczeństwem aplikacji.

„Ogólnie rzecz biorąc, bezpieczeństwo pamięci Rusta jest zauważalną zaletą, ale programiści muszą również zwracać szczególną uwagę na potencjał błędów logicznych, aby zapewnić ogólne bezpieczeństwo i niezawodność aplikacji opartych na Rust” – mówi. „Aby rozwiązać takie problemy logiczne, Rust zachęca do rygorystycznego testowania i procesu przeglądu kodu, a także do korzystania z narzędzi analizy statycznej w celu identyfikowania i łagodzenia błędów logicznych”.

Rust zyskał reputację bardzo bezpiecznego języka programowania, ponieważ nie naraża aplikacji na często poważne błędy znane jako luki w zabezpieczeniach pamięci. Google przypisał spadek kodu zagrażającego pamięci związane z przejściem na języki bezpieczne dla pamięci, takie jak Rust i Kotlin, podczas gdy firma Microsoft odkryła, że ​​do 2018 r., kiedy to przeszła na języki bezpieczne dla pamięci, takie luki regularnie występowały stanowiły 70% wszystkich problemów związanych z bezpieczeństwem.

Windows stwarza szereg problemów

Najnowszym problemem nie jest luka w zabezpieczeniach pamięci, ale problem z logiką używaną do przetwarzania niezaufanych danych wejściowych. Część standardowej biblioteki Rusta umożliwia programiście wywołanie funkcji wysyłającej plik wsadowy do komputera z systemem Windows w celu przetworzenia. Istnieją powody, dla których warto przesyłać kod do hosta w postaci pliku wsadowego, mówi Joel Marcey, dyrektor ds. technologii w Rust Foundation, która wspiera opiekunów języka programowania i ekosystem Rust.

„Pliki wsadowe są uruchamiane w systemach z wielu powodów, a Rust udostępnia interfejs API, który pozwala na ich łatwe uruchamianie” – mówi. „Więc chociaż niekoniecznie jest to najczęstszy przypadek użycia Rusta, interfejs API przed wdrożeniem naprawionej łatki umożliwiał złośliwym podmiotom teoretyczne przejęcie systemu poprzez uruchamianie dowolnych poleceń, i jest to zdecydowanie krytyczna luka”.

Zazwyczaj programista może przekazać obciążenie do hosta systemu Windows w celu wykonania go w trybie wsadowym za pośrednictwem interfejsu programowania aplikacji Command (API), będącego częścią standardowej biblioteki. Zwykle Rust gwarantuje bezpieczeństwo każdego wywołania Command API, ale w tym przypadku Rust Project nie mógł znaleźć sposobu, aby uniemożliwić wykonanie wszystkich argumentów, głównie dlatego, że Windows nie przestrzega żadnego standardu i że Interfejs API może pozwolić atakującemu na przesłanie kodu, który następnie zostanie wykonany.

„Niestety zgłoszono, że nasza logika ucieczki nie była wystarczająco dokładna i możliwe było przekazanie złośliwych argumentów, które skutkowałyby arbitralnym wykonaniem powłoki” – twierdzi grupa robocza Rust Security Response.

Rust Project okazuje się responsywny

Chociaż radzenie sobie z jakąkolwiek luką może przyprawiać o ból głowy, projekt Rust pokazał, że grupa szybko rozwiązuje problemy, twierdzą eksperci. Podatność standardowej biblioteki, CVE-2024-24576, ostatecznie jest problemem związanym z przetwarzaniem wsadowym w systemie Windows i wpływa na inne języki programowania, jeśli nie analizują one odpowiednio argumentów wysyłanych do procesu wsadowego w systemie Windows. Wydaje się, że projekt Rust jest pierwszym, który wprowadził poprawkę przekazywania argumentów do procesu Windows CMD.exe, mówi Mizrahi z JFrog.

Grupom nie udało się całkowicie wyeliminować problemu, ale interfejs Command API nie zwróci błędu, gdy jakiekolwiek ulepszenia przekazane do funkcji mogą być niebezpieczne – twierdzi Rust Project. 

Mizrahi z JFrog namawia Rusta do szerszego stosowania statycznych testów bezpieczeństwa aplikacji oraz szerszego stosowania testów fuzzingowych i dynamicznych.

„Ogólnie rzecz biorąc, Rust jest na dobrej drodze, kładąc nacisk na bezpieczeństwo pamięci i zachęcając do rygorystycznych praktyk testowania” – mówi. „Połączenie tych wysiłków z ciągłym postępem w analizie statycznej i fuzzingu może pomóc społeczności Rust i szerszej branży oprogramowania poczynić znaczące postępy w usuwaniu błędów logicznych i błędów związanych z walidacją danych wejściowych w nadchodzących latach”.

Znak czasu:

Więcej z Mroczne czytanie