Badacze bezpieczeństwa Cisco
Lukę można wykorzystać do wykonania kodu w sytuacji, gdy atakujący może zorganizować utworzenie ujemnej wartości zmiennej, przez którą przesyłany jest rozmiar kopiowanych danych (przykładowo będzie ona ujemna przy przesyłaniu więcej niż 2 GB danych, ale w trakcie ataku, aby przekroczyć limity bufora, trzeba przesłać co najmniej 4 GB). Funkcja memcpy() jest szeroko stosowana w aplikacjach, a procesory ARMv7 są powszechnie stosowane w systemach motoryzacyjnych, urządzeniach mobilnych, przemysłowych, konsumenckich, komunikacyjnych i wbudowanych, które są potencjalnie podatne na ataki z wykorzystaniem Bluetooth, HD Radio/DAB, USB, magistrali CAN, Wi-Fi Fi i inne zewnętrzne źródła danych (na przykład usługi i aplikacje dostępne w sieci, które akceptują dane wejściowe bez ograniczeń rozmiaru, mogą zostać zaatakowane).
Przykładem jest stworzenie działającego exploita atakującego serwer HTTP wbudowany w samochodowe systemy informacyjne, dostępny za pośrednictwem samochodowej sieci Wi-Fi. Osoba atakująca z zewnątrz może wykorzystać lukę w zabezpieczeniach memcpy na tym serwerze, wysyłając bardzo duże żądanie GET i uzyskując dostęp roota do systemu.
W 32-bitowych systemach x86 problem nie pojawia się, ponieważ implementacja memcpy dla tej architektury poprawnie interpretuje zmienną size jako wartość całkowitą bez znaku typu size_t (w języku asemblera
Poprawka sprowadza się do zastąpienia stosowania instrukcji asemblera operujących na operandach ze znakiem (bge i blt) ich odpowiednikami bez znaku (blo i bhs).
Problem nie został jeszcze rozwiązany
Źródło: opennet.ru