일본산업뉴스요약

구글과 MS, 'Rust' 언어로 OS 개발 -- 배경에는 국가에 의한 첩보 활동의 그림자
  • 카테고리사물인터넷/ ICT/ 제조·4.0
  • 기사일자 2021.4.30
  • 신문사 Nikkei X-TECH
  • 게재면 online
  • 작성자hjtic
  • 날짜2021-05-10 09:35:38
  • 조회수831

Nikkei X-TECH_2021.4.30

구글과 MS, 'Rust' 언어로 OS 개발
배경에는 국가에 의한 첩보 활동의 그림자

미국 구글이 21년 4월, 안드로이드나 리눅스 커널을 개발하는 프로그램 언어에 ‘Rust’를 채용한다고 밝혔다. 미국 마이크로소프트(MS)도 윈도우 OS 개발에서 Rust를 채용한다. C나 C++의 독무대였던 OS 개발에, 15년에야 비로서 ‘버전1’을 출시한 신세대 언어 Rust가 채용되는 배경에는 사이버 전쟁의 심각화가 있다.

구글은 21년 4월 6일에 안드로이드 OS의 개발 언어에 Rust를 채용한다고 발표했다. 또한 8일 후인 21년 4월 14일에 리눅스 커널의 개발에 Rust가 적합하다고 공식 블로그에서 주장함과 동시에 리눅스 커널 개발에 대한 Rust의 채용을 목표하는 단체인 ‘Rust for Linux’에 참가한 사실을 밝혔다.

MS는 구글보다도 빠른 19년 7월 시점에서 OS 개발에는 Rust가 적합하다는 블로그를 발표했다. 그리고 19년 11월에는 윈도우 OS의 일부 컴포넌트를 Rust를 통해 실장하기 시작했다고 발표했다.

-- 커널 등 하위 레이어 개발에 채용 --
1970년대 초에 UNIX 개발에 C언어가 채용된 이래로 OS 개발은 C나 그 후계인 C++의 독무대였다. 구글은 지금까지도 안드로이드 개발에 Java나 Kotlin을 채용하고 있었지만 커널이나 디바이스 드라이버 등 OS의 하위 레이어 개발에는 C/C++밖에 사용하지 않았다. Rust는 C/C++과 같이 하위 레이어의 개발에 사용한다.

구글은 수천만 행에 달하는 기존의 C/C++의 코드를 다시 쓰는 것은 불가능하므로, 신규 코드 개발에만 Rust를 적용할 방침이다. 그래도 OS 개발의 상식이 수십 년 만에 바뀌는 것만은 분명하다.

Rust는 웹브라우저 ‘Firefox’를 개발하는 미국 Mozilla Foundation이 개발을 주도하는 프로그래밍 언어다. 06년에 개발을 시작했고, 안정판인 버전1이 발매된 것도 15년이다. 이러한 새로운 프로그래밍 언어를 구글이나 MS가 OS 개발에 채용하는 이유는 OS의 시큐리티 강화에 있다.

Rust는 프로그램에 필요한 메모리의 확보나 해방과 관련된 버그가 생기지 않는 ‘메모리 안전’이 보증된 프로그래밍 언어다. 이에 대해 지금까지의 OS 개발에 사용되어 왔던 C/C++은 “대규모 개발에서 메모리 안전 코드를 기술하는 것이 거의 불가능하다”(마이크로소프트의 블로그 ‘We need a safer systems programming language’).

-- 취약성의 70%가 메모리 관리 버그에 기인 --
구글에 따르면 안드로이드에 존재한 심각한 시큐리티 취약성의 70% 가까이가 메모리 안전에 관한 버그에 기인한다고 한다. 마찬가지로 MS도 자사의 제품에 존재한 시큐리티 취약성의 70%가 메모리 안전에 관한 버그에 기인한다고 밝혔다. C/C++을 사용하는 한 시큐리티 취약성을 근절하는 것은 불가능하다고 판단하고 Rust를 채용하기에 이른 것이다.

오늘날의 어플리케이션 개발에서 주류 언어인 Java나 C#도 메모리 안전이 보증되어 있다. 그러나 Java나 C#은 메모리 안전을 실현하기 위해, 프로그램이 가동하는 런타임이 메모리의 할당이나 해방을 관리하는 가비지 콜렉션(GC)을 채용하고 있다.

GC를 채용하는 언어는 메모리 관리를 프로그래머가 엄격하게 제어하지 못해 관리의 오버헤드도 발생하기 때문에 커널이나 디바이스 드라이버 등의 개발(시스템 프로그래밍)에는 적합하지 않다. 또한 커널을 가동하는데 적합한 소형의 런타임을 실장하는 것도 어렵다. 이러한 사정으로 인해 Java나 C#은 시스템 프로그래밍에 채용되지 못했었다.

그러나 Rust는 GC를 사용하지 않는다. 프로그래머는 Rust의 ‘소유권’이라는 개념에 근거해 메모리를 관리한다. Rust는 메모리 확보와 해방의 타이밍이 컴파일 시간에 결정되기 때문에 메모리 안전을 컴파일러가 보증해준다. 실행 시에 메모리 해방이 판정되는 GC와 비교해 프로그램도 고속으로 동작한다. 메모리 안전과 고속이라는 특징이 있기 때문에 Rust는 OS 개발에 적용되었다.

구글이나 MS가 OS 개발에 Rust를 채용하는 것은, 프로그래밍 언어를 바꾸지 않으면 안 될 정도로 OS 벤더가 궁지에 몰려있는 현재의 상황도 설명해준다. OS의 시큐리티 취약성은, 사이버 전쟁의 당사자에게는 정말 갖고 싶은 ‘병기’가 될 수 있다. 중국이나 러시아와 같은 강권적인 국가의 정부기관뿐 아니라 미국 등 서방 국가의 정부기관도 OS의 취약성을 발견하고도 벤더에게 보고하지 않고 숨겨 두었다가 제로데이 공격의 툴로서 악용하고 있다.

-- 미국 정부도 취약성을 악용 --
미국의 미디어 ‘MIT Technology Review’는 21년 4월, 구글이 20년 4월까지 발견한 윈도우 등에 존재하는 복수의 시큐리티 취약성에 대해, 서방 국가의 정부기관이 공격 수단으로서 사용하고 있었다고 보도했다. 구글의 시큐리티팀인 Project Zero는 21년 1월에 블로그에서, 구글이 이러한 취약성을 알게 된 계기는 “상당히 세련된 조직에 의해 설계된 ‘워터링 홀 공격’을 발견한 것이 계기였다”라고 설명한다.

워터링 홀 공격은 멀웨이를 내장한 웹사이트로 공격 대상을 유인하는 방법을 말한다. MIT Technology Review는 구글이 말하는 ‘상당히 세련된 조직’이 서방 국가의 정부기관이었다고 보도했다.

17년에 크게 유행한 랜섬웨어 ‘WannaCry’가 악용한 윈도우의 취약성 ‘MS17-010’도, 미국 국가안전보장국(NSA)이 발견하고 첩보 활동에 이용하고 있던 것이었다. NSA의 공격 툴 ‘EternalBlue’가 해커집단인 Shadow Brokers에게 도난 당하면서 취약성의 존재가 드러났고, 랜섬웨어에 악용되었다.

WannaCry의 케이스에서도 알 수 있듯이 취약성이라는 병기가 무방비하게 유통됨으로써 피해를 입는 것은 죄 없는 일반시민이다. OS 개발 언어가 Rust로 이행함으로써 병기의 생산에 종지부를 찍고, 시민의 피해가 줄어들기를 바랄 뿐이다.

 -- 끝 --

Copyright © 2020 [Nikkei XTECH] / Nikkei Business Publications, Inc. All rights reserved.

목록