자세히보기

카테고리 없음

안전한 코드를 제공하기 위해 모든 개발자가 할 수 있는 5가지 간단한 작업_제1장

GitHubKorea 2022. 5. 27. 18:17

안녕하세요 GitHub 한국 총판 단군소프트입니다.
오늘은 ‘안전한 코드를 제공하기 위해 모든 개발자가 할 수 있는 5가지 간단한 작업’에 대해 알아보려고 합니다.


이번편은 자~세하게 설명드리고 싶어서 5가지중 2가지 먼저 소개드리고 제2장에서 나머지 소개드리도록 하겠습니다 :D


이번편에서 다룰 이야기..

1. CodeQL을 워크플로우의 일부로 만듭니다.
2. Dependabot으로 모든 의존성을 최신 상태로 유지


시작해볼까요?


1. CodeQL을 워크플로우의 일부로 !


CodeQL로 구동되는 Code Scanning은 GitHub에 푸시하는 코드에 보안 결함이 없는지 확인하기 위해 GitHub에서 제가 꼭 사용하는 도구 중 하나입니다.

 

CodeQL에 대해 들어본 적이 없다면, CodeQL은 코드를 데이터처럼 처리하고 쿼리할 수 있게 만드는 것은 GitHub의 정적 코드 분석 엔진입니다.​ 그런 다음 알려진 보안 취약성 패턴에 해당하는 증가하는 오픈 소스 쿼리 라이브러리를 사용하여 CodeQL이 코드를 검색하여 잠재적인 문제를 식별합니다.


중요한 점

GitHub Actions를 통해 GitHub의 저장소에 추가할 수 있는 CodeQL Analysis라는 이름의 코드 검색 워크플로우가 있습니다. 저장소에서 작업 탭을 열고 새 워크플로우를 추가한 다음 보안 드롭다운 목록에서 CodeQL Analysis를 선택하면 됩니다. 새 코드를 푸시하거나 Master 브랜치(또는 GitHub의 다른 웹 훅 이벤트 등)에 변경사항을 적용할 때마다 실행되도록 워크플로우를 조정할 수 있습니다.

GitHub에서 CodeQL 워크플로우를 사용하여 코드의 알려진 취약점을 식별하는 방법을 보여주는 GIF입니다.

여기서 중요한 건 모든 것을 최신 상태로 유지할 필요가 없이 CodeQL을 실행하여 코드에서 알려진 취약점이라면 어떤 것이든 식별할 수 있습니다.

CodeQL 쿼리문들이 오픈 소스라고 말씀드렸나요?
이 쿼리문들 라이브러리는 사용자 측의 조치 없이 새로운 패턴으로부터 코드를 보호하기 위해 지속적으로 업데이트 되고 있습니다. 이를 통해 보안을 개발 워크플로우의 쉬운 부분으로 만들고, 보다 한 발 앞서 나갈 수 있습니다.

PSA: 오픈 소스 CodeQL 쿼리에 기여할 수도 있습니다! 자세한 내용은 README에서 확인해 보세요.

CodeQL을 워크플로우의 일부로 만드는 방법에 대해 알아봅시다.



 

2. Dependabot으로 모든 의존성을 최신 상태로 유지

코드가 안전한지 확인하는 가장 간단한 방법들 중 하나는 최신 보안 패치로 의존성을 최신 상태로 유지하는 것입니다. 그러나 의존성을 수동으로 업데이트하는 것은 약간 번거로울 수 있습니다.

그래서 GitHub에 Dependabot을 사용하는 것을 항상 권장하는 이유입니다. 

1. 자동으로 의존성을 스캔
2. GitHub의 Advisory Database에서 이미 알려진 취약한 버전을 찾음
3. Dependabot의 알림을 통해 취약성 여부 파악


Dependabot은 또한 자동화된 의존성 버전 업데이트를 지원하며, 이는 의존성 버전 dependabot.yml 설정 파일을 통해 구성할 수 있습니다. 여기에서 Dependabot이 일반적으로 의존성을 업데이트하는 방법(예: 활성화할 환경)과 Dependabot이 새 업데이트를 찾는 빈도를 지정할 수 있습니다.

그리고 저는 GitHub를 사용하시는 모든 개발자분들이 가능한 빨리 이 기능을 설치하시기를 권장드립니다. 보안 취약점이 확인되었을 때, 지원되는 버전으로 이동하는 방법을 찾기 위해 허둥댈 필요가 없기 때문입니다.

CodeQL이 자체 코드에서 보안 문제를 탐지하는 동안 Dependabot은 프로젝트의 의존성에서 발생하는 취약성을 탐지합니다. 최근의 예로 Log4j 사례를 들 수 있는데, 이는 패키지 레지스트리 및 의존성에 대한 수많은 업스트림 영향을 도입했습니다.

 

Log4j는 애플리케이션과 웹사이트에서 활동을 기록하기 위해 앱 및 웹사이트 전체에서 널리 사용되어 왔었기 때문에 이 사건은 많은 사람들이 잠재적인 문제를 피하기 위해 Log4j 버전을 신속하게 업데이트해야 했음을 시사했습니다. 

Maven과 Dependabot을 사용하는 Java 개발자의 경우 프로세스가 조금 더 쉬웠습니다.

 

보안 취약점 발생 ->  Dependabot은 Gradle 및 Maven을 사용하여 영향을 받는 저장소에서 풀 리퀘스트 생성 ->

Log4j 패키지를 업데이트하라는 Java 종속성 관리 -> GitHub은 Log4j CVE에 대한 응답으로 Dependabot을 통해 총 550,000개의 경고 발송 ->  활성 저장소의 절반이 경고를 받음 -> 7일 이내에 문제를 해결!

요약: GitHub 저장소에서 Dependabot 경고를 활성화하고, Dependabot 버전 업데이트도 사용해보세요. 나중에 감사하게 되실 겁니다 :)

 

GitHub 저장소에서 Dependabot을 활성화하는 방법에 대해 알아보세요.​

유용하셨나요?

다음에 이어서 ‘안전한 코드를 제공하기 위해 모든 개발자가 할 수 있는 5가지 간단한 작업_제2장’으로 찾아 뵙겠습니다.

감사합니다 : )




이 글은 5 simple things every developer can do to ship more secure code | The GitHub Blog를 번역한 글입니다

.