개발자 우선 공급망 보안이 보안 소프트웨어를 빠르게 제공하는 데 도움이 되는 방법
2022년 7월 14일 // 6 min read
공급망 보안이 필요한 이유와 GitHub의 공급망 보안 도구가 보안 소프트웨어를 신속하게 제공하는 데 어떻게 도움이 되는지 알아보세요.
코드를 보호하고 싶지만 추가 보안 단계를 통해 ���도를 늦추고 싶지는 않으신가요? 요즘 개발자들은 보안 소프트웨어를 느리게 제공하거나 안전하지 않은 소프트웨어를 빠르게 제공해야 하는 어려운 선택에 직면하는 경우가 많습니다. GitHub에서는 둘 중 하나를 선택할 필요가 없다고 생각합니다. 공급망 보안이 필요한 이유, 코드에 종속성이 어떻게 통합되는지, GitHub의 공급망 도구인 Dependabot이 어떻게 도움이 될 수 있는지 살펴보세요.
| 이 페이지에서는 다음 주제를 다룹니다. |
|---|
| 소프트웨어 공급망 |
| 오픈 소스 취약성 |
| 오픈 소스 보안 |
| 소프트웨어 종속성 |
| 종속성의 유형 |
| 종속성 변경 사항 |
| 종속성 관리 |
| 소프트웨어 구성 분석(SCA) |
| SCA의 이점 |
| Dependabot이란? |
| Dependabot 기능 |
| Dependabot 켜기 |
| Dependabot과 기타 GitHub 도구 |
소프트웨어 공급망이란 무엇인가요?
소프트웨어 공급망은 코드베이스의 모든 내부 소스 및 오픈 소스 종속성을 사용하여 소프트웨어를 구축하는 방법을 나타내는 인기 있는 문구입니다. npm의 종속성을 사용하는 JavaScript 앱을 만들거나 내부 소스와 Nugget 종속성을 혼합하여# C로 작성된 컴파일된 앱을 구축할 수 있습니다. 이러한 각 앱의 위협 모델은 의존하는 소프트웨어 공급망으로 인해 다릅니다. GitHub는 사용자가 사용하는 소프트웨어를 이해하고 Dependabot과 같은 혁신적인 제품을 사용하여 소프트웨어를 더 안전하게 유지할 수 있도록 도와줍니다.
오픈 소스 취약성이란 무엇인가요?
오픈 소스 취약성은 오픈 소스 구성 요소에 존재하는 보안 위험입니다. 대부분의 취약성은 보안 기능 부족, 비정상적으로 작성된 코드 또는 구성 요소의 약한 통합과 관련된 선의의 실수로 인해 발생합니다. 안타깝게도 공격자가 쉽게 악용할 수 있습니다. 악의적인 행위자는 코드의 취약성을 이용해 시스템을 손상시키거나, 데이터를 훔치거나, 리소스를 남용할 수 있습니다. 또한 해커가 환경 내의 다른 취약한 서비스로 도약할 수 있도록 함으로써 한 가지 약점만 악용하면 심각한 영향을 미칠 수 있습니다.
취약성은 원하지 않을 때 사용자를 강하게 괴롭히고 전체 프로젝트를 손상시킬 수 있습니다. 오늘날의 가장 일반적인 취약성 유형은 다음과 같습니다.
SQL 주입 이 공격은 악의적인 행위자가 사용자 입력을 통해 SQL 문에 유해한 논리를 추가할 때 트리거되는 코드 주입 공격입니다. 이 취약성은 입력 소독을 제대로 수행하지 않거나 잘못 수행했기 때문에 발생합니다. 무단 데이터 액세스, 수정 및 데이터 손실, 애플리케이션의 콘텐츠 및 동작 변경 등이 포함됩니다.
명령 주입. 이는 악의적인 행위자가 애플리케이션에 명령을 삽입한 다음 시스템의 권한을 사용하여 호스트 시스템에서 실행되는 또 다른 코드 주입 공격입니다. 명령 인젝션 공격은 애플리케이션, 데이터, 연결된 서버 및 기타 인프라를 손상시킬 수 있습니다.
크로스 사이트 스크립팅(XSS). 이는 악성 스크립트가 양성 웹사이트에 주입되는 웹 주입 공격입니다. 피해자의 브라우저에서 실행되는 자바스크립트 스크립트로 인해 XSS 공격은 인증 쿠키와 같은 민감한 데이터를 훔칠 수 있습니다. 이는 공격자가 자체 광고 및 피싱 프롬프트를 추가하여 웹사이트 방문자를 표적으로 삼을 수 있는 공개 웹사이트에서 흔히 볼 수 있습니다.
크로스 사이트 요청 위조(CSRF). 이 공격으로 인해 최종 사용자는 현재 인증된 웹 애플리케이션에서 원치 않는 작업을 실행해야 합니다. 원치 않는 행동에는 자금 이체 또는 개인 정보 변경이 포함될 수 있습니다. 기본적으로 이러한 공격은 인증된 사용자가 시작한 요청에 대해 대상 사이트의 신뢰를 이용하며, 실제로는 다른 곳에서 시작됩니다.
가장 빈번한 취약성 유형에 대해 자세히 알아보려면 취약성 블로그 게시물을 방문하세요.
오픈 소스 보안이란 무엇인가요?
오픈 소스 보안은 애플리케이션의 오픈 소스 인벤토리를 더 잘 파악할 수 있는 방법론입니다. 오픈 소스 보안을 통해 직접 종속성, 간접 종속성 및 각 종속성과 관련된 수많은 보안 정보를 쉽게 식별할 수 있습니다. 이러한 작업을 수동으로 추적하는 것은 시간이 너무 많이 걸리고 일반적으로 소프트웨어 구성 분석(SCA)을 통해 수행되며, 나중에 살펴볼 것입니다.
소프트웨어 종속성이란 무엇인가요?
소프트웨어 종속성은 새로운 소프트웨어에서 재사용되는 패키지 또는 코드 라이브러리입니다. 오픈 소스를 사용하면 프로젝트의 차별화된 부분에 집중하고 더 넓은 커뮤니티의 탄탄한 기반을 구축할 수 있습니다.
오늘날 거의 모든 소프트웨어 프로젝트에는 어떤 형태로든 종속성이 있습니다. 그리고 그 양도 적지 않습니다. 코드베이스의 60~90%가 오픈 소스 구성 요소로 구성되어 있는 것으로 추정됩니다. 물론 이 코드에 보안 문제가 있는 경우 독점 코드의 보안 문제와 마찬가지로 최종 제품에 영향을 미칩니다.
종속성의 유형은 어떤 것들이 있나요?
소프트웨어 종속성에는 직접 및 간접의 두 가지 유형이 있습니다. 직접 종속성은 코드가 직접 호출하는 라이브러리 또는 패키지입니다. 간접 종속성은 종속성이 호출하는 라이브러리 또는 패키지입니다. 즉, 종속성의 종속성입니다.
두 유형의 종속성 모두 보안 위험을 통제하기 위해 관리가 필요하지만, 간접 종속성은 언제 작동하는지 즉시 명확하지 않기 때문에 추가 고려가 필요합니다. 간접 종속성은 다른 종속성 내부에 중첩되어 숨겨진 복잡한 종속성 트리를 형성하여 공급망을 보호하려고 할 때 쉽게 놓칠 수 있습니다.
한눈에 보기: 두 가지 유형의 종속성
- 직접 종속성은 코드가 직접 호출하는 라이브러리 및 패키지입니다.
- 간접 종속성은 종속성이 호출하는 라이브러리와 패키지입니다.
두 가지 유형을 모두 보호하는 것이 중요하지만 전이적 종속성을 감지하는 것은 더 어렵습니다.
시간이 지남에 따라 종속성 환경은 어떻게 변화했습니까?
예전에는 라이브러리를 다운로드하고 설치하는 것이 지루했습니다. 따라서 소규모 패키지를 재사용하는 것은 비현실적이었습니다. 하지만 지난 20년 동안 Maven 및 npm와 같은 도구를 사용하면 작은 패키지를 더 쉽게 사용하고 작업할 수 있게 되었습니다. 그 이후로 개발자가 사용할 수 있는 패키지의 수가 폭발적으로 증가했습니다. 소프트웨어 패키지는 이제 현대 앱의 중요한 부분이 되었습니다.
그러나 업계는 현재 수많은 보안 문제와 문제에 직면해 있습니다. 앞서 언급했듯이 종속성에 버그가 있는 경우 전체 앱에 영향을 미칠 수 있습니다. 또한 종속성은 빠르게 구식이 되어 종속성을 호출하는 소프트웨어의 품질이 제한되거나 전체 애플리케이션이 실패할 수도 있습니다.
종속성을 사용하면 소프트웨어를 더 빨리 구축하는 데 도움이 될 수 있지만, 종속성에는 다음과 같은 여러 가지 문제가 발생할 수 있습니다:
- 전체 프로그램에 영향을 미치는 보안 취약성
- 소프트웨어 품질을 손상시키는 오래된 코드
조직이 종속성을 관리하지 않으면 어떻게 되나요?
특정 버전의 다른 소프트웨어 패키지에 의존하는 소프트웨어 패키지를 설치했을 때 많은 불만이 있을 수 있으며, 한 종속성을 해결하면 다른 종속성의 호환성이 깨집니다. 마치 한 번의 장난처럼, 이 게임은 끝없는 의존성 통증의 혼란에 빠지게 될 것입니다.
그렇기 때문에 소프트웨어 개발 수명 주기(SDLC) 전반에 걸쳐 종속성을 효과적으로 관리하는 것이 중요합니다.
소프트웨어 구성 분석(SCA)이란 무엇인가요?
SCA는 코드베이스의 오픈 소스 구성 요소를 식별하는 자동화된 프로세스입니다. 이러한 도구는 패키지 관리자, 소스 코드, 매니페스트 파일, 컨테이너 이미지, 바이너리 파일 등을 검사합니다. 이러한 구성 요소는 국가 취약성 데이터베이스(NVD) 및 기타 데이터베이스의 정보를 포함하는 GitHub 자문 데이터베이스와 비교됩니다.
취약성 데이터베이스란 무엇인가요?
취약성 데이터베이스에는 알려진 취약성과 일반적인 취약성에 대한 정보가 저장됩니다. NVD는 미국 정부의 취약성 리포지토리이며 오픈 소스 커뮤니티에서 널리 사용됩니다. GitHub는 오픈 소스 세계 전역의 자문을 포함하는 자체 GitHub Advisory Database를 보유하고 있습니다.
SCA 도구는 어떤 공급망 구성 요소를 검사하나요?
- 패키지 관리자
- 매니페스트 파일
- 바이너리 파일
- 소스 코드
- 컨테이너 이미지
- 승인된 구성 요소
- 개발자 다운로드
- 코드 재사용
- 상용 앱
- 타사 라이브러리
- 아웃소싱 개발
SCA의 이점은 무엇인가요?
공급망 보안과 관련하여 SCA 도구는 보안, 속도 및 안정성을 제공합니다. 오픈 소스 구성 요소를 수동으로 추적하는 것은 요즘 사용되는 방대한 양을 고려할 때 더 이상 작동하지 않습니다. 또한 클라우드 네이티브 애플리케이션과 더 복잡한 기술의 보급이 증가함에 따라 신뢰할 수 있는 SCA 도구가 필수적으로 사용됩니다.
로봇이 할 수 있는 일을 인간에게 강요해서는 안 됩니다. –GitHub Security팀의 모토
DevOps 방법론의 채택으로 인해 팀이 소프트웨어를 더 빠르게 구축하고 출하함에 따라 SCA 도구처럼 개발 속도를 유지할 수 있는 보안 솔루션이 필요합니다.
하지만 모든 SCA 도구가 동일하게 생성되는 것은 아닙니다. 컨테이너화된 환경 내에서 오픈 소스 구성 요소를 스캔하고 취약성을 식별하며 정책을 자동으로 시행하는 SCA 도구를 선택하는 것이 가장 좋습니다. 좋은 SCA 도구는 IT에서 사용 중인 특정 컨테이너 레지스트리를 기본으로 지원합니다.
조직과 관련하여 SCA 도구는 해당 코드가 영향을 받는 라이브러리와 통신하는지 여부를 추가로 알려주고 가능한 경우 수정 사항을 제안해야 합니다. 또한 이 도구는 코드베이스에서 패치 또는 업데이트가 필요한 오픈 소스 라이브러리를 식별해야 합니다.
Dependabot이란 무엇이며 Dependabot이 공급망을 안전하게 보호하는 방법은 무엇인가요?
Dependabot은 GitHub의 SCA 도구입니다. Dependabot을 사용하면 종속성, 종속성의 취약성을 식별하고 이를 수정, 패치 또는 업데이트할 수 있는 방법을 제안하여 공급망을 쉽게 보호할 수 있습니다. 이 도구는 개발자 워크플로에 기본적으로 적용되므로 몇 분 만에 공급망을 보호할 수 있습니다.
Dependabot은 종속성에서 발생하는 취약성을 실시간으로 파악하여 이해할 수 있도록 합니다:
- GitHubs 어드바이저리 데이터베이스에서 게시한 각 종속성에 대한 취약성 데이터
- 예를 들어 코드가 취약한 통화를 하는 경우 프로젝트의 취약성이 미치는 영향
- 종속 로봇 풀 요청 또는 다른 해결 방법으로 취약성을 조치하고 수정하는 방법
또한 Dependabot은 Dependabot 버전 업데이트를 통해 종속성을 최신 상태로 유지할 수 있도록 도와주며, 이는 애초에 프로젝트에서 발생할 수 있는 많은 잠재적 취약성을 피하는 데 도움이 될 수 있습니다!
Dependabot은 더 안전한 코드를 작성하는 데 도움이 됩니다. –Max Williams, 수석 시스템 엔지니어, Delivery Hero
Dependabot의 어떤 다양한 기능을 제공하나요?
Dependabot에는 다음과 같은 동급 최고의 기능이 포함되어 있습니다.
Dependency 그래프. 이 그래프는 리포지토리 또는 패키지의 모든 업스트림 종속성 및 퍼블릭 다운스트림 종속성을 식별합니다. 종속성 그래프에서 종속성 및 탐지된 취약성을 볼 수 있습니다.
Dependabot 경고. 이러한 알림은 GitHub의 종속성 그래프와 GitHub 자문 데이터베이스를 기반으로 새로 발견된 취약성의 영향을 받는 리포지토리를 알려줍니다.
Dependabot 보안 업데이트. 이러한 업데이트는 알려진 취약성을 해결하는 최소 버전으로 종속성을 업데이트하기 위해 Dependabot에서 사용자에게 보내는 자동 풀 요청입니다.
Dependabot 버전 업데이트. 이러한 업데이트는 사용자가 설정한 구성에서 종속성의 새 버전을 확인하고 업데이트를 제안합니다.
Dependabot은 어떻게 켜나요?
Dependabot을 쉽게 설정할 수 있습니다. 다음 다섯 단계를 따르기만 하면 됩니다.
- GitHub.com으로 이동합니다.
- 리포지토리의 기본 페이지로 이동합니다.
- 리포지토리 이름 아래의 Settings를 클릭합니다.
- 왼쪽 사이드바에서 코드 보안 및 분석을 클릭합니다.
- 마지막으로 종속성 그래프 및 종속성 봇 알림에 대한 활성화 버튼을 클릭합니다. 종속성 업데이트를 도와주려면 종속성 업데이트에 대한 종속성 사용을 클릭하세요.
- [GitHub12에서의 소프트웨어 공급망 보안]에 대해 자세히 알아보기12*
한 고객만을 위해 만들어진 Dependabot은 다음과 같습니다.
고객을 위해 구축. 알림을 받는 빈도와 알림을 받는 유형을 선택할 수 있습니다. Dependabot 알림은 취약성의 영향, 관련성 및 실행 가능성을 고려하여 알림의 우선 순위를 지정하는 데 도움이 되는 "가장 중요한" 계산에 따라 정렬됩니다. 예를 들어, 취약성이 알려진 취약한 함수를 호출할 때 이는 계산에 반영됩니다(그리고 취약한 함수 호출 정보는 종속 봇 알림에서도 사용할 수 있습니다).
커뮤니티를 위해 구축. Dependabot 알림을 제공하는 GitHub Advisory Database는 소프트웨어 종속성의 취약성에 대한 세계 최대 규모의 데이터베이스입니다. 풀타임 큐레이터로 구성된 전담 팀이 유지 관리하고 전체 GitHub 커뮤니티의 기부금으로 지원합니다.
평생 무료. GitHub는 무료 입장 시작형 보안 데이터와 솔루션이 업계에 힘을 실어주고 소프트웨어 공급망을 가장 잘 보호하는 데 매우 중요하다고 믿습니다.
Dependabot 제품은 다른 GitHub Security 도구와 어떻게 함께 작동하나요?
GitHub에서는 취약성을 찾고 수정하는 데 도움이 되는 개발자 우선 보안 도구 모음을 제공합니다. Dependabot은 공급망을 보호하는 데 도움이 되지만, 다른 보안 제품은 Dependabot과 시너지 효과를 발휘하여 거의 모든 각도에서 코드를 안전하게 보호합니다.
- CodeQL로 구동되는 _코드 스캔_은 코드의 일반적인 패턴을 포착하는 정적 애플리케이션 보안 테스트(SAST) 제품입니다. 또한 풀 요청 내에서 실행하여 취약성이 메인 지점에 도달하기 전에 이를 감지할 수도 있습니다. CodeQL은 코드 보호 외에도 각 쿼리에는 취약한 코드의 예, 동일한 코드를 구현하는 보안 방법, 외부 참조 등 탐지된 취약성 패턴에 대한 정보가 포함되어 있으므로 향후 주의해야 할 사항을 알려줍니다.
- 코드 스캔 및 CodeQL을 시작하는 방법에 대한 자세한 내용은 GitHub 문서 코드 스캔 페이지를 방문하세요]13.
- _Secret scanning_은 무단 액세스 및 침해를 방지합니다. 실수로 코드에 푸시되었을 수 있는 유출된 비밀을 리포지토리에서 사전에 검색하여 이 작업을 수행합니다. 여기에는 코드에서 AWS, Slack, Google Cloud, Azure를 포함한 파트너의 패턴을 스캔하는 것이 포함됩니다. 스캔��� 1초도 걸리지 않기 때문에 누출이 발생했을 때 신속하게 감지할 수 있습니다.
- secret scanning을 시작하는 방법에 대한 자세한 내용은 GitHub 문서 비밀 스캔 페이지를 참조하세요]14.
- _보안 개요_는 전체 조직의 보안 리스크에 대한 중앙 집중식 단일 뷰를 제공합니다. 수백 개 또는 수천 개의 리포지토리를 담당하는 경우 특히 강력합니다. 이 도구는 알려진 보안 위험과 아직 보안 기능이 구성되지 않은 미지의 위험을 보여줍니다.
- 보안 개요에 대한 자세한 내용은 보안 개요 문서 페이지를 참조하세요.
이러한 모든 도구는 기업용 GiHub Advanced Security(GHAS)의 일부입니다. GHAS는 기본적으로 개발자 워크플로에 보안을 내장하여 소프트웨어 수명 주기 전반에 걸쳐 소프트웨어 공급망과 독점 코드를 보호할 수 있도록 지원합니다. GHAS를 사용하면 모든 풀 요청에 따라 자동화된 보안 검사가 실행됩니다. 그런 다음 식별된 보안 문제는 익숙한 GitHub 워크플로 내에서 즉시 공유됩니다. 이를 통해 업계 표준인 몇 달이 아닌 몇 분 만에 취약성을 수정할 수 있습니다.
*- GHAS에 대해 자세히 알아보려면 GHAS 문서 페이지를 참조하세요.
보안도 중요하지만 안정성도 중요합니다. 저희는 빠르고 안전하게 제품을 배포하기 위해 GitHub에 의존하고 있습니다. –Lee Cookson, 엔지니어링 담당 이사, Dow Jones
GitHub가 조직의 코드 보안을 어떻게 도울 수 있는지에 대해 담당자와 이야기하려면 무료 데모에 가입하세요.
| 혁신을 방해하지 않으면서 코드 보호 | GitHub Advanced Security 확장 |
|---|---|
| GitHub Advanced Security는 코드에서 보안 문제를 더 일찍 찾아 수정하여 애플리케이션 보안을 확장하고 자동화할 수 있도록 도와줍니다. 자세히 알아보기 |
자동화되고 구조화된 방식으로 GitHub Advanced Security를 확장하고 채택하는 방법에 대해 알려 드리겠습니다. 자세히 알아보기 |
Tags