Kant's IT/Issue on IT&Security

메모리 안전성 취약점 근본적 제거 방안

Kant Jo 2024. 10. 2. 08:42

Eliminating Memory Safety Vulnerabilities at the Source

 

Eliminating Memory Safety Vulnerabilities at the Source

Posted by Jeff Vander Stoep - Android team, and Alex Rebert - Security Foundations Memory safety vulnerabilities remain a pervasive threa...

security.googleblog.com

 

 

  • 메모리 안전성 취약점의 문제점
    • 메모리 안전성 취약점은 소프트웨어 보안에 가장 큰 위협 요소 중 하나로 남아 있음
    • 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을 통해 개발 과정에서 취약점 발생을 원천적으로 차단하고, 높은 수준의 보안을 지속적으로 유지할 수 있음
  • 효율적이고 비용 절감 가능한 방식
    • Safe Coding은 보안 문제를 사전에 예방하여, 방어 비용을 줄이고 소프트웨어의 효율성을 높임
    • 이를 통해 성능 저하 없이 보안성과 개발 생산성을 동시에 확보할 수 있음
  • 기존 코드와의 상호운용성
    • 기존 코드 전체를 재작성할 필요 없이, 메모리 안전 언어로 작성된 새 코드와 기존 코드 간의 안전한 상호운용성을 우선시함
    • 안드로이드는 Rust ↔ C++, Rust ↔ Kotlin 상호운용성을 강화하는 도구 개발에 집중하고 있음
  • 향후 전망
    • 메모리 안전 언어로의 전환이 진행됨에 따라 익스플로잇 완화 전략은 점차 덜 사용될 전망이며, 퍼징 및 탐지 기법도 소규모 코드에 더 효과적으로 적용될 것임