Offcanvas

CSO / 랜섬웨어 / 보안 / 악성코드

'더 나은 오픈소스 보안을 위한 가이드' OWASP 상위 10대 OSS 위험 톺아보기

2024.04.12 Chris Hughes  |  CSO
OWASP 상위 10대 오픈소스 소프트웨어(OSS) 위험 목록은 보안 실무자가 CVE 카탈로그 같은 후행 지표를 극복하고 OSS 구성 요소를 안전하게 사용할 수 있도록 지침을 제공한다.
 
ⓒ Getty Images Bank

최근 OSS의 보안 및 사용 방식을 비판적으로 검토해야 한다는 요구가 늘고 있다. XZ 유틸(XZ Utils) 사건처럼 오픈소스 소프트웨어의 여러 취약점과 위험이 노출됐기 때문이다.

지난 3월 XZ 파일의 압축 및 압축 해제를 위해 널리 사용되던 OSS인 XZ 유틸에 백도어 악성코드가 발견됐다. 만약 제때 발견되지 않았다면 지금까지 가장 심각한 소프트웨어 공급망 침해 사고 중 하나가 됐을 수 있다. 비록 로그4j(Log4j)만큼 광범위하게 악용되진 않았지만, 현대 디지털 생태계가 매우 취약하며 OSS를 소비하고 보호하는 방식을 개선해야 한다는 경각심을 일깨우는 계기가 됐다.

이런 사고에 대응해 OWASP(Open Web Application Security Project)OSS 10대 위험 등 사이버 보안 실무자를 위한 추가 리소스 및 지침도 발전하고 있다. 이는 OSS를 안전하게 관리하고 사용하는 방식을 개선하는 데 도움을 준다.

OWASP 목록은 원래 소프트웨어 공급망 및 애플리케이션 보안 기업인 엔도르랩(Endor Labs)이 OSS, CI/CD 파이프라인 및 취약점 관리의 안전한 사용에 중점을 두고 제작했다. 팔로알토, 하시코프, 씨티은행 등 업계 유명 기업들이 프로젝트를 지원했다.

기존에는 취약점 관리에서 알려진 취약점, 주로 CVE(Common Vulnerability and Exposures) 목록에 집중했지만, 알려진 취약점은 위험의 후행 지표에 가깝다는 인식이 늘고 있다. 오픈소스 사용에 대한 접근 방식을 개선하려면 특정 OSS 라이브러리, 구성 요소 및 프로젝트와 관련 위험을 알려주는 선행 지표가 필요하다. 전체적으로 이는 OSS를 보다 안전하게 사용하고 취약점 악용으로 나타나는 잠재적 위험을 완화하는 데 도움이 될 수 있다.

오픈소스 소프트웨어 위험 요소 상위 10대 목록
 
ⓒ OWASP

1. 알려진 취약점
이 섹션에서는 소프트웨어 개발자와 유지 관리자가 실수로 도입한 후에 커뮤니티 보안 연구자들에 의해 공개되는 경우가 많은 소프트웨어 결함처럼 알려진 취약점이 있는 OSS 구성 요소를 다룬다.

이런 취약점은 조직 및 애플리케이션 내에서 사용되는 맥락에 따라 다르게 악용될 수 있다. 만약 개발자에게 이런 맥락을 제공하지 않으면 상당한 수고와 시간 낭비, 좌절감, 보안에 대한 분노로까지 이어질 수 있다.

이 문제를 해결하기 위한 노력에는 CISA의 KEV(Known Exploited Vulnerability) 카탈로그와 EPSS(Exploit Prediction Scoring System)가 있다.

조직은 사용하는 모든 OSS 구성 요소에서 취약점을 식별하고 알려진 익스플로잇, 익스플로잇 확률, 노이즈 발견을 최대 80% 줄일 수 있는 도달 가능성 분석 등의 방법에 기반해 발견의 우선순위를 정해야 한다. 이는 알려진 취약점이 있는 OSS 구성 요소의 위험을 줄이기 위한 조치다.

2. 합법적 패키지 손상
상위 10대 OSS 위험 목록의 다음 항목은 합법적 패키지의 손상이다. 악의적 공격자들은 합법적인 패키지를 손상시켜 조직과 개인 모두에게 영향을 줄 수 있다는 사실을 알고 있다.

이 공격 벡터에는 프로젝트 관리자의 계정 탈취, 패키지 리포지토리 취약점 이용 등이 있다. 또한 공격자는 나중에 악의적인 의도를 실현하기 위해 관리자가 되겠다고 자원할 수도 있다. 최근 발생한 XZ 유틸 사건에서도 누군가가 오랜 시간 동안 합법적인 기여자로 가장한 뒤 코드에 백도어를 삽입했다.

이런 위험을 완화하는 권장 사항으로는 마이크로소프트가 오픈SSF에 기증한 S2C2F(Secure Supply Chain Consumption Framework) 같은 새로운 리소스 및 지침이 있다. 현재 업계에는 이와 유사한 프레임워크가 몇 가지 더 있다.

3. 이름 혼동 공격
이름 혼동 공격(name confusion attacks)에서 공격자는 잠재적 피해자가 실수로 다운로드 및 사용하도록 유도하기 위해 합법적 OSS 패키지 또는 구성 요소와 이름이 유사한 악성 구성 요소를 만든다. CNCF 소프트웨어 공급망 공격 목록에도 나와 있는 이런 공격에는 타이포스쿼팅과 브랜드 재킹이 포함된다. 손상된 패키지가 조직의 IT 환경에 유입되면 시스템과 데이터의 기밀성·무결성·가용성(CIA)에 영향을 미칠 수 있다.

4. 유지 관리되지 않는 소프트웨어
OSS가 어려운 이유는 독점 소프트웨어와 달리 '공급업체'가 없기 때문이다. OSS 유지 관리자는 소프트웨어를 '있는 그대로' 제공한다. 다시 말해 소프트웨어가 유지 관리 및 업데이트될 것이라는 보장이 없다.

시놉시스의 OSS 보고서에 따르면 평가 대상 코드베이스의 85%에서 OSS 구성 요소가 4년 넘게 사용됐으며 2년간 새로운 개발이 이뤄지지 않은 것으로 나타났다.

연간 NVD 지표에 따라 소프트웨어가 빠르게 노후화되고 새로운 취약점이 기록적인 속도로 등장하고 있다는 점을 고려하면, 최신 애플리케이션이 적극적으로 업데이트되지 않는 OSS 구성 요소를 사용하는 경우는 보안에 좋은 징조가 아니다.

OSS는 대부분 무보수로 지원되기 때문에 소프트웨어 구성 요소가 적극적으로 개발 또는 유지 관리 되지 않을 가능성이 있다. 결함이 수정되지 않거나 수정되더라도 해당 구성 요소를 사용하는 소프트웨어 사용자가 원하는 일정에는 맞지 않을 수 있다. 또한 다운스트림 고객의 취약점 개선에 대한 독점 공급업체의 서비스 수준 계약(SLA)과 맞지 않을 수도 있다. OSS 구성 요소의 경우 사용하면 소유하게 되는 방식이기 때문이다.

OSS가 유지 관리되지 않는 또 다른 요인은 OSS 프로젝트의 94%가 10명 이하의 개발자에 의해 유지 관리된다는 점이다. 코드에 기여하는 개발자가 단 한 명에 불과한 경우도 25%에 달한다. 이 문제를 포괄적으로 이해하고자 한다면 친마이 샤르마가 저서 '디지털 커먼즈의 비극(Tragedy of the Digital Commons)'에서 인용한 내용을 일독하기를 권한다.

그는 "만약 버스에 치인다면 어떤 영향이 미칠까?"라고 질문했다. 흔히 '버스 팩터(Bus Factor)'라고 부르는 상황인데, 만약 프로젝트에 관리자가 1명인 경우 위험은 분명하다. 최신 코드베이스의 60~80%가 OSS로 구성돼 있다는 점을 고려하면, 디지털 생태계의 상당 부분, 심지어 가장 중요한 시스템조차 최소한의 지원과 유지 보수를 받는 소프트웨어로 운영되고 있다는 것을 알 수 있다. 이는 시스템적으로 악용될 여지가 충분하다.

이런 위험에 대처하기 위해 보고서에 인용된 권장 사항으로는 유지 관리자와 기여자의 수, 릴리스 빈도, MTTR(평균 수정 시간) 취약점 등 프로젝트의 활성 상태와 건전성을 확인하는 방법이 있다.

5. 오래된 소프트웨어
최신 버전과 업데이트가 존재함에도 불구하고 프로젝트에서 오래된 버전의 구성 요소를 사용하는 경우다. 시놉시스 보고서에서 의하면 이런 상황은 실제로 압도적으로 많은 코드베이스와 리포지토리에서 발생하고 있다.

물론 많은 최신 소프트웨어 애플리케이션과 프로젝트가 복잡하고 어지러울 정도로 많은 종속성을 갖고 있기 때문에 이 문제도 복잡할 수밖에 없다. 소나타입(Sonatype)과 엔도르랩과 같은 기업의 보고서에서 이 문제가 특히 강조됐는데, 엔도르랩은 '종속성 관리 현황'을 발표해 취약점의 95%가 전이적 종속성(transitive dependency)과 연관돼 있다고 설명했다.

6. 추적되지 않는 종속성
이는 개발자 및 조직이 특정 종속성 또는 구성 요소의 사용 여부를 전혀 인지하지 못하는 상황이다. 조직이 소프트웨어 구성 분석(SCA) 같은 도구로 OSS 소비를 파악하지 않거나, 조직이 소비 및 배포하는 소프트웨어의 구성 요소에 대해 가시성을 제공하는 SBOM(software bills of materials) 같은 새로운 도구를 채택하지 않을 때 문제가 발생할 수 있다.

실제로 SBOM 및 소프트웨어 공급망 보안에 대한 광범위한 노력이 있었다. 소프트웨어 자산 인벤토리는 수년 동안 SANS/CIS의 중요한 관리 대상이었지만, 기업들은 솔라윈즈(SolarWinds) 및 로그4j 같은 사건을 통해 구성 요소 및 라이브러리 수준까지 포괄적인 소프트웨어 자산 인벤토리가 부족하다는 사실을 깨달았다. SBOM은 조직이 기업으로서 구성 요소 인벤토리를 관리하도록 하는 방식으로 문제에 대응한다.

7. 라이선스 및 규제
이 위험은 구성 요소 또는 프로젝트에 라이선스가 없거나 다운스트림 소비자의 의도된 사용을 라이선스가 방해하는 상황을 의미한다. OWASP는 조직이 OSS 구성 요소를 사용할 때 해당 라이선스 약관을 준수해야 한다고 명시하고 있다. 그렇게 하지 않으면 라이선스 또는 저작권 침해, 심지어 법적 조치로 이어질 수 있다.

이는 조직이 독점 제품, 서비스 및 오퍼링에 OSS 구성 요소를 광범위하게 사용할수록 비즈니스 목표, M&A 활동 등에 영향을 미칠 수 있다.

조직은 소프트웨어에 사용 중인 구성 요소의 라이선스와 용도를 파악해 위험을 완화하는 조치를 취할 수 있다. 또한 OWASP는 라이선스가 없는 구성 요소의 사용을 완전히 피하고, 서로 상충되는 라이선스가 적용된 구성 요소를 식별할 것을 권장했다.

8. 미성숙한 소프트웨어
모든 소프트웨어가 똑같이 만들어지는 것은 아니기 때문에 부분적으로 유지 관리자의 참여 수준에 따라 성숙도에 편차가 있을 수 있다.

일부 OSS 프로젝트에는 NIST 보안 소프트웨어 개발 프레임워크(SSDF)에 인용된 개발 관행이 적용되지 않을 수 있다. 구체적인 사례로는 문서 미비, 회귀 테스트 미비, 검토 가이드라인 미비 등이 있다.

많은 개발자가 보안에 관심이 없다는 것도 불편한 현실이다. 리눅스 재단과 하버드 대학교 혁신 과학 연구소(LISH)의 연구에 따르면 무료 및 오픈소스 소프트웨어 개발자가 코드 보안을 개선하는 데 사용하는 시간은 전체 시간의 약 2.3%에 불과했다.

하지만 업계에서는 이를 지원하기 위해 노력하고 있다. 대표적으로 오픈SSF의 스코어카드가 있다. 이는 깃허브(Github)의 OSS 프로젝트에 대해 브랜치 보호 여부, 기여자 및 조직 수, CI 테스트, 퍼징, 유지 관리, 라이선싱 등 강력한 점검을 제공한다. 그 외에도 CISA와 오픈SSF의 '패키지 리포지토리 보안을 위한 원칙' 같은 프레임워크도 있다.

9. 승인되지 않은 변경
OWASP는 이를 개발자가 인지, 검토 또는 승인하지 않고 구성 요소가 변경될 수 있는 상황이라고 정의했다. 다운로드 링크가 변경되거나 버전이 바뀌지 않은 리소스를 가리키거나, 심지어 안전하지 않도록 변조된 데이터 전송을 가리킬 때 위험이 발생할 수 있다. OWASP는 보안 전송의 역할을 강조했다.

권장되는 조치 및 완화 방법으로는 보증을 위해 자원 ID(resource identifier)를 사용하고 변경 불가능한 아티팩트를 제시하는 것이 있다. 또한 구성 요소를 실제로 설치 및 사용하기 전에 서명과 다이제스트를 확인하는 방법도 있다. 전송 중 구성 요소가 손상될 위험을 줄이기 위해 조직은 네트워크 트래픽의 전송 및 통신에 보안 프로토콜을 사용해야 한다.

10. 과소 또는 과대 종속성
마지막으로 구성 요소가 제공하는 기능이 매우 적거나 많지만 실제로는 일부만 사용되는 상황이다. 이를 흔히 '소프트웨어 블롯(software bloat)'이라고 부른다.

종속성 크기가 작으면 코드 줄이 제한돼 있기 때문에 구성 요소가 보안을 위해 업스트림 프로젝트에 종속되게 된다. 반대로 코드가 비대해지거나 코드 줄 수가 기하급수적으로 늘어나는 경우, 의도한 용도만큼 필요하지 않거나 사용되지 않음에도 불구하고 공격 표면이 증가할 수 있다. 이는 잠재적으로 악용될 수 있는 코드 및 종속성을 가져오게 된다.

OWASP 보고서는 이런 경우 내부적으로 필요한 기능을 재개발해 과소 또는 과대 종속성에 의존하는 위험을 완화할 것을 권장했다. 최근 클라우드 네이티브 컨테이너 환경에서는 최소한으로 강화돼 취약점이 거의 없는 기본 이미지인 '보안 기본 이미지(secure base images)'를 활용하려는 움직임이 체인가드(Chainguard) 같은 리더에 의해 확산되고 있다.

* Chris Hughes는 IT/사이버 보안 분야에서 20년 가까이 경험을 쌓아온 전문가다. Aquia의 공동 창립자이자 CISO로 재직하고 있으며, 캐피톨 기술 대학과 메릴랜드 대학 글로벌 캠퍼스의 MS 사이버 보안 프로그램의 겸임 교수로 활동하고 있다. ciokr@idg.co.kr
CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.