NSA, 메모리 안전문제로 C/C++ 대신 C#, Go, Rust 등의 언어를 권장하는 지침 발표를 했군요
주요 내용을 확인해 봤는데요..
Commonly used languages, such as C and C++, provide a lot of freedom and flexibility
in memory management while relying heavily on the programmer to perform the needed
checks on memory references. Simple mistakes can lead to exploitable memory-based
vulnerabilities. Software analysis tools can detect many instances of memory
management issues and operating environment options can also provide some
protection, but inherent protections offered by memory safe software languages can
prevent or mitigate most memory management issues. NSA recommends using a
memory safe language when possible. While the use of added protections to nonmemory safe languages and the use of memory safe languages do not provide absolute
protection against exploitable memory issues, they do provide considerable protection.
간단하게 해석해 보자면요..
C 및 C++와 같이 일반적으로 사용되는 언어는 많은 자유도와 유연성을 제공합니다.
프로그래머에게 필요한 작업을 수행하는 데 크게 의존하면서 메모리 관리에서
메모리 참조를 확인합니다. 단순한 실수는 악용 가능한 메모리 기반 취약점. 소프트웨어 분석 도구는 많은 메모리 인스턴스를 감지할 수 있습니다.
관리 문제 및 운영 환경 옵션도 일부 제공할 수 있습니다.
보호 기능을 제공하지만 메모리 안전 소프트웨어 언어가 제공하는 고유한 보호 기능은 대부분의 메모리 관리 문제를 방지하거나 완화합니다.
NSA는 다음을 사용할 것을 권장합니다.
가능한 경우 메모리 안전 언어. 비메모리 안전 언어에 대한 추가 보호를 사용하고 메모리 안전 언어를 사용한다고 해서 절대적인 악용 가능한 메모리 문제로부터 보호하기 위해 상당한 보호 기능을 제공합니다.
(다시말해서 C와 C++ 보다는 메모리 안전 언어를 사용하라는...;;; )
간단하게 정리해보자면 아래와 같고요..
- 소프트웨어 취약점의 70% 이상은 메모리 안전 문제에서 발생
- 많이 사용되는 C/C++ 같은 언어는 메모리 관리가 자유롭지만 프로그래머가 메모리 레퍼런스를 관리해야함
- 이 문제를 해결하기 위한 권장사항
- 메모리 안전 언어 이용 : C#, Go, Java®, Ruby™, Rust®, Swift®
- Application security testing 도입 (DAST/SAST)
- 취약점 차단 기능 도입 : Control Flow Guard (CFG), Address Space Layout Randomization (ASLR), Data Execution Prevention (DEP)
자세한 내용은 아래 웹페이지를 참고하시면 좋을것 같고요..
오늘의 블로그는 여기까지입니다.
항상 믿고 봐주셔서 감사합니다.