ClickCease CISA 보고서: 중요 오픈소스 프로젝트의 메모리 안전 위험성

인기 뉴스레터 구독하기

4,500명 이상의 Linux 및 오픈 소스 전문가와 함께하세요!

한 달에 두 번. 스팸이 없습니다.

CISA 보고서: 중요 오픈소스 프로젝트의 메모리 안전 위험성

by 로한 티말시나

2024년 7월 10일 TuxCare 전문가 팀

오픈소스 프로젝트는 웹 브라우저부터 모바일 앱, 클라우드 서비스까지 모든 것을 지원하는 최신 소프트웨어 인프라의 초석입니다. 전 세계 커뮤니티에서 기여하고 유지 관리하는 이러한 프로젝트는 전례 없는 규모의 혁신과 협업을 가능하게 합니다. 하지만 미국 사이버보안 및 인프라 보안국(CISA)의 최근 연구에서는 오픈소스 소프트웨어의 메모리 안전이라는 중요한 문제를 조명하고 있습니다.

 

오픈소스 프로젝트에 대한 CISA의 조사 결과

 

CISA는 미국 연방수사국(FBI) 및 호주(ASD, ACSC), 캐나다(CCCS)의 사이버 보안 기관과 협력하여 172개의 주요 오픈소스 프로젝트에 대한 보고서를 발표했습니다. 이 연구는 2023년 12월에 발표된 '메모리 안전 로드맵 사례'의 후속 조치로, 메모리 결함에 대한 취약성을 파악하는 것을 목표로 합니다. 이 보고서는 소프트웨어 보안을 강화하기 위해 메모리 안전 코드를 작성하는 것이 중요하다는 점을 강조합니다.

 

메모리 안전에 대한 이해

 

메모리 안전성이란 버퍼 오버플로, 댕글링 포인터와 같은 일반적인 메모리 관련 오류를 방지하는 프로그래밍 언어의 기능을 말합니다. 메모리 안전 언어는 메모리 할당 및 할당을 자동으로 관리하여 오류의 위험을 크게 줄이고 개발자의 부담을 최소화합니다.

 

메모리 안전 언어의 예

Rust: 차용 검사기로 잘 알려진 Rust는 데이터 경합을 없애고 안전한 메모리 액세스를 보장합니다.

골랑, 자바, C#, 파이썬: 이러한 언어는 가비지 컬렉션을 통해 메모리를 관리하며, 악용을 방지하기 위해 해제된 메모리를 자동으로 회수합니다.

메모리 안전하지 않은 언어

C, C++, Objective-C, Assembly, Cython, D와 같은 언어에는 내장 메모리 관리 메커니즘이 제공되지 않습니다. 개발자가 수동으로 메모리를 관리해야 하므로 오류와 취약점이 발생할 가능성이 높아집니다.

 

널리 사용되는 안전하지 않은 오픈 소스 코드

 

CISA의 보고서에 따르면 분석 대상인 중요 오픈소스 프로젝트의 절반 이상에 메모리 안전하지 않은 코드가 포함되어 있는 것으로 나타났습니다. 주요 결과는 다음과 같습니다:

  • 프로젝트의 52%에는 메모리 안전하지 않은 언어로 작성된 코드가 포함되어 있습니다.
  • 이 프로젝트의 전체 코드 라인(LoC) 중 55%가 메모리 안전하지 않습니다.
  • 규모가 큰 프로젝트일수록 메모리 안전하지 않은 코드가 불균형적으로 많으며, 상위 10개 프로젝트의 메모리 안전하지 않은 LoC는 26%를 초과합니다.
  • 이러한 대규모 프로젝트에서 메모리 안전하지 않은 LoC의 평균 비율은 62.5%이며, 94%를 초과하는 프로젝트도 4개나 됩니다.
  • 메모리 안전 언어로 작성된 프로젝트조차도 메모리 안전하지 않은 언어로 작성된 컴포넌트에 의존하는 경우가 많습니다.

주목할 만한 예는 다음과 같습니다:

  • Linux: 안전하지 않은 코드 비율 95%
  • Tor: 안전하지 않은 코드 비율 93%
  • 크롬: 안전하지 않은 비율 51%
  • MySQL 서버: 안전하지 않은 비율 84%
  • glibc: 비율 85%
  • Redis: 비율 85%
  • SystemD: 비율 65%
  • 전자: 비율 47%

 

과제 및 권장 사항

 

소프트웨어 개발자는 종종 메모리 안전하지 않은 언어를 사용해야 하는 중대한 문제에 직면합니다. 이러한 문제에는 리소스 제약, 성능 요구 사항, 네트워킹, 암호화, 운영 체제 기능과 같은 낮은 수준의 기능을 구현해야 할 필요성 등이 포함됩니다. 또한 CISA는 개발자가 특정 요구 사항을 충족하기 위해 메모리 안전하지 않은 기능을 비활성화하여 위험을 더욱 증가시키는 문제도 강조합니다.

오픈소스 프로젝트의 보안을 강화하기 위해 CISA는 다음을 권장합니다:

메모리 안전 언어로 새 코드를 작성하세요: Rust, Java, Go와 같은 언어가 선호됩니다.

기존 프로젝트 전환: 중요한 구성 요소는 메모리 안전 언어로 마이그레이션해야 합니다.

안전한 코딩 관행을 따르세요: 개발자는 종속성을 주의 깊게 관리하고 감사해야 합니다.

지속적인 테스트: 상태 분석, 동적 분석, 퍼즈 테스트를 수행하여 메모리 안전 문제를 감지하고 해결합니다.

 

결론

 

CISA의 연구 결과는 오픈소스 커뮤니티가 메모리 안전에 우선순위를 두어야 할 필요성을 강조합니다. 개발자는 메모리 안전 언어와 관행을 채택함으로써 오픈 소스 소프트웨어의 취약성을 크게 줄일 수 있으며, 이를 통해 모두에게 더 안전한 소프트웨어를 제공할 수 있습니다. 오픈소스 프로젝트의 중요성과 규모가 계속 커짐에 따라 안전성과 신뢰성을 보장하는 것이 무엇보다 중요해졌습니다.

 

이 글의 출처는 BleepingComputer의 기사입니다.

요약
CISA 보고서: 중요 오픈소스 프로젝트의 메모리 안전 위험성
기사 이름
CISA 보고서: 중요 오픈소스 프로젝트의 메모리 안전 위험성
설명
오픈소스 프로젝트에서 메모리 안전의 중요성에 대해 알아보세요. 안전한 코딩 관행에 대한 CISA의 조사 결과와 권장 사항에 대해 알아보세요.
작성자
게시자 이름
TuxCare
게시자 로고

Kernel 재부팅, 시스템 다운타임 또는 예정된 유지 보수 기간 없이 취약성 패치를 자동화하고 싶으신가요?

TuxCare 게스트 작가 되기

메일

Linux 환경을 이해하도록
도와주세요!

오픈소스 현황에 대한 설문조사를 완료하면 최고 상금 500달러를 포함한 여러 가지 상품 중 하나를 받을 수 있습니다!

엔터프라이즈 Linux의 미래를 만들기 위해서는 여러분의 전문 지식이 필요합니다!