포스트

GitHub Secret Protection (1) - 시크릿

GitHub 를 분석한 글

GitHub Secret Protection (1) - 시크릿

이 내용은 Github 공식문서를 참고하여 정리한 글 입니다.
https://docs.github.com/ko/code-security/concepts/secret-security/secret-leakage-risks

1. 시크릿

  • 시크릿은 중요한 시스템, 데이터에 대한 접근 권한을 부여할 수 있는 자격증명을 뜻한다.
    • 외부 서비스를 사용할 때 인증이 필요한 API Key, 토큰
    • 데이터베이스 접속 정보(아이디, 패스워드, 연결URL)
    • 클라우드 공급자 자격 증명, 서비스 계정 토큰 정보
    • 인증서 및 암호화키
  • 시크릿이 리포지토리에 커밋되면 Git 히스토리의 일부가 되어 하드 코딩된 자격증명이 된다. 즉시 자격 증명을 폐기(revoke)하고 교체(rotate)해야 한다.

2. 시크릿이 유출되는 경로

  • 비밀 스프롤(secret sprawl): 관리·모니터링 없이 자격 증명이 리포지토리·팀·시스템 전반으로 확산되면 존재·사용처·노출 여부 추적 불가하다.

1) 개발 작업

  • 로컬 테스트 도중 하드 코딩된 자격 증명이 소스코드에 추가되고 커밋되어 노출된다.
  • 파일 또는 인프라 템플릿과 같은 .env 설정 파일이 커밋되어 노출된다.
  • 리드미 파일, 위키, 기술문서의 시크릿을 포함하는 자격 증명 예제가 노출된다.

2) 리포지토리 관리

  • 방치된 레거시 리포지토리에 남아있는, 잊혀졌지만 여전히 유효한 시크릿이 노출될 수 있다.
  • GitHub 이슈, 풀리퀘스트, 토론, 코드 조각(gist)에 시크릿이 노출될 수 있다.
  • 외부 기여자나 계약자가 커밋해 들여온 시크릿은 노출될 수 있다.

3) 버전 관리

  • 시크릿은 코드에 커밋된 후, 제거되어도 Git 히스토리에 유지된다.
  • 자격 증명은 포크된 리포지토리, 백업 시스템, CI/CD 로그로 외부에 전파/복제될 수 있다.
  • 퍼블릭 리포지토리에는 검색 엔진과 전문 스캐닝 서비스에 인덱싱되어 노출된 시크릿은 항상 노출될 위험이 존재한다.

3. 유출 시 보안 위험

1) 무단 접근

  • 권한이 없는 사용자가 시스템에 직접 액세스할 수 있다.
    • 유출된 시크릿을 통하여 내 계정에 인프라·서비스를 프로비저닝할 수 있고
    • 중요한 데이터에 접근할 수 있고
    • 실제 운영중인 시스템에 접근할 수 있다.

2) 데이터 유출/침해

  • 권한이 없는 사용자가 데이터에 직접 접근하여 데이터를 유출하고, 무결성을 훼손하거나 손상시킬 수 있다.

3) 공급망 공격

  • 노출된 패키지 레지스트리 토큰으로 악성 버전을 게시해 다운스트림 사용자에게 배포할 수 있다.

4) 재정적 영향

  • 유출된 시크릿을 통하여 무단으로 리소스를 사용하여 많은 요금을 발생시킬 수 있다.
  • 사고 발생시 사고 대응과 법적 비용으로 상당한 시간과 리소스가 필요하다.
  • 많은 고객이 이탈하고, 많은 비즈니스 기회를 잃게 된다.

4. GitHub의 시크릿 보안

1) 푸시 보호

  • GitHub은 애초에 리포지토리에 노출되지 않도록 시크릿이 포함된 커밋을 푸시하지 못하도록 사고를 미연에 방지한다.
  • 위험 시점에 개발자에게 실시간 피드백을 제공한다.
  • 알려진 서비스에 대한 공급자 패턴과, 비밀키, 일반 API 키 같은 일반 패턴을 모두 다룬다.
    1
    2
    3
    4
    
    AKIA3F7K2M9QPLXV8N4T        ← AWS (AKIA로 시작, 20자)
    ghp_a8Kd92mZx1QpLv...       ← GitHub PAT (ghp_ 접두어)
    sk-ant-api03-...            ← Anthropic
    xoxb-...                    ← Slack bot token
    
  • 모든 시크릿 유형이 기본적으로 푸시 보호되지는 않으며, 위험과 노이즈에 대한 허용 범위에 따라 조직이 직접 구성해야 한다.

2) 기존 시크릿 검색

  • 시크릿 검색을 통하여 지속적으로 모니터링한다.
  • 만약, 노출이 확인되었을 경우 신속하게 폐기하고 교체할 수 있다.
  • 시크릿 사용자 지정 패턴을 정의할 수 있으며, 조직 전반에 걸쳐 시크릿을 검색할 수 있다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.