코드 스캔 Java 튜토리얼에 오신 것을 환영합니다! 이 튜토리얼을 사용하면 Github Advanced Security : Code Scanning을 설정하는 방법을 설정하고 찾을 수있는 결과를 해석합니다. 다음 저장소에는 데모 목적을위한 SQL 주입 취약성이 포함되어 있습니다.
코드 스캔은 보안 취약점 및 코딩 오류를 찾기 위해 GitHub 저장소의 코드를 분석하는 데 사용하는 기능입니다. 분석에 의해 식별 된 모든 문제는 Github에 나와 있습니다.
시맨틱 코드 분석 엔진 인 CodeQL과 함께 코드 스캔을 사용할 수 있습니다. CodeQL은 코드를 데이터로 취급하여 기존 정적 분석기보다 자신감을 가지고 코드에서 잠재적 인 취약점을 찾을 수 있습니다.
코드 내에서 취약점을 검색하기 위해 코드 스캔과 함께 CodeQL 분석을 사용한이 튜토리얼.
포크 (공개)에서 새 저장소를 만들거나 저장소 복제로 시작하십시오.

포크 리포지토리를 만드는 곳에 있는지 확인하십시오
Security 탭을 클릭하십시오.

Set up code scanning 클릭합니다.

CodeQL Analysis 에서이 Setup this workflow 버튼을 클릭하십시오.

CodeQL이 이미 설정된 GitHub 작업 워크 플로우 파일이 생성됩니다. Java는 편집 된 언어이므로 나중에 빌드를 설정해야합니다. GitHub 동작을 사용하는 대신 타사 CI 시스템으로 CodeQL 분석을 구성하려면 문서를 참조하십시오.
작업 워크 플로 파일에는 다음을 포함한 여러 가지 섹션이 포함됩니다.

Start Commit > Commit this file 메인 브랜치로 변경을 커밋하려면 Commit -Commit을 클릭하십시오.
GitHub 작업 워크 플로를 트리거 할 수있는 여러 이벤트가 있습니다. 이 예에서는 워크 플로가 트리거됩니다

새로운 CodeQL 워크 플로를 설정하고 위의 단계에서 메인 브랜치에 커밋하면 스캔이 트리거됩니다.
Actions 탭 -> CodeQL 클릭하십시오
특정 워크 플로 실행을 클릭하십시오. 분석이 완료 될 때까지 워크 플로 실행의 진행 상황을 볼 수 있습니다.

워크 플로가 완료되면 Security 탭 -> Code Scanning Alerts 클릭하십시오. 보안 경고 "사용자 제어 소스에서 구축 된 쿼리"가 표시되어야합니다.
보안 경고를 클릭하면 다음을 포함한 보안 경보에 대한 세부 정보가 제공됩니다.

추가 정보와 추가 정보에 대한 링크를 포함하여 경고의 전체 하강을 보려면 Show more 클릭하십시오.


CodeQL Analysis는 소스에서 싱크로 데이터 흐름 경로를 추적 할 수 있으며 경보 내 경로 트래버스를 볼 수 있습니다.
이 경고가 발생한 데이터 흐름 경로를 보려면 show paths 클릭하십시오.


이 특정 경고를 수정하려면 SQL 쿼리에 사용되는 매개 변수가 검증되고 소독되도록해야합니다.
Code 탭을 클릭하고 Controllers 폴더에서 IndexController.java 파일을 편집하고 컨텐츠를 파일 fixme 로 바꾸십시오.

Create a new branch for this commit and start a pull request Branch fix-sql-injection 이름을 지정하고 풀 요청을 작성하십시오.
풀 요청에서 CodeQL 분석이 상태 검사로 시작되었음을 알 수 있습니다. 완료 될 때까지 기다리십시오.

워크 플로가 완료된 후 Code Scanning Results / CodeQL 상태 확인으로 Details 클릭하십시오.

코드 스캔은이 풀 요청이 이전에 감지 된 SQL 주입 취약성을 수정하는 것을 감지했습니다.

풀 요청을 병합하십시오. 풀 요청이 병합되면 다른 워크 플로우가 시작되어 모든 취약한 저장소를 스캔합니다.
최종 워크 플로가 완료되면 Security 탭으로 돌아가서 Closed 을 클릭하십시오. 사용자 제어 소스에서 구축 된 쿼리는 이제 폐쇄 된 문제로 표시됩니다.

보안 경고를 클릭하고 수정이 이루어 졌을 때 세부 정보를 주목하십시오. 이는 보안 경보시기와 방법을 자세히 설명 할 수있는 모든 추적 성을 제공하고 문제를 해결하기 위해 정확히 변경된 내용을 제공합니다.

CodeQL 분석을 설정하고 보안 경고를 수정 했으므로 풀 요청에 경고를 도입하려고 시도 할 수 있습니다.
기본 브랜치로 main 브랜치로 새로운 풀 요청을 작성하고 new-feature 분기로서 비교 분기를 만듭니다.

기본 지점이 자체 리포지토리 main 지점 대 원래 저장소의 main 브랜치로 설정되어 있는지 확인하십시오.
풀 요청이 작성되면 CodeQL 분석이 상태 검사로 시작되었음을 알 수 있습니다. 완료 될 때까지 기다리십시오.
워크 플로가 완료되면 Code Scanning Results / CodeQL 상태 확인에 실패했습니다. 코드 스캔은이 풀 요청이 새로운 보안 경고를 도입 한 것을 발견했습니다.

풀 요청에서 직접 Github 코드 스캔 봇이 PULL 요청에 대한 검토를 보안 경고 세부 사항으로 남겨 두었습니다. 이를 통해 개발자는 풀 요청에 도입 된 보안 문제를 신속하게 식별하는 데 도움이됩니다.

이를 통해 개발자와 보안 팀 간의 협업이 가능하며 보안 경고와이를 해결하는 방법에 대해 논의 할 수 있습니다.

새 Code Scanning Alert 로 Show more details 클릭하여 Security 탭으로 이동하고 보안 경고 세부 사항을보십시오.

보안 경고는 main 브랜치 (생산)가 아닌 In pull request 발견되었습니다.
GitHub Enterprise의 고급 보안 기능에 대해 이야기 할 준비가 되셨습니까? 자세한 내용은 판매에 문의하십시오!
GitHub에 내장 된 더 많은 보안 기능은 GitHub의 보안 기능 페이지를 확인하십시오.
추가 구성 옵션 및 기술 세부 사항은 코드 스캔 문서를 확인하십시오.