Skip to main content

대규모 경고 수정을 위한 보안 캠페인 실행

조직 전체에서 XSS(사이트 간 스크립팅)와 같은 특정 보안 경고 클래스를 수정하는 집중 보안 캠페인을 시작합니다.

누가 이 기능을 사용할 수 있나요?

Organizations on GitHub Team or GitHub Enterprise Cloud with GitHub Secret Protection or GitHub Code Security enabled

첫 번째 캠페인 시작

이 자습서에서는 XSS 경고에 초점을 맞춘 첫 번째 조직 전체 보안 캠페인을 계획하고 실행합니다. 그 과정에서 올바른 경고를 선택하고, 개발자의 성공을 준비하고, 보안 태세에서 의미 있는 개선을 이끄는 캠페인을 구성하는 방법을 알아봅니다.

여러 리포지토리에서 XSS 취약성의 반복 패턴을 식별했다고 상상해 보십시오. 경고를 하나씩 해결하는 대신, 개발자가 보안 코딩에 대한 신뢰를 구축하는 데 도움을 주면서 위험을 줄이는 조정된 캠페인을 실행하기로 결정합니다.

1. 포커스가 있는 목표 정의

대규모로 캠페인을 실행할 때는 모든 긴급 경고를 한 번에 대상으로 지정하려고 합니다. 개발자가 보안 코딩 및 사용 가능한 용량에 대한 강력한 기반을 이미 가지고 있는 경우 작동할 수 있습니다.

그러나 위험을 줄이고 안전한 코딩 관행을 개선하는 것이 목표라면 집중된 캠페인이 더 효과적입니다. 사이트 간 스크립팅과 같은 단일 취약성 유형을 선택하면 개발자가 패턴을 인식하고, 여러 수정에 걸쳐 학습을 적용하고, 추진력을 구축할 수 있습니다.

이 캠페인의 경우 단일 캠페인에 포함될 수 있는 경고 수의 제한 내에서 조직 전체의 XSS 경고에 집중하기로 결정합니다.

2. 캠페인에 대한 경고 선택

보안 경고 페이지에서 사이트 간 스크립팅 경고를 필터링하여 시작합니다. CWE-79(교차 사이트 스크립팅) 와 같이 미리 정의된 캠페인 템플릿을 사용하여 범위를 신속하게 정의할 수도 있습니다. 경고 필터링에 대한 자세한 내용은 보안 개요에서 경고 필터링을 참조하세요.

참고

보안 캠페인에는 최대 1,000개의 경고가 포함될 수 있습니다. 조직에 1000개 이상의 XSS 경고가 있는 경우 일치하는 경고 수가 이 한도 내에 있을 때까지 필터(예: 리포지토리, 심각도 또는 언어별)를 좁히거나 나머지 경고를 처리하도록 여러 캠페인을 계획합니다.

Copilot 자동 수정을(를) 캠페인에서 사용할 수 있는 경우, autofix:supported 필터를 사용하여 범위를 더 세밀하게 조정할 수 있습니다. 이를 통해 개발자는 AI 생성 수정 제안을 활용하여 경고를 보다 효율적으로 수정할 수 있습니다.

캠페인을 시작하기 전에 지원 교육 자료도 준비합니다. 다음은 그 예입니다.

  • XSS 취약성 방지에 대한 지침이 포함된 리포지토리를 만듭니다.
  •         [XSS(교차 사이트 스크립팅)와 같은 OWASP](https://owasp.org/www-community/attacks/xss/) Foundation의 리소스에 연결합니다.
    
  • 보안 코딩 패턴 및 테스트 방법의 예를 제공합니다.

개발자가 할당된 경고를 통해 작업할 때 참조할 수 있도록 캠페인 설명에 이러한 리소스에 대한 링크를 포함합니다.

3. 캠페인 관리자 할당 및 커뮤니케이션 채널 정의

캠페인을 시작하기 전에 수정 프로세스 전체에서 개발자를 지원할 사람을 결정합니다.

보안 캠페인을 만들 때 하나 이상의 캠페인 관리자를 할당해야 합니다. 캠페인 관리자는 다음이어야 합니다.

  • 조직 소유자 역할 또는 보안 관리자 역할이 있는 사용자 또는
  • 해당 역할 중 하나를 가진 팀의 구성원

다음을 수행할 수 있는 관리자를 선택합니다.

  • XSS 취약성에 대한 질문 답변
  • 수정에 대한 끌어오기 요청 검토
  • 에지 사례 또는 복잡한 수정 시나리오를 해결하는 데 도움이 됩니다.

캠페인 관리자는 캠페인에 참여하는 개발자에게 표시되므로 명확한 의사 소통을 설정할 수 있는 기회이기도 합니다. 캠페인을 만들 때 GitHub Discussions 스레드 또는 다른 통신 채널에 대한 링크와 같은 연락처 링크를 포함하면 개발자가 질문할 위치를 알 수 있습니다.

기대치를 조기에 설정하고 지원을 표시함으로써 신뢰를 높이고 수정 속도를 향상시킵니다.

4. 캠페인 만들기 및 게시

이제 캠페인을 만들 준비가 되었습니다.

캠페인을 정의할 때:

  • XSS 필터 또는 템플릿을 사용하여 경고를 선택합니다.
  • 캠페인의 목표를 설명하는 명확한 설명을 추가합니다.
  • 이전에 준비한 교육 리소스에 대한 링크를 포함합니다.
  • 경고 수 및 예상 수정 용량에 따라 현실적인 기한을 설정합니다.

범위에 대해 잘 모르는 경우 먼저 초안 캠페인을 만듭니다. 초안을 사용하면 게시하기 전에 포함될 경고를 검토하고 내부적으로 공동 작업할 수 있습니다.

5. 가시성을 높이기 위해 문제 추적 사용

개발자가 작업을 추적하고 관리자에게 가시성을 제공할 수 있도록 캠페인에 포함된 각 리포지토리에서 문제를 자동으로 만들도록 선택할 수 있습니다. 이를 통해 개발자는 기존 워크플로 및 프로젝트 보드 내에서 수정 작업을 관리할 수 있습니다.

문제 생성을 사용하도록 설정하면 캠페인의 "간단한 설명", "연락처 링크" 및 기한이 문제 본문에 자동으로 포함됩니다. 간단한 설명, 연락처 링크 또는 기한을 업데이트하면 해당 변경 내용이 문제에 반영됩니다. 또한 캠페인이 기한에 도달하거나 종료되면 각 문제에 대한 메모가 게시되어 개발자에게 알립니다. 이러한 통합을 통해 명확한 커뮤니케이션을 유지하고 여러 리포지토리에서 캠페인을 체계적으로 구성할 수 있습니다.

6. 수정 중 개발자 지원

캠페인이 라이브 상태가 되면 역할이 이끌이에서 인에이블러로 이동합니다. 개발자는 리포지토리에서 XSS 경고를 검토하고 수정하기 시작합니다. 효율적이고 자신 있게 이동할 수 있도록 지원하려면 다음을 수행합니다.

  • 캠페인 관리자가 끌어오기 요청을 검토하고 질문에 답변할 수 있는지 확인합니다.
  • 개발자는 Copilot 채팅를 활용하여 코드의 취약점을 파악하고 수정 사항의 타당성을 검증하는 방법을 더욱 효과적으로 이해할 수 있습니다.
  • 지원되는 경우, 개발자는 Copilot 자동 수정 제안을 검토하고 테스트한 후 수정 사항을 병합하는 것이 좋습니다.

교육 리소스를 이전에 준비한 경우 토론 및 끌어오기 요청 검토에서 참조하세요. 공유 지침을 강화하면 반복되는 질문이 줄어들고 장기적인 안전한 코딩 습관을 구축하는 데 도움이 됩니다.

캠페인 기간 동안 눈에 띄고 반응성을 유지하면 규정 준수 연습이 아니라 공동 작업이라는 것을 강조할 수 있습니다.

7. 현실적인 기한 설정

캠페인을 만들 때 기한을 설정합니다. 캠페인이 진행됨에 따라 타임라인을 달성할 수 있는지 확인합니다.

기한을 설정하거나 조정하는 경우 다음을 고려합니다.

  • 캠페인에 포함된 경고 수
  • 개발자의 예상 수정 용량(예: 일반 작업과 함께 경고 수정에 전념할 수 있는 시간)
  • 가용성에 영향을 미칠 수 있는 예정된 회사 마감일 또는 휴일

경고 수정이 전용 이니셔티브가 아닌 경우 대부분의 개발자는 기능 개발과 함께 이 작업의 균형을 조정합니다. 현실적인 타임라인을 설정하면 참여가 증가하고 낙담을 방지할 수 있습니다.

필요한 경우 모든 경고 유형을 한 번에 해결하는 대신 시간이 지남에 따라 여러 포커스가 있는 캠페인을 실행할 수 있습니다.

8. 캠페인 닫기 및 반복

최종 기한이 다가오면 진행 상황을 모니터링하고 나머지 복잡한 수정 사항을 공동 작업합니다.

캠페인이 닫힌 경우:

  • 리포지토리 문제는 자동으로 업데이트됩니다.
  • 개발자는 집중된 취약성 집합을 해결했습니다.
  • 조직에서 측정 가능한 방식으로 위험을 줄여 줍니다.

가장 중요한 것은 개발자가 특정 수준의 취약성을 인식하고 수정하는 실질적인 경험을 쌓은 것입니다.

여기에서 SQL 삽입, 안전하지 않은 역직렬화 또는 노출된 비밀과 같은 다른 대상 경고 집합을 사용하여 프로세스를 반복하여 시간이 지남에 따라 조직의 보안 상태를 꾸준히 개선할 수 있습니다.

다음 단계

캠페인을 시작할 준비가 되셨나요? 보안 캠페인을 만들고 관리하려면 보안 캠페인 생성 및 관리하기을 참조하세요.