소프트웨어구성분석(SCA) (Software Composition Analysis)

정보보안학
한 줄 정의: 애플리케이션이 사용하는 오픈소스 및 외부 라이브러리 구성요소를 식별하고, 그 안에 알려진 취약점이나 라이선스 문제가 있는지 분석하는 기법입니다.

쉽게 풀면

소프트웨어구성분석은 요리에 들어간 모든 재료의 원산지를 확인하는 성분표 검사와 같습니다. 현대의 소프트웨어는 개발자가 직접 작성한 코드뿐 아니라 수많은 외부 오픈소스 라이브러리를 가져와 조립하는 방식으로 만들어지는데, 이 외부 부품들 중 이미 알려진 결함이 있는 것이 섞여 있는지 확인하는 작업입니다. 재료 하나가 상해 있으면 요리 전체가 위험해지듯, 외부 라이브러리 하나의 취약점이 전체 애플리케이션의 안전을 위협할 수 있습니다.

왜 중요한가

현대 소프트웨어의 상당 부분이 오픈소스 구성요소로 이루어져 있어 공급망 보안의 중요성이 커지고 있으며, 정보보안학 연구에서는 의존성 관리 취약점과 그 전파 경로를 분석하는 데 소프트웨어구성분석이 핵심 도구로 활용됩니다.

논문에서는 이렇게 쓰입니다

"오픈소스 프로젝트를 대상으로 소프트웨어구성분석(SCA)을 수행하여 알려진 취약점을 포함한 의존성 비율을 조사하였다."

오픈소스 생태계의 취약한 의존성 실태를 조사한 연구 사례입니다.

"간접 의존성을 통해 전파되는 취약점을 탐지하기 위한 개선된 소프트웨어구성분석 기법을 제안하였다."

다단계 의존성 관계에서의 취약점 탐지 기법을 다룬 연구 사례입니다.

조금 더 깊게 보면

소프트웨어구성분석 도구는 프로젝트의 의존성 목록을 추출한 뒤 이를 알려진 취약점 데이터베이스와 대조하는 방식으로 동작하며, 직접 사용하는 라이브러리뿐 아니라 그 라이브러리가 다시 사용하는 간접 의존성까지 함께 분석하는 경우가 많습니다. 라이선스 준수 여부를 함께 점검하는 도구도 존재합니다.

주의할 점

소프트웨어구성분석은 이미 알려진 취약점을 기준으로 탐지하므로, 아직 공개되지 않은 새로운 취약점은 발견하기 어렵다는 한계가 있습니다.

관련 용어