AOSP를 왜 러스트로 개발할까

이전 첫 회사에서 AOSP(Android Open Source Project)를 빌드 할 때에 커널단까지 내려갈수록 C/C++로 구성되어 있는 코드를 많이 봐왔었습니다. 하지만 몇 년이 지난 지금 Android 13의 코드 분포를 보면 러스트의 비중이 C 수준까지 늘어났습니다. 왜 구글이 안드로이드OS를 러스트로 짜는지 설명해주는 문서가 있어 공유드립니다. 💁 Rust는 C/C++ 과 동급의 성능을 제공하면서, 메모리 안전 까지 보장합니다. 안드로이드에 사용된 언어가 메모리에 안전한 것으로 변경 되면서, 전체 안드로이드 취약점 중 메모리 안전 취약점의 비중이 76%에서 35%까지 낮아졌습니다. (AOSP 공개 이후로 제일 크게 줄었습니다.) 👨‍🔧 구글은 기존 C 및 C++ 언어를 러스트로 대체하는 대신, 신규 코드를 러스트로 작성하는 식으로 진행했습니다. 그 결과 안드로이드의 네이티브 코드에서 C/C++ 비율은 아주 조금씩 감소 했고, 러스트는 급증하고 있습니다. (안드로이드13 새로운 네이티브 코드 중 21% 차지) 🏃 AOSP의 경우 Keystore2, 새로운 UWB 스택, DNS오버HTTP3, 안드로이드 가상화 프레임워크 및 다양한 기타 구성 요소 등 새로운 기능 및 구성 요소 전반에 걸쳐 약 150만 개의 러스트 코드 라인이 있다고 합니다. 👁 이러한 추세는 구글 뿐만 아닌 전 세계적으로 일어나고 있습니다. 마이크로소프트와 구글 보안팀은 윈도와 크롬의 보안 문제 70%가 메모리 취약점 관련이며, 주로 C/C++를 사용한 결과라고 합니다. (코드의 메모리 관리 문제는 프로그램 실행 오류와 성능 저하, 충돌 등의 문제를 야기합니다.) 🤡 구글은 그동안 안드로이드의 러스트 코드에서 메모리 보안 취약점이 전혀 발견되지 않았다고 합니다. 또한 안드로이드에 러스트를 사용함으로써 C/C++의 안전조치에 사용 되는 추가 샌드박싱, 새니타이저, 런타임 완화, 하드웨어 보호 등의 조치를 덜 취하면서 보안과 시스템 상태를 최적화 할 수 있다고 합니다.

Memory Safe Languages in Android 13

Google Online Security Blog

Memory Safe Languages in Android 13

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 1월 2일 오후 12:19

조회 388

댓글 0