본문 바로가기

POST/Tech

오픈 소스 소프트웨어의 사이버 보안 문제 해결 방법

2022.07.26 Addressing Cybersecurity Challenges in Open Source Software
원문보기

LF Research는 파트너들과 함께 539명의 오픈소스 소프트웨어 유지 관리자와 핵심 기여자로 구성된 설문 조사와 해당 개인의 하위 집합에서 실시한 인터뷰를 포함한 보고서를 발행했습니다. 해당 보고서는 보안 프로토콜을 요구하는 정책이 부족하고 종속성이 효과적으로 관리되지 않는 조직 수준을 포함해 가장 심각한 보안 개발 격차와 과제를 식별했습니다.

오픈소스 소프트웨어는 현대 디지털 시대에 뗄 수 없는 기술 환경의 필수적인 부분이 되었습니다. 한 보고서에 따르면 일반적으로 최신 애플리케이션 스택의 70~90%는 운영 체제에서 클라우드 컨테이너, 암호화 및 네트워킹 기능에 이르기까지 기존 OSS로 구성되며 때로는 기업이나 웹사이트를 실행하는 애플리케이션까지 포함합니다. 무료 재사용, 리믹스와 재배포까지 가능한 저작권 라이선스 덕분에 OSS는 유연하게 사용됩니다. 일반적으로 OSS는 보안에 대한 훌륭한 평가를 받고 있지만 코드 결함을 줄이거나 취약성을 발견했을 때 이를 신속하고 안전하게 대응하기 어려울 수 있습니다. 또한, 기업에는 알려진 결함에 취약한지, 업그레이드 시기나 방법을 알 수 있을 만큼 소프트웨어 자산에 대한 인벤토리가 없는 경우가 많습니다. 심지어 자신이 사용하는 OSS의 보안을 강화하는 데 기꺼이 투자하려는 기업조차도 이러한 투자를 어디서 해야 하는지, 그리고 그 시급성에 대해 모르는 경우가 많습니다.

앞서 언급한 바와 같이 오늘날 모든 규모의 조직은 소프트웨어에 크게 의존하고 있으며 해당 소프트웨어 공급망의 대부분은 오픈 소스 소프트웨어 구성요소로 구성되어 있습니다. 이러한 이유로 오픈 소스 소프트웨어는 사이버 보안에 영향을 미칩니다. 현대의 공급망 공격은 기존의 방식과는 다르게 지능적으로 변화하고 있습니다. Log4shell과 같은 사건에서 본 것처럼 소프트웨어 에코시스템 전반에 걸쳐 널리 사용되는 소규모 라이브러리 결함이 시스템 위험을 유발하기도 합니다.

1.보안 문제 실태

오픈 소스 소프트웨어 구성 요소의 보안 문제를 해결하려면 소프트웨어를 보호하는 기존 접근 방식과 다른 접근 방식이 필요합니다. 오픈 소스 소프트웨어를 사용하는 조직과 회사는 사용 중인 종속성을 더 잘 인식하고 모든 구성 요소에서 유용성, 신뢰성 및 취약성을 사전에 정기적으로 모니터링해야 합니다.

(1)  대부분의 조직에는 OSS를 다루는 보안 정책이 없습니다.
Organizationswith a security policy covering OSS

오픈소스 개발 또는 사용을 위한 오픈소스 보안 정책이 있는가에 대한 질문에 조직의 49%만이 그렇다고 답한 것은 놀라운 발견 중 하나입니다. 조직의 34%는 OSS 개발 및 사용에 대한 보안 정책이 없다고 밝혔고, 응답자의 17%는 조직에 계획이 있는지 확신이 없었습니다. OSS를 다루는 보안 정책이 있다는 것은 즉, 사용 중인 많은 OSS 구성 요소를 포함하는 보안 계획이 있음을 뜻합니다. 소프트웨어 보안 정책이 없으면 조직은 소프트웨어를 포함하기 전에 평가하지 못하거나 취약성에 적절한 대응을 하지 못할 수 있습니다.

(2)  소규모 조직은 과도한 OSS 보안 위험을 감수합니다.

오픈 소스 개발 또는 사용을 위한 오픈 소스 보안 정책이 있습니까? (하나 선택) 기업 규모별

조직 규모별 OSS 보안 정책 분포

조사 표본은 조직 규모별로 다음과 같이 분포했습니다. 소규모 조직(44%, 1-499명), 중간 조직(20%, 500-4,000명), 대규모 조직(35%, 5,000명 이상), 1% 모르거나 확실하지 않음

조직 규모별로 OSS를 다루는 보안 정책의 척도에서 가장 눈에 띄는 것은 직원 수 1-499명 조직과 직원 500명 이상 조직 간의 분포 차이 입니다. 소규모 조직의 41%만이 OSS 보안 정책을 보유하고 있는 반면, 대규모 조직은 56~57%로 보안 정책을 보유하고 있습니다.

(3) 조직의 종속성 보안 관리의 부재

여러가지 이유로 구성 요소 코드에는 다양한 취약점이 존재합니다. 기여요인에는 사용된 프로그래밍 언어, 사용 중인 CI/CD 프로세스, 보안 소프트웨어 개발에 대한 개발자의 교육 및 기술, 테스트 범위가포함됩니다.

귀하의 소프트웨어가 의존하는 직접적인 종속성이 악의적이거나 손상될 수 있다고 얼마나 우려하십니까? (하나 선택) by 오픈 소스 개발 또는 사용을 위한 오픈 소스보안 정책이 있습니까?

직접 종속성에 대한 취약성 문제

모든 조직에서 24%만이직접 종속 항목의 보안에 대해 확신하고 있습니다. 이 값은 OSS 보안정책이 있는 조직의 경우 36%로 증가하지만 그러한 보안 정책이 없는 조직의 경우 단 9%로 떨어집니다. 종속성을 추적하기 쉽다고 보고한 조직(37%)은 종속성을 이해하는 데 정확할 수 있지만 이것은 이러한 종속성이 집합적으로 안전하다는 의미는 아닙니다.

---

여러분의 프로젝트에는 얼마나 많은 취약점이 있습니까? Snyk는 종속성의 취약성이 악용될 수 있다는 가정 하에, 종속성의 알려진 취약성과 결합된 특정 프로젝트의 알려진 취약성을 합산해 추정했습니다. Snyk 데이터의 .Net 프로젝트에는 평균적으로 프로젝트당 23개의 취약점이 있으며 Go는 34개, Java는 90개, JavaScript는 47개, Python은 36개가 발견되었습니다. Snyk의 데이터에 따르면 약 40%가 모든 취약점은 이러한 전이적 종속성에서 비롯된다고 합니다.

언어 및 심각도별 평균 취약점 수

전이적 종속성으로 인해 발생하는 취약점을 추적하는 것은 오늘날 DevOps에서 가장 어려운 과제 중 하나입니다. 50개의 종속성이 있는 프로젝트가 있다고 가정했을 때 평균적인 프로젝트에 5개의 치명적인 취약점이 있는 경우 첫 번째 수준의 종속성만으로도 200개 이상의 심각한 취약점이 발생할 수 있습니다.

2.보안 문제의 해결

조직이 사이버 보안 요구 사항을 해결하고 우선 순위를 지정하는 방법

이 연구의 주요 발견은 OSS에 적용되는 보안이 빠르게 발전하고 있다는 것입니다. 그렇기에 향상된 기능과 도구를 통합하여 활용하는 것은 조직이 소프트웨어 공급망 보안 요구 사항을 해결하는 데에 직면하는 복잡성을 줄이는 데 도움이 됩니다.

(1) 종속성에서 취약점 찾기

종속성의 취약점을 어떻게 알 수 있습니까? 그리고 기준 오픈 소스 개발 또는 사용을 위한 오픈 소스 보안 정책이 있습니까? (해당 사항 모두 선택)

위 그래프는 취약성을 식별하기 위해 일반적으로 사용되는 기술이 4가지임을 보여줍니다. 조직의 53%가 실행하는 주요 접근 방식은 CISA(US-CERT), NIST(NVD), MITRE(CVE), 보안 제품의 사용 등 입니다. 두 번째 주요 접근 방식은 자동화된 모니터링(또는 알려진 취약점에 대한 패키지 스캔)이며 49%의 조직에서 실행하고 있습니다.

(2) 취약점 해결하는데 소요되는 시간

언어별 평균 수정 시간

취약점이 식별된 이후, 이를 수정하는 데에 걸리는 시간을 질문해보았습니다. 위 그래프에서 언어별 평균 수정 시간을 보면 GO는 49일만에 수정이 가능한 반면, .Net은 148일의 수정 소요 시간으로 가장 뒤떨어져 있습니다.

3. OSS를 사용하기 위한 전제 조건

오픈소스 구성요소를 사용하면 비용을 절감하고 출시 시간을 단축하며 더 많은 혁신과 부가가치 활동에 참여할 수 있도록 할 수 있습니다. OSS 패키지의 보안을 평가하는 “올바른 방법”은 없지만 조직이 평균적으로 세 가지의 접근 방식을 사용한다는 것을 확인할 수 있었습니다.

사용하는 오픈 소스 패키지의 보안을 어떻게 확인합니까? (해당되는 모든 것들을 고르세요)

OSS 패키지의 보안 검토

조직의 44%가 사용하는 가장 일반적인 접근 방식은 개발자가 소스 코드를 검사하도록 하는 것입니다. 소스 코드를 검토하면 보안과 밀접한 관련이 있는 코드의 품질에 대해 많은 이야기를 할 수 있습니다. 조직의 40%가 사용하는 두 번째 접근 방식은 프로젝트 또는 구성 요소를 지원하는 커뮤니티를 평가하는 것입니다. 조직의 36%에서 관찰된 전략은 개발자가 구성 요소를 찾고 검사하는 데 도움이 되는 타사 도구를 사용하는 것입니다.

여러 보안 테스트 도구를 사용하는 것은 OSS 사용에 대한 모범적 자세입니다.

평균적으로 연구에 참여한 조직은 2~3개의 보안 테스트 도구를 사용했습니다. 타사 도구를 사용하면 SDLC 전반에 걸친 범위, 확장성, 자동화 가능성 및 적용 범위로 인해 OSS 보안 태세를 크게 개선할 수 있습니다. 예산, 자원, 시간이 허락하는 한; 더 많은 도구를 사용하면 모두 다른 방식으로 가치를 추가하므로 유리할 수 있습니다.

4. OSS 보안을 향상시키는 가장 중요한 방법

다음 중 오픈 소스 소프트웨어 공급망의 보안을 개선하는 데 중요한 활동은 무엇입니까? (해당되는 모든 것들을 고르세요)

오픈소스 소프트웨어 보안 강화 활동

OSS의 보안을 향상시키기 위해 다음 활동 중 어떤 것이 중요한지 묻는 질문에 조직은 다중 응답을 허용했습니다.

조직의 59%는 공급업체가 보안 도구에 향상된 인텔리전스를 추가하고 이제 책임을 지도록 하는 것을 가장 중요하게 생각함을 확인했습니다. 이는 최종 사용자 조직이 공급업체 커뮤니티를 강력한 승수로 보고 있다는 것이자, 최종 사용자 조직이 보안 문제를 해결하는 방법을 이해하는 데 어려움을 겪고 있으며 보다 광범위한 전문 지식을 보유한 공급업체 및 서비스 업체와 이러한 책임을 공유, 부여할 기회를 갖겠다는 것입니다.

조직의 52%가 인용한, 두 번째로 중요한 활동은 안전한 소프트웨어 개발을 위한 포괄적인 모범사례를 확보하는 것입니다. 안전한 소프트웨어 개발을 위한 모범 사례에 대한 최종 사용자 조직의 높은 관심도를 확인할 수 있었습니다.

IT 산업 조직이 오픈 소스 소프트웨어 개발의 보안을 향상시킬 수 있는 방법에는 어떤 것이 있습니까? (해당되는 모든 것들을 고르세요)

조직이 OSS 개발의 보안을 개선할 수 있는 방법

조직과 개발자는 안전한 소프트웨어 개발을 위한 모범 사례의 중요성을 잘 알고 있습니다. OSS 개발을 위한 모범 사례의 중요성은 앞서 ‘오픈소스 소프트웨어 보안 강화 활동’ 그래프에서 OSS 보안 개선을 위한 두 번째로 중요한 활동으로 표명되었습니다. 모범 사례는 IT 산업 조직이 OSS 개발의 보안을 향상시킬 수 있는 선도적인 방법으로 그림 16에서 조직의 73%에 의해 다시 한 번 표명되었습니다. 조직의 61%가 파악한 두 번째 주요 개선 사항은 OSS 구성 요소의 보안 취약성을 분석하고 수정하기 위한 도구를 제공하는 것입니다.

---

오픈소스 소프트웨어 (OSS)는 오늘날 우리가 의존하는 소프트웨어의 개발 및 배포에 엄청난 영향을 미쳤습니다. OSS는 소프트웨어 구성 요소를 개발하고 공유하는 협업적이고 개방적인 방식을 통해 혁신의 핵심 엔진 역할을 했고, 핵심 소프트웨어 구성 요소의 광범위한 재사용 및 공유를 장려했습니다. 유연한 확장성에는 양면성이 존재할 수밖에 없습니다. 코드의 결함을 줄이거나, 취약성을 사전에 확인할 수 있는 노력이 지속적으로 필요합니다.

“오픈 소스 소프트웨어 생태계에서 더 나은 보안 관행, 도구 및 기술에 대한 긴급한 요구를 해결하기 위해 2020년에 깊이 투자한 조직들이 모여 OpenSSF(Open Source Security Foundation)를 구성하고 리눅스 재단이 그 노력을 수용하기로 결정했습니다. 이 공공의 노력은 75개 이상의 조직들과의 파트너십을 통해 다양한 공공 이니셔티브에 걸쳐 수백 명의 적극적인 참가자를 포함하고 수백만 명의 OSS 개발자에게 도달했습니다. 이 보고서는 그러한 노력을 지원하는데 사용할 분석을 제공합니다.

브라이언 벨렌도르프

오픈 소스 보안 재단 대표, 리눅스 재단 (OpenSSF)