최근 업계에서는 특히 제품의 보안 및 안전과 관련하여 임베디드 공간에서 메모리 안전 언어 및 개발의 가치에 대해 많은 논의가 이루어지고 있다. 메모리 안전성이 부족하면 제품에 보안 취약점이 발생하여 제품의 안전과 보안이 모두 위험해질 수 있다. 수년 동안 많은 임베디드 팀과 함께 일하면서 이러한 문제가 실제 프로젝트에서 어떻게 나타나는지 직접 목격했다. 그래서 IAR 플랫폼에 내장된 런타임 코드 검사기를 사용하여 C 및 C++ 코드에서 메모리 안전 문제를 발견하여 전통적으로 메모리 안전하지 않은 언어를 훨씬 더 안전하게 작업할 수 있는 방법을 공유하고자 한다. 메모리 안전성이란 무엇인가? 메모리 안전성은 일반적으로 두 가지 범주로 나뉜다. · 공간 메모리 안전 : 건드려서는 안 되는 메모리 공간을 읽거나 쓰는 연산을 만들 수 있는지? · 시간적 메모리 안전 : 일시적인 메모리 사용이 전체 메모리 관리에 안전하지 않은 방식으로 영향을 미치는지? C 언어에서 첫 번째 문제는 특정 크기의 배열을 선언한 다음 배열의 범위를 벗어난 요소에 액세스할 때 발생할 수 있으며, 이는 C와 C++에서는 완전히 합법적이다. 두 번째 문제는 힙 메모리 할당과 관련된 것으로, 일반
한국과학기술원(KAIST)은 안전성 논란이 제기된 C언어를 러스트로 변환할 수 있는 코드 번역 기술을 개발했다고 13일 밝혔다. 컴퓨터 프로그래밍 언어인 C언어는 실행 속도가 빠르고 유지 보수가 쉬워 널리 쓰이고 있지만 메모리 할당과 관리에 치명적인 문제점을 갖고 있다. 이 때문에 지난 2월 미국 백악관은 C언어의 사용 중단을 촉구했고, 미국 국방고등연구계획국(DARPA)도 C언어로 작성된 코드를 러스트로 자동 번역하는 기술을 개발하는 연구 과제를 발표했다. DARPA는 C의 메모리 문제를 막기 위해 러스트와 같이 안전한 언어를 사용해야 한다고 강조했다. 2015년부터 개발된 러스트는 운영 체제, 웹 브라우저 개발 등에 쓰이는 프로그래밍 언어로, C와 달리 프로그램 실행 전에 메모리 문제를 탐지하고 예방할 수 있다. C언어를 러스트로 번역하기 위한 연구가 시도되고 있지만, 큰 간극으로 인해 번역에 성공한 팀은 극소수다. 그마저도 '포인터'(pointer·데이터 저장 위치를 표현하는 기능)를 변환하는 수준에 머물고 있다. 전산학부 류석영 교수 연구팀은 C언어의 '유니언'(union·여러 종류의 데이터를 같은 공간에 보관해 메모리 효율을 높이는 C언어의 핵심 기