본문 바로가기

POST/Insight

오픈소스 보안 가이드

 

소프트웨어 공급망에 의존성 오픈소스 구성요소를 통합하기 위해서는 구성요소의 보안 위험도를 검증해야 합니다. 이 검증 과정에는 기능에 대한 검토에서부터 소프트웨어 프로젝트에 참여하고 있는 공헌자와 메인테이너를 포함한 프로젝트의 전반에 대한 내용도 포함됩니다.

 

검증 내용에는:

  • 개발 방법론의 심도깊은 검토
  • 프로젝트 커뮤니티의 활동
  • ‘오픈소스 취약성’ 중심의 코드기반 보안의 분석
  • 즉각적인 주의를 필요로하는 심각한 오픈소스 보안 이슈에 대한 오픈소스 프로젝트 메인테이너의 참여도와 대응 수준

오픈소스 보안 정의

오픈소스 보안이란 오픈소스로 개발되고 배포된 소프트웨어 구성요소를 안전하게 사용할 수 있도록 보장하는 관행을 의미합니다. 오픈소스 보안 검증에는 다양한 요소를 살펴보게 되며 조직별로 상이합니다. 대체로 소프트웨어의 설계, 코드의 질, 커뮤니티가 제공하는 서포트 수준 등을 살펴보게 됩니다.

 

오픈소스를 사용한다는 것은 해당 오픈소스를 개발하는 커뮤니티와 개발자가 보안의 중요성에 대한 인식이 있다는 확신과 신뢰가 필요하며, 이런 신뢰는 사용자가 직접 해당 오픈소스 프로젝트를 검토할때 비로소 생깁니다. 소프트웨어 개발주기라는 더 큰 맥락에서의 소프트웨어 보안 상태를 보장한다는 의미입니다.

오픈소스에 내재된 보안 위험에 대한 이해

오픈소스의 개방성과 쉬운 적용성은 큰 장점이지만 소프트웨어 공급망 차원에서 주의를 요하는 복잡한 보안 문제를 내포하고 있습니다.

 

오픈소스가 내재한 보안 위험에는

  • 프로젝트의 공개성으로 인한 난제들: 소스코드가 공개되어 협업을 통한 버그 발견과 개선이 쉬운 반면, 악의적인 플레이어들이 취약성을 쉽게 찾고 악용할 수 있습니다.
  • 포괄적인 테스트 부족: 오픈소스 프로젝트는 중앙화된 퀄리티 관리가 부족한 경우가 많으며 보안 헛점에 대한 지속적인 코드 테스팅이 이뤄지기 어렵습니다. 효율적인 테스트 과정의 부재로 인해 버그나 취약성이 생겨날 수 있습니다.
  • 제한된 공급업체의 책임: 상용 소프트웨어 벤더가 제공하는 전담 서포트를 대부분의 오픈소스 프로젝트는 구조적으로나 자원의 부족으로 제공하기 어렵습니다. 분산된 조직과 한정된 자원으로 인해 취약성에 대한 대응이 늦어질 수 있어 오픈소스 소프트웨어 사용자가 위험에 노출될 가능성이 높아집니다.

오픈소스의 협업정신은 버그 발견과 수정에 용이하지만 코드를 악의적인 플레이어에게 노출할 수 있습니다. SDLC내의 오픈소스 보안에 우선순위를 높임으로써 오픈소스의 장점을 활용하고 잠재된 위험은 줄일 수 있습니다.

오픈소스 보안 검증

SDLC의 보안 상태를 강화하려면 다음의 방법을 활용할 수 있습니다.

  • 코드 리뷰: 오픈소스 코드를 사용하기 전 코드 리뷰를 진행합니다. 코드의 질은 보안에 직접 영향을 주기 때문에 코드 리뷰는 매우 중요한 과정입니다. 부적절한 코드의 사용은 보안 취약성을 높입니다.
  • 오픈소스 라이센스 검토: 소프트웨어의 라이센스를 꼼꼼히 검토합니다. 라이센스가 재배포 혹은 코드 수정을 허가하는지 확인해야 합니다. 특히 GPL의 경우, 폐쇄 소스 제품에 위험을 가져올 수 있어 특정 사용사례에서 라이센스가 끼칠 수 있는 잠재 영향을 반드시 파악해야 합니다. 특히 BSD나 MIT 라이센스와 달리 GPL과 같은 라이센스는 폐쇄 소스 제품에 위험을 가져올 수 있으므로 특정 사용 사례에서 라이센스의 잠재적 영향을 고려해야 합니다.
  • 커뮤니티 참여도 평가: 소프트웨어 프로젝트가 커뮤니티에 의해 활발하게 유지되는지 확인합니다. 기존의 메인테이너가 계속 참여하는 것도 좋은 신호일 수 있지만, 이들이 프로젝트의 성공을 개선하거나 계속 이어가기 위해 새로운 챔피언에게 재단을 넘길 수도 있음을 염두에 둬야 합니다. 커뮤니티의 기여와 감독의 균형 잡힌 조합은 소프트웨어의 안정성과 보안을 장기간 향상시킬 수 있습니다.
  • 코드 유지관리 상태 확인: 소프트웨어의 건강 상태와 보안 상태를 평가하기 위해 코드 유지 관리 관행과 저장소 업데이트를 살펴야 합니다. 메인테이너나 커뮤니티가 버그 보고와 보안 취약점을 신속하게 처리하는지 확인하세요. 저장소 업데이트의 빈도를 평가하며, 정기적인 업데이트는 잘 유지되는 프로젝트를 나타내는 반면, 비활동 기간이 길다면 잠재적인 위험 가능성을 뜻합니다. 또한, 고려 중인 오픈소스 프로젝트의 버전을 확인하세요. 일반적으로 초기 버전은 시간이 지나면서 취약점이 더 많이 발견되기 때문에 보안 문제가 더 많이 발생할 수 있습니다.
  • 보안평가 수행: 소프트웨어 보안을 평가할 때 취약점(주로 의도하지 않은 약점)과 악의적인 위협(소프트웨어에 대한 악의적인 내부 위협)라는 두 가지 위험 요소를 고려해야 합니다. 뉴스, 블로그, 개발자들의 의견을 수집하여 소프트웨어와 관련된 잠재적인 취약점이나 과거에 발생한 피해 사례에 대한 종합적인 인사이트를 얻을 수 있습니다. 이러한 접근 방식을 통해 보안 도전과 위험을 철저히 평가할 수 있습니다.

위에 언급한 전략을 기반으로 오픈소스를 검증한다면 진화하는 보안 위협과 난제들에 대해 조직은 조금 더 안전할 수 있습니다.

개발 워크플로우 상의 오픈소스 보안 검토

보안이 강화된 SDLC(Software Development Life Cycle)을 구축하는 것은 단순히 최선의 방법이 아니라 오늘날의 위협 환경에서 필수적인 요구사항입니다. SDLC 프로세스가 정보보안의 최상의 관행에 근거하고 있다면 애플리케이션의 안전성을 크게 향상시키고 취약성과 멀웨어의 위험을 최소화할 수 있습니다.

 

다음의 전략을 고려해 보안을 강화할 수 있습니다 :

  • 애플리케이션의 방어력 강화: 깔끔하고 안전한 코드 작성을 위한 최상의 관행을 구현하여 애플리케이션의 보안성을 강화하세요. 가독성과 유지보수성의 우선순위를 높이면 취약점이 유입될 가능성을 낮아집입니다. 보안 프로세스 자동화를 통해 유입된 취약점을 조기에 식별하고 악의적인 구성 요소를 자동으로 차단할 수 있습니다. Sonatype Repository Firewall 살펴보기
  • 철저한 코드 리뷰와 테스트: 보안 결함을 사전에 발견할 수 있도록 팀 내에서 코드리뷰 문화를 확립할 수 있도록 반복 훈련합니다. 다양한 시각과 전문성을 코드 리뷰 과정에 통합하고 보안 테스트 도구와 기법을 활용하여 분석을 표준화하고 취약점을 식별하며 보안 기준을 준수합니다. Sonatype Lifecycle을 사용하여 임의의 컴포넌트에서 취약점에 대한 지속적인 모니터링 경고를 받고, 커스텀 정책을 강제하여 규정 준수 목표에 맞게 설정할 수 있습니다. Sonatype Lifecycle 살펴보기
  • 의존성 관리에 우선순위 부여: 소프트웨어 의존성의 원활한 관리는 매우 중요합니다. 오늘날의 소프트웨어는 다양한 오픈소스 라이브러리와 구성 요소에 의존하는 경우가 많습니다. 이러한 의존성을 정기적으로 검토하고 업데이트하여 오래된 코드로 인한 취약성을 방지하고 보안 고지와 패치를 지속적으로 파악해야 합니다. Sonatype Lifecycle을 사용하면 각 컴포넌트와 해당 의존성의 위치를 파악하여 애플리케이션의 소프트웨어 자재명세서(SBOM)을 생성하여 의존성에 대한 완벽한 가시성과 효과적으로 발견된 취약점 이슈를 해결 수 있습니다.
  • 보안 설계 원칙을 오픈소스에 확장 적용: 설계 단계에서부터 보안 원칙을 적용하여 취약성이 개발 전체에 영향을 미치지 못하도록 합니다. 이 원칙은 오픈소스의 사용에도 동일하게 적용됩니다. Sonatype Lifecycle은 소프트웨어 구성요소의 보안 상태에 대한 실시간, 데이터 기반 인사이트를 제공하여 안전한 오픈소스 구성요소를 사용하고 있다는 확신을 개발자와 조직에 제공합니다.

오픈소스 사용에 대한 보안 신뢰

소프트웨어 공급망에서 오픈소스는 확장성과 유연함을 제공하지만 몇 가지 주의를 필요합니다. 강력한 SDLC 보안 관행의 혜택은 다음과 같습니다.

  • 잠재적 위협으로부터 방어
  • 위협 감지 능력의 강화
  • 오픈소스 구성요소의 장점을 취하면서 선제적으로 취약성 식별

조직내 보안인식 문화를 조성하고 오픈소스 보안을 수용함으로써 더 강력한 어플리케이션을 개발 할 수 있으며 신뢰, 탄력성 및 혁신을 가져올 수 있습니다. 오픈소스 보안을 강화하는 것이 결과적으로 더 안전한 제품을 보장하게 됩니다.

Sonatype Repository Firewall 과 Sonatype Lifecycle

두 제품은 소프트웨어 공급망의 보안강화를 위한 제품입니다. Repository Firewall (오픈소스 저장소 방화벽)은 취약성의 유입을 차단하고 악성 구성요소의 공격으로부터 시스템을 보호합니다. Lifecycle (SDLC공급망 거버넌스 자동화)은 개발-빌드-패키지-배포-운영 전체 단계에 대한 지속적 모니터링, 규정 준수 및 적용, 소프트웨어 구성요소에 대한 가시성을 제공합니다.

 

Sonatype 소개자료를 원하시면 여기에 정보를 남겨주세요. 

 

 

참고

Sonatype Lifecycle 고객 성공 사례 - Equifax의 금융 보안 자동화

Sonatype Lifecycel 고객 성공 사례 - Creditreform의 금융 보안 혁신

Sonatype, 포레스터 웨이브 2023 2분기 SCA 부문 리더 선정

 

 

 

✅ Sonatype 플랫폼 문의

E: sales@osckorea.com

T: 02-539-3690

 

 

원문 보기)

https://blog.sonatype.com/a-guide-for-open-source-software-oss-security