안드로이드 운영체제(OS) 기반 언어로 러스트가 추가된다. 주요 보안 취약점인 메모리 버그를 줄이기 위함이다.
미국 지디넷에 따르면 구글은 안드로이드 오픈소스 프로젝트(AOSP)의 안드로이드 OS 빌드 개발 언어로 위해 러스트를 추가했다.
일반적으로 안드로이드 앱은 자바, 코틀린 등 관리언어로 작성한다. 자바가상머신(JVM) 기반으로 이뤄져 플랫폼 제한 없이 개발할 수 있으며, 상대적으로 보안에 강하다는 장점이 있다.
반면 안드로이드OS는 C, C++ 등 시스템 프로그래밍 언어 기반으로 구축돼 있다. 하드웨어를 직접 제어하고, 빠른 처리속도를 확보하기 위함이다.
하지만 C, C++은 구조적으로 해결되지 않는 메모리 버그로 인해 보안을 강화한 언어로 점차 대체되고 있다.
메모리 버그는 보안 취약점의 가장 큰 원인이다. 구글에 따르면 안드로이드의 심각성 높은 보안 취약점의 70%가 메모리 버그로 인해 발생하고 있다.
러스트는 2006년 개발 초기부터 C, C++ 등의 기계어에서 발생하는 보안 결함인 메모리 버그를 해소하려는 목적으로 만들어졌다. 또한 C언어처럼 하드웨어와 메모리에 직접 접속할 수 있으며, 비슷한 수준의 처리속도를 제공한다.
또한 멀티코어 하드웨어 환경의 동시성, 병렬성을 지원하고 메모리 안정성을 보장하는 정적 타입 시스템을 제공하는 등 최신 개발환경에 적합한 기능도 갖추고 있다.
구글 안드로이드 팀의 제프리 벤더 스톱 소프트웨어 엔지니어는 “메모리 버그를 개선하기 위해 지속적인 노력을 기울이고 있으며, 이와 우리는 근본적으로 이를 방지하기 위해 러스트를 도입하기로 했다”며 “러스트는 객체 수명, 소유권 및 런타임 검사를 시행하는 컴파일 시간 검사의 조합을 사용해 메모리 안전을 보장함과 동시에 C, C++과 동등한 성능을 제공한다”고 설명했다.
구글은 기존 C, C++로 작성한 코드는 우선 유지한다는 방침이다. 워낙 규모가 커서 모두 수정하기 어려울 뿐 아니라 문제가 발생할 확률이 적기 때문이다.
구글 안드로이드 팀의 스테판 하인즈 소프트웨어 엔지니어는 “대부분의 메모리 버그는 1년 이내에 작성한 새로운 코드 또는 최근 수정한 코드에서 발생한다”며 “이전 코드 개선이 가장 시급한 부분이 아니라는 사실을 발견했다”고 설명했다.
이어서 그는 “수천만 줄의 코드를 다시 작성하는 것은 모든 직원이 참여해도 불가능할 뿐 아니라 기존에 작성한 코드를 수정할 수 있는 인원은 소수에 불과하고, 수정이 잘못되면 더욱 큰 문제가 발생할 수 있다”고 밝혔다.
제프리 벤더 스톱 엔지니어는 "지난 18개월 동안 AOSP에 러스트를 추가했으며, 앞으로 몇 달 동안 얼리어답터 프로젝트를 더 공개할 것”이라고 말했다.
구글 외에 마이크로소프트, 아마존웹서비스(AWS) 등 주요 IT기업도 메모리 버그를 해결하기 위해 러스트를 도입하고 있다.
마이크로소프트의 경우 윈도와 오피스에서 발생하는 메모리버그를 제거하기 위해 러스트를 채택했다. 지난 10년간 윈도 OS 보안 패치의 70% 이상이 메모리 관련 버그다.
관련기사
- 리눅스 커널에 '러스트' 쓰는 날 올까2021.03.30
- MS, 어떤 환경에서도 '제로트러스트' 구현해준다2021.03.03
- 프로그래밍 언어 ‘러스트’ 재단 출범2021.02.09
- MS, C#·러스트 Win32 API 접근 간소화2021.01.22
아마존웹서비스(AWS)도 람다, EC2, S3 등 클라우드 서비스에 러스트를 사용 중이다. 컨테이너에 최적화된 리눅스 배포판인 '보틀로켓'도 많은 부분이 러스트로 작성됐다.
리눅스 커널 역시 점진적으로 러스트를 도입해 보안성을 높이려는 시도가 이어지고 있다.