Eliminating Memory Safety Vulnerabilities at the Source
- 메모리 안전성 취약점의 문제점
- 메모리 안전성 취약점은 소프트웨어 보안에 가장 큰 위협 요소 중 하나로 남아 있음
- Google은 Safe Coding(안전한 코딩)을 통해 메모리 안전 언어로 전환하는 것이 이러한 취약점을 근본적으로 해결하는 방법이라고 강조함
- Safe Coding을 통한 위험 감소
- 새롭게 작성되는 코드에 대해 메모리 안전 언어를 도입하면 기존 코드를 대대적으로 수정하지 않고도 보안 위험을 크게 줄일 수 있음
- 안드로이드는 6년 동안 메모리 안전 언어로 전환하여 메모리 안전 취약점이 76%에서 24%로 감소함
- 취약점의 감소 원리
- 취약점 수명은 시간이 지남에 따라 지수적으로 감소함
- 연구 결과에 따르면 새 코드나 최근에 수정된 코드에서 취약점이 주로 발생하며, 시간이 지나면 취약점 밀도는 크게 낮아짐
- 5년 이상 된 코드는 새로운 코드에 비해 취약점 밀도가 3.4배에서 7.4배 낮음
- 안드로이드 사례
- 안드로이드 팀은 2019년부터 새 코드에 대해 메모리 안전 언어를 우선 적용
- 메모리 안전 취약점의 비율은 2019년 76%에서 2024년 24%로 감소
- 이는 산업 평균인 70%보다 훨씬 낮은 수치로, 보안 리스크를 크게 줄임
- 기존 메모리 안전성 전략의 한계
- 1세대: 반응적 패치
- 취약점이 발견되면 이를 수정하는 방식으로 대응하였으나, 지속적인 보안 패치로 인해 비용이 발생함
- 2세대: 예방적 완화
- 익스플로잇 완화 전략으로 공격자의 비용을 높이는 방법이나, 성능 저하 등의 문제가 있음
- 공격자와의 지속적인 방어 및 공격의 경주가 필요함
- 3세대: 예방적 취약점 발견
- 퍼징과 취약점 스캐닝을 통해 취약점을 미리 찾아내는 방법이나, 근본적인 해결책은 아님
- 4세대: 고신뢰 예방 전략
- 메모리 안전 언어로 전환은 단순한 기술 변화가 아닌, 보안 설계에 대한 근본적인 접근 방식의 변화임
- Safe Coding을 통해 개발 과정에서 취약점 발생을 원천적으로 차단하고, 높은 수준의 보안을 지속적으로 유지할 수 있음
- 1세대: 반응적 패치
- 효율적이고 비용 절감 가능한 방식
- Safe Coding은 보안 문제를 사전에 예방하여, 방어 비용을 줄이고 소프트웨어의 효율성을 높임
- 이를 통해 성능 저하 없이 보안성과 개발 생산성을 동시에 확보할 수 있음
- 기존 코드와의 상호운용성
- 기존 코드 전체를 재작성할 필요 없이, 메모리 안전 언어로 작성된 새 코드와 기존 코드 간의 안전한 상호운용성을 우선시함
- 안드로이드는 Rust ↔ C++, Rust ↔ Kotlin 상호운용성을 강화하는 도구 개발에 집중하고 있음
- 향후 전망
- 메모리 안전 언어로의 전환이 진행됨에 따라 익스플로잇 완화 전략은 점차 덜 사용될 전망이며, 퍼징 및 탐지 기법도 소규모 코드에 더 효과적으로 적용될 것임
'Kant's IT > Issue on IT&Security' 카테고리의 다른 글
Google과 Arm의 GPU 보안 강화 (0) | 2024.10.02 |
---|---|
악성코드 첨부된 이메일, 유포 1위로 기승 (1) | 2024.10.02 |
금융권 SaaS 활용 첫발···14개사 혁신금융 지정 (0) | 2024.10.02 |
클라우드 내비게이터: CNAPP와 보안태세관리 트렌드 (0) | 2024.10.02 |
성공적인 제로 트러스트 네트워크 액세스(ZTNA) 구현을 위한 제언 (1) | 2024.10.02 |