Android w końcu będzie bezpieczniejszy? Tagowanie pamięci trafi pod strzechy

Maciej Olanicki , 05.08.2019 r.
android W partnerstwie z Arm Google chce zabezpieczyć Androida rozwiązaniem sprzętowym.

Palącym problemem największych producentów oprogramowania jest niedoskonałe bezpieczeństwo dostępu do pamięci w językach programowania CC++. Choć wiele nowszych języków oferuje w tej kwestii więcej, to jednak nie sprawdza się tak dobrze w niskopoziomowym kodzie. Google ogłosiło dziś, jak ma zamiar poradzić sobie z tym problemem – w partnerstwie a Arm opracowanie zostanie zabezpieczenie sprzętowe.

Nad wyeliminowaniem ryzyka, jakie niosą błędy w obsłudze pamięci, głowi się także Microsoft. W ostatnim czasie informowaliśmy, że Microsoft Security Response Center poszukuje języków programowania, które mogłyby zastąpić C i C++ w niskopoziomowym kodzie. To właśnie podatności wynikające z takich błędów, jak wycieki pamięci, przepełnienia bufora, hazard czy błędy w alokacji stanowią 70% wszystkich podatności w oprogramowaniu produkowanym przez Microsoft.

Zupełnie inny pomysł na minimalizację ryzyka w urządzeniach mobilnych z Androidem ma Google. Korporacja ogłosiła, że wraz z Arm pracować będzie nad kompatybilnym z Androidem rozszerzeniem dla procesorów o architekturze ARM, które pozwoli na tagowanie pamięci. MTE, czyli Memory Tagging Extension, dostępne jest w układach ARM od wydanej pod koniec zeszłego roku wersji 8.5 architektury ARM. Teraz MTE nieśpiesznie trafia pod strzechy.

Tagowanie pamięci, zwane także jej kolorowaniem, ma pozwolić uniknąć w zasadzie wszystkich najpopularniejszych klas błędów pamięci. Jest to proces, w którym każdej alokacji pamięci przypisywane są dwa typy wskaźników – każde 16 bajtów pamięci otrzymuje własny czterobajtowy tag. Również każdy dostęp do pamięci musi być opatrzony odpowiednim tagiem 4-bitowym tagiem przechowywanym w pierwszym bajcie.

tagowaniepamieci-1
tagowaniepamiec-2

Za pomocą instrukcji LD/ST w trakcie samej alokacji sprawdzana jest zgodność tagu żądania dostępu do pamięci z żądanym fragmentem pamięci. Na powyższych ilustracjach widoczny jest schemat identyfikacji konkretnych klas błędów. Więcej na temat można przeczytać w prezentacji „Memory Tagging: how it improves C/C++ memory safety” Kostii Sieriebrannego z Google opublikowanej w październiku 2018 roku.

Obsługa MTE jest już dostępna w kompilatorach GCC i LLVM, teraz czekać tylko, aż na rynku pojawią się procesory z tym rozszerzeniem. Dzięki narzędziom ASAn i HWASan z tagowania pamięci będą mogli skorzystać zarówno deweloperzy, jak i partnerzy OEM-owi. O potencjalnym wpływie kolorowania pamięci na bezpieczeństwo Androida niech świadczy to, że błędy w obsłudze pamięci stanowiły w Androidzie 9 źródło ponad połowy podatności wysokiego ryzyka.

Najnowsze oferty pracy:

Polecane wpisy na blogu IT: