Skip to main content

첫 번째 종속성 취약성 찾기 및 수정하기

프로젝트에서 라이브러리 또는 패키지라고 하는 미리 작성된 코드 모음을 사용하는 것이 일반적인 관행입니다. 이러한 코드 모듈은 재사용 가능한 대규모 구성 요소를 처음부터 작성하지 않아도 되므로 많은 시간을 절약해 주며, 새롭고 창의적인 작업에 집중할 수 있도록 도와줍니다. 프로젝트에 추가될 때, 사용자의 작업이 해당 코드에 종속되기 때문에 이를 종속성이라고 합니다.

종속성을 사용하는 것은 아주 일반적인 일이지만, 종속성에는 취약한 코드가 포함될 수 있으며, 이로 인해 프로젝트가 안전하지 않게 될 수 있습니다. 다행히도 Dependabot과 같은 도구를 사용하면 종속성 취약성을 찾아내고, 이를 수정하기 위한 끌어오기 요청을 생성하며, 향후에 이러한 문제가 발생하지 않도록 예방할 수도 있습니다. 이 자습서에서는 Dependabot과 해당 기능을 활성화하고 사용하여 종속성을 안전하게 유지하는 방법을 알아봅니다.

몇 가지 종속성 취약성이 있는 데모 프로젝트를 포크하여 시작해 보겠습니다. 프로젝트가 배포되지 않으므로, 이 연습에서는 보안 위험이 없습니다.

  1. new2code/dependabot-demo 리포지토리로 이동합니다.
  2. 페이지의 오른쪽 위에서 Fork를 클릭하세요.
  3. 표시되는 페이지에서 Create fork를 클릭하세요.

이제 프로젝트를 설정했으므로, Dependabot을 구성하여 안전하지 않은 종속성을 찾아 수정하도록 설정합니다.

  1. 리포지토리의 탐색 표시줄에서 Security를 클릭합니다.
  2. Dependabot alerts 행에서 Enable Dependabot alerts 를 클릭합니다.
  3. "Dependabot" 섹션에서 "Dependabot alerts" 옆에 있는 Enable을 클릭합니다.
  4. 나타나는 팝업에서 종속성 그래프 활성화에 대한 설명을 읽은 다음, Enable을 클릭합니다.
  5. Dependabot이 종속성 취약성을 수정하는 끌어오기 요청을 자동으로 열도록 허용하려면 "Dependabot security updates" 옆에 있는 Enable을 클릭합니다.

Dependabot을 구성했으므로 이제 어떤 종속성에 취약성이 있는지 알아보겠습니다.

  1. 리포지토리의 탐색 표시줄에서 Security를 클릭합니다.
  2. 리포지토리의 Dependabot alerts를 보려면 탐색 표시줄에서 Dependabot 을 클릭하세요.
  3. 경고에 대한 자세한 정보를 보려면 경고 제목을 클릭합니다. 이 연습에서는 Command Injection in hot-formula-parser를 클릭하세요.

Dependabot이 종속성의 일부 취약성을 식별했으므로 이제 "Command Injection in hot-formula-parser" 경고에 제공된 정보를 분석해 보겠습니다.

경고 제목 아래에는 이 취약성을 수정하는 방법에 대한 간략한 요약이 표시되어 있습니다. 이 요약에는 해결될 경고의 수와 취약성이 발견된 위치도 포함되어 있습니다. 이번 경우, 이 경고는 hot-formula-parser 패키지를 버전 3.0.1로 업그레이드하면 javascript/package-lock.json 파일에서 식별된 Dependabot 경고 하나가 수정될 것이라고 알려줍니다.

이 섹션에서는 또한 Dependabot이 이 취약성을 수정하기 위한 끌어오기 요청을 생성하는 진행 상황도 추적합니다. 수정이 가능해지면 " Review security update"라는 레이블의 단추가 표시되며, 이 단추를 클릭하면 해당 끌어오기 요청으로 연결됩니다.

Dependabot 경고의 수정 요약 섹션 스크린샷

수정 세부 정보 아래에서 Dependabot은 다음을 포함하여 취약성에 대한 자세한 정보를 제공합니다.

  • 취약한 패키지의 이름
  • 취약성이 포함된 패키지의 버전
  • 취약성을 해결하는 패키지의 버전
  • 취약성 유형 및 악용 방법에 대한 세부 정보

Dependabot 경고의 취약성 세부 정보 섹션 스크린샷

이 경고에서 hot-formula-parser 패키지의 parse 함수가 사용자 입력의 안전성을 제대로 확인하지 않고 실행하기 때문에, 공격자가 악성 명령을 실행할 수 있게 됩니다.

취약성 세부 정보를 완전히 이해하지 못하겠다면, Copilot 채팅에게 질문하기를 시도하여 설명을 요청해 보세요.

마지막으로 페이지 아래쪽에서 경고의 타임라인을 볼 수 있습니다. 현재 타임라인에는 Dependabot이 이 경고를 생성한 시점의 타임스탬프가 표시되며, 취약성이 수정될 때마다 자동으로 업데이트됩니다.

Dependabot 경고의 타임라인 스크린샷

프로젝트를 빠르고 쉽게 보호하기 위해 Dependabot이 생성한 수정을 적용해 보겠습니다.

  1. 수정 요약이 표시된 경고 필드에서 Review security update를 클릭합니다.

  2. 끌어오기 요청 페이지에서 Files changed를 클릭하면 Dependabot의 변경 내용을 확인할 수 있습니다. 변경 내용을 검토한 후, Conversation을 클릭하여 끌어오기 요청 개요로 돌아갑니다.

  3. 수정을 적용하려면 페이지 하단에서 Merge pull request를 클릭한 다음, Confirm merge를 클릭하세요.

    끌어오기 요청이 병합되면 연결된 Dependabot 경고가 자동으로 수정되고, 수정 시간이 타임라인에 추가됩니다.

앞으로 불안정한 종속성이 발생하지 않도록 하려면 Dependabot이 새 버전이 출시될 때마다 종속성을 업데이트하는 끌어오기 요청을 자동으로 생성하도록 허용해 보겠습니다.

  1. 리포지토리의 탐색 표시줄에서 Settings를 클릭합니다.
  2. 사이드바의 "Security" 섹션에서 Advanced Security 를 클릭합니다.
  3. "Dependabot version updates" 옆에 있는 Enable을 클릭합니다.

이제 데모 리포지토리에서 Dependabot과 해당 기능을 사용해 보았으므로, 자신의 프로젝트에서도 이를 활성화하여 종속성 취약성을 쉽게 찾아내고, 수정하며, 방지할 수 있습니다.