RESOURCES · OSS 101
OSS 101
오픈소스 보안 빠른 참조 핸드북 — 기초부터 엔지니어링 실무까지, 지속 업데이트.
01기초 개념
오픈소스 소프트웨어란?
소스 코드가 공개되어 라이선스 조건 하에 누구나 열람·수정·배포할 수 있는 소프트웨어. 현대 애플리케이션 코드의 70% 이상이 오픈소스 컴포넌트에서 온다.
소프트웨어 공급망 보안이란?
개발·빌드·배포·실행 전 경로에서 변조와 공격을 막는 실천. 소스 코드, 서드파티 컴포넌트, 빌드 시스템, 아티팩트 저장소, 전달 채널을 포괄한다. SolarWinds와 Log4Shell로 핵심 이슈가 됐다.
SBOM이란?
소프트웨어 자재 명세서. 소프트웨어에 포함된 모든 컴포넌트·버전·의존 관계의 완전한 목록으로, 소프트웨어의 '성분표'다. 미국 행정명령 14028과 EU CRA 모두 SBOM을 요구한다.
SCA란?
소프트웨어 구성 분석. 코드 속 오픈소스 컴포넌트를 자동 식별하고 알려진 취약점과 라이선스 리스크를 탐지한다. CleanSource SCA는 코드 조각 수준까지 식별하며 직접·전이 의존성을 모두 커버한다.
직접 의존성과 전이 의존성의 차이는?
직접 의존성은 설정 파일에 명시적으로 선언한 컴포넌트, 전이 의존성은 그 컴포넌트가 다시 끌어오는 컴포넌트다. 취약점 대부분은 전이 의존성에 숨어 있으며 보통 전체의 80% 이상을 차지한다.
02라이선스와 컴플라이언스
오픈소스 라이선스에는 어떤 유형이 있나?
크게 관용형(MIT, Apache-2.0, BSD: 의무 적고 상용 친화)과 카피레프트형(GPL 계열: 파생물도 동일 조건 공개)으로 나뉜다. 도입 전 의무 강도를 확인하라.
GPL의 핵심 의무는?
GPL 컴포넌트로 만든 파생물을 배포하면 전체를 GPL로 공개하고 소스 전문을 제공해야 한다 — '전염성'. 배포 없는 내부 사용만이라면 통상 의무가 발생하지 않는다.
AGPL·LGPL과 GPL의 차이는?
LGPL은 느슨해서 동적 링크라면 보통 자기 코드 공개가 불필요. AGPL은 더 엄격해 네트워크 서비스 제공도 '배포'로 간주 — SaaS에서도 공개 의무가 발생한다.
라이선스 충돌이란?
두 컴포넌트의 라이선스 조건이 서로 모순되어 한 소프트웨어에 합법적으로 공존할 수 없는 상태. GPLv2와 Apache-2.0이 전형. 의존성 조합 수준의 자동 탐지 도구가 필요하다.
OpenChain이란?
오픈소스 컴플라이언스 관리 국제 표준(ISO/IEC 5230). 기업 컴플라이언스 프로세스의 핵심 요건을 정의하며, 인증으로 공급망 상하류에 역량을 증명할 수 있다.
상용 소프트웨어에서 오픈소스를 써도 되나?
된다. 거의 모든 상용 소프트웨어가 쓰고 있다. 핵심은 각 컴포넌트의 라이선스 의무를 식별하고 이행하는 것: 저작권 고지 유지, 라이선스 원문 제공, 조건에 따른 공개.
03취약점과 위협
CVE란?
공통 취약점 식별자. 알려진 보안 취약점의 전 세계 공통 번호 체계로 CVE-2021-44228(Log4Shell)이 대표적. MITRE가 관리하며 취약점 인텔리전스의 공용어다.
CVSS 점수는 어떻게 읽나?
공통 취약점 평가 시스템. 0-10으로 심각도를 정량화: 9.0-10.0 초위험, 7.0-8.9 높음, 4.0-6.9 중간. 공격 경로·난이도·권한 필요·상호작용 필요 등을 반영한다.
CWE와 CVE의 차이는?
CWE는 결함 유형 분류(CWE-78 명령 주입 등)로 '어떤 종류의 실수인가'. CVE는 개별 취약점 번호로 '어느 제품의 어느 구멍인가'. 하나의 CVE는 보통 하나의 CWE에 대응한다.
패키지 오염이란?
공격자가 npm·PyPI 등 공개 저장소에 악성 컴포넌트를 게시하고, 유명 패키지 위장이나 계정 탈취로 설치를 유도해 자격 증명 탈취나 백도어 설치를 노린다. 2026년 상반기 월 100건 초과가 일상화됐다.
의존성 혼동 공격이란?
기업 내부 프라이빗 패키지와 같은 이름을 공개 저장소에 더 높은 버전으로 등록해, 빌드 도구가 악성 공개판을 가져오게 하는 공격. 프라이빗 저장소 우선 정책과 버전 고정으로 방어한다.
0day와 Nday 취약점이란?
0day는 공식 패치 이전에 악용되는 취약점으로 방어가 가장 어렵다. Nday는 패치가 나온 지 N일이 지나도 미수정인 취약점 — 실제 공격 대부분은 Nday라 수정 속도가 관건이다.
04엔지니어링 실무
DevSecOps란?
보안을 왼쪽으로 이동시켜 DevOps 전 과정에 자동화로 심는 실천: 코딩기 SAST, 의존성 도입기 SCA, 테스트기 DAST, 운영기 모니터링. 보안과 전달 속도를 공존시킨다.
SAST·DAST·SCA의 차이는?
SAST는 직접 작성한 코드의 정적 분석(화이트박스), DAST는 구동 중 애플리케이션 공격 테스트(블랙박스), SCA는 도입한 서드파티 오픈소스 분석. 셋이 상호 보완하며 자체 코드와 외부 의존성을 함께 커버한다.
CI/CD에 오픈소스 보안 게이트를 넣으려면?
파이프라인에 자동 검사를 추가: 커밋 시 SCA/SAST 스캔, 정책 기반 차단(초위험 취약점·금지 라이선스면 빌드 실패), 결과를 코드 리뷰로 환류. 게이트는 등급제로 — 일괄 차단은 전달을 죽인다.
오픈소스 거버넌스란?
기업이 오픈소스 사용을 체계적으로 관리하는 실천: 도입 심사, 컴포넌트 대장(SBOM), 취약점 대응, 라이선스 준수, 업그레이드 전략. '안심하고 쓰고, 추적 가능하고, 의무를 이행'하는 상태가 목표다.
오픈소스 도입 심사 제도는 어떻게 만드나?
심사 위원회로 시작해 자동 게이트로 진화: 기준 정의(라이선스 허용 목록, 유지보수 활성도, 알려진 취약점 임계치), 의존성 도입 흐름에 통합, 기존 자산 정기 재스캔.
SPDX와 CycloneDX 중 무엇을 고르나?
둘 다 주류 SBOM 표준. SPDX(리눅스 재단, ISO 표준)는 라이선스 기술이 정밀하고, CycloneDX(OWASP)는 보안 용도에서 출발해 진화가 빠르다. 대부분 도구가 양쪽을 지원 — 다운스트림 요구에 맞춰 고르면 된다.
05AI와 프런티어
AI가 가져오는 새로운 공급망 리스크는?
모델과 데이터셋 자체가 컴포넌트가 되어(오염될 수 있고), 빠르게 진화하는 AI 프레임워크는 취약점이 밀집하며, 에이전트의 플러그인/도구 메커니즘이 코드 실행 면을 연다. 2026년 이후 AI 컴포넌트는 초위험 취약점 최다 영역이다.
프롬프트 주입이란?
AI가 처리하는 콘텐츠(웹, 문서, 티켓)에 악성 지시를 숨겨 모델이 월권 행동을 하게 만드는 공격. 자격 증명 유출이나 위험한 도구 호출을 유발한다. LLM 앱 최대 공격 기법 중 하나(CWE-1427).
MCP와 AI 에이전트의 보안 리스크는?
도구 체인 명령 주입, 미인증 엔드포인트 노출, 자격 증명 평문 저장, 악성 Skill/플러그인 오염, 샌드박스 탈출. 도구 허용 목록, 최소 권한, 기본 인증으로 완화하고 SkillSec 같은 도구로 능력 감사를 수행하라.