GitHub API 키 유출, 코드와 알림을 지웠는데도 위험한 이유

회사 밖 공개 저장소의 이슈 댓글에서 API 키가 발견됐다. 알림을 Fixed로 닫은 뒤, 그 키로 접속하던 앱에는 어떤 변화가 생길까?

GitHub API 키 유출, 코드와 알림을 지웠는데도 위험한 이유
세 줄 요약
  • GitHub가 10월 23일 Public monitoring에 알림 관리·유효성 검사·API·웹훅을 추가했다.
  • 알림의 처리 상태와 유출된 자격 증명의 유효성은 따로 관리된다. 알림을 닫는 동작은 키를 폐기하지 않는다.
  • 데이터 레지던시 지원도 공개 프리뷰로 시작됐으며, 이 환경의 귀속 기준은 검증된 이메일 도메인이다.

회사 소유가 아닌 공개 저장소까지 탐지 범위가 넓어진다

Public monitoring은 기업 구성원과 관련된 자격 증명이 GitHub의 외부 공개 저장소에 노출됐을 때 이를 기업에 연결해 보여주는 기능이다. 기업 소유 저장소를 검사하는 기존 secret scanning의 범위를 넘어선다.

일반 환경에서는 기업 멤버의 유출과 기업이 검증한 도메인에 이메일 주소가 일치하는 사용자의 유출을 연결한다. 공개 저장소의 코드뿐 아니라 이슈·풀 리퀘스트 댓글도 대상이다. 탐지 범위를 인터넷의 모든 사이트로 넓혀 해석해서는 안 된다.

관리 화면은 조직 단위가 아닌 엔터프라이즈 단위에 있다. Security and quality에서 Public monitoring을 열면 노출된 저장소, 관련 사용자, 비밀 유형을 볼 수 있다. 상세 화면에는 파일 위치와 대응 권고도 나온다.

알림을 닫는 것은 대응 기록을 바꾸는 동작이다

10월 23일 업데이트로 알림을 Dismissed 또는 Fixed로 닫고 다시 열 수 있게 됐다. 지원되는 비밀 유형에는 Active·Inactive·Unknown이라는 유효성도 표시된다. 처리 상태와 유효성은 서로 다른 정보다.

표시·동작의미
알림 닫기·다시 열기기업이 해당 발견 건을 어떻게 처리하는지 기록한다.
Active·Inactive·Unknown지원되는 자격 증명의 유효성 검사 결과다.
발급처에서 키 폐기해당 자격 증명을 더 사용할 수 없게 하는 대응이다.

GitHub는 알림을 닫아도 노출된 자격 증명이 폐기되거나 공개 저장소에서 지워지지 않는다고 명시한다. Unknown도 유효성을 모른다는 뜻이지 안전하다는 판정이 아니다.

공식 유출 대응 지침은 발급처에서 키를 폐기하고, 필요한 경우 새 키로 관련 서비스를 갱신하도록 한다. 서비스가 정상 작동하는지와 유출 기간 중 무단 접근이 있었는지도 확인 대상이다. 키의 실제 유효성을 판단할 가장 확실한 곳은 발급처다.

새 유출을 대응 시스템으로 보낼 수 있다

엔터프라이즈 관리자와 보안 관리자는 REST API로 귀속된 발견 건을 조회할 수 있다. 조회 경로는 GET /enterprises/{enterprise}/secret-scanning/public-monitoring-alerts다. 비밀 유형·귀속 정보·노출 위치 등 대응에 필요한 메타데이터를 가져온다.

엔터프라이즈 웹훅의 secret_scanning_public_monitoring_alert 이벤트는 새로 탐지된 유출이 기업에 귀속될 때 알린다. 외부 대응 시스템은 이 알림을 사건 접수에 활용할 수 있다.

운영 과정에서는 접수와 실제 조치를 구분해 기록하는 편이 정확하다. 담당자가 확인한 발견 건에는 처리 이유를 남기고, 대응이 더 필요하면 다시 열 수 있다. 목록에서 사라졌다는 사실을 발급처의 폐기 확인으로 대신하지 않아야 한다.

데이터 레지던시에서는 도메인 일치만 사용한다

10월 22일 발표에 따라 GitHub Enterprise Cloud with data residency에서도 공개 프리뷰를 사용할 수 있다. 이 환경은 github.com과 기업 멤버 명단을 공유하지 않으므로, 커밋 작성자의 이메일과 기업의 검증된 도메인이 일치하는지를 기준으로 귀속한다.

일반 환경의 멤버십 기반 대조까지 그대로 적용되는 것은 아니다. 해당 알림은 암호화돼 기업 대시보드로 전달되며, GitHub는 지정된 지역 안에 데이터가 유지된다고 설명한다.

이용에는 GitHub Advanced Security 또는 GitHub Secret Protection 라이선스가 필요하다. Public monitoring은 해당 라이선스에 추가 비용 없이 포함되며, 현재 단계는 정식 출시가 아닌 공개 프리뷰다.

자주 묻는 질문

GitHub가 자동으로 폐기하는 키도 있는가?

공개 저장소에 유출된 GitHub 개인 액세스 토큰은 자동 폐기된다. 지원되는 다른 공급자의 비밀은 공급자에게 보고되며 공급자가 폐기할 수 있다. 이런 조치는 Public monitoring 알림을 닫는 동작과 별개다.

코드에서 키를 삭제하면 대응이 끝나는가?

삭제만으로 이미 노출된 값의 사용을 막지는 못한다. 발급처의 폐기 여부와 관련 서비스의 자격 증명 교체를 확인해야 한다.

Public monitoring이 탐지한 유출을 대응 시스템에 접수할 수 있다. 대응 완료는 실제 자격 증명 조치까지 확인한 뒤 기록해야 한다.