핵심 POINT
7월 경찰청 국가수사본부가 GitHub 개인 액세스 토큰(PAT) 대량 유출 정황을 확인하면서, 저장소 접근과 2차 자격증명 노출 위험이 함께 부각되고 있습니다.
유출이 의심되는 GitHub 토큰은 폐기·재발급하고, 저장소 안에 남아 있던 API 키·클라우드 키·비밀번호도 함께 교체해야 합니다.
DevOps와 클라우드 보안 환경에서는 토큰의 권한, 만료 기한, 저장 위치, 로그 점검 체계를 함께 관리하는 자격증명 중심 보안이 필요합니다.
지난 7월 경찰청 국가수사본부는 글로벌 개발 플랫폼 깃허브(GitHub)에서 개인 액세스 토큰(PAT)이 대량 유출된 정황을 확인하고 국내 기업과 개발자에게 보안 조치를 권고했습니다. 전자신문 보도에 따르면 국적이 확인된 피해 계정은 54개국 370여 개, 소유주나 국적이 확인되지 않은 계정은 200개 이상이며 국내 계정도 30여 개로 알려졌습니다.
경찰, 깃허브 계정 500여 개 유출 확인...보안 조치 권고
이번 사건이 심각하게 받아들여진 이유는 단순한 ID·비밀번호 노출이 아니라, 저장소와 API에 접근할 수 있는 PAT가 유출됐기 때문입니다. 공격자는 토큰 권한 범위 안에서 비공개 저장소를 열람하거나 소스코드를 복제할 수 있고, 저장소 안에 하드코딩된 API 키·클라우드 키·데이터베이스 접속 정보가 있다면 2차 피해로 이어질 수 있습니다.
비공개 저장소를 사용하는 기업과 개발자라면 GitHub 토큰 사용 현황, 권한 범위, 만료 기한, 저장소 내 자격증명 노출 여부를 함께 점검해야 합니다. PAT 유출이 실제 보안에 어떤 영향을 줄 수 있는지, 지금 바로 확인해야 할 조치를 정리했습니다.
■ GitHub PAT 유출, 왜 위험할까
출처 : Magnific
1) 개인 액세스 토큰(PAT)이란?
GitHub는 코드 저장과 협업, 자동화 배포가 이뤄지는 대표적인 개발 플랫폼입니다. PAT는 GitHub 저장소나 API에 접근할 때 비밀번호 대신 사용하는 토큰 형태의 인증 수단으로, 자동화 스크립트, CI/CD 파이프라인, 외부 개발 도구 연동에 활용됩니다. DevOps 환경에서는 반복 작업을 자동화하기 위해 PAT나 GitHub 토큰을 사용하는 경우가 많습니다.
문제는 PAT가 발급 시 설정된 권한 범위 안에서 저장소와 API에 접근할 수 있다는 점입니다. 토큰이 유출되면 공격자는 계정 비밀번호를 몰라도 해당 토큰이 허용하는 읽기·쓰기 작업을 수행할 수 있습니다. 특히 배포 자동화 도구나 빌드 스크립트에 오래된 토큰이 하드코딩되어 있다면, 소스코드 유출을 넘어 배포·클라우드 보안 영역까지 영향을 줄 수 있습니다.
2) "2단계 인증을 켜뒀으니 안전하다"는 착각
GitHub 계정에 2단계 인증(2FA)을 적용해 두었다고 해서 PAT 유출 위험이 사라지는 것은 아닙니다. 2단계 인증은 웹 로그인과 같은 대화형 인증을 강화하는 장치이지만, 이미 발급된 PAT를 이용한 API 요청마다 추가 인증을 요구하는 방식은 아닙니다.
PAT는 로그인 이후 발급되는 API용 자격증명에 가깝습니다. 따라서 공격자가 유효한 PAT를 확보했다면 토큰 권한 범위 안에서 API 요청을 보낼 수 있습니다. 2단계 인증은 여전히 필수지만, 토큰 권한 최소화와 만료 기한 설정, 토큰 폐기·재발급 절차를 별도로 운영해야 하는 이유가 여기에 있습니다.
■ PAT 유출이 의심될 때 먼저 해야 할 일
출처 : Magnific
GitHub 비공개 저장소를 이용하는 기업과 개발자라면 먼저 유출 가능성을 낮게 보지 않는 태도가 필요합니다. 추가 피해를 막기 위해 기존 토큰을 폐기·교체하고, 유출 기간 중 무단 접근이나 저장소 복제, 비정상 푸시가 있었는지 점검해야 합니다.
1) 토큰 폐기 및 자격증명 교체
우선 유출이 의심되는 PAT는 폐기하고 새 GitHub 토큰을 발급해야 합니다. 저장소 내부 소스코드나 설정 파일에 데이터베이스 비밀번호, 클라우드 액세스 키, API 키가 포함되어 있었다면 해당 자격증명도 노출 가능성을 전제로 교체해야 합니다.
최신 소스코드에서 비밀 정보를 삭제해도 이전 커밋 히스토리에는 기록이 남을 수 있습니다. 따라서 파일에서 지우는 것만으로 조치를 끝내지 말고, 실제 시스템에서 해당 자격증명을 폐기하고 새 값을 적용해야 합니다.
2) 로그 분석하고 이상 징후 점검하기
토큰을 재발급하는 것만으로는 이미 발생했을 수 있는 접근을 확인할 수 없습니다. 조직 계정과 엔터프라이즈 환경에서는 감사 로그와 보안 로그를 확인해 다음과 같은 이상 행위가 있었는지 점검해야 합니다.
• 평소 사용하지 않던 국내외 IP 주소에서의 로그인, API 요청, 토큰 사용 기록
• 비업무 시간대에 집중된 저장소 접근, Clone·Fetch·Push 기록
• Secret Scanning 경고, Push Protection 우회, 토큰 생성·폐기 등 보안 이벤트
• 정식 개발 절차를 거치지 않은 커밋, 푸시, 배포 파이프라인 실행 기록
■ 재발 방지를 위한 GitHub 토큰 보안 설정
출처 : Magnific
긴급 조치를 마쳤다면 유사한 토큰 유출을 줄이기 위한 보안 설정을 정비해야 합니다. 협업 인원이 많거나 자동화 파이프라인이 복잡한 조직일수록 PAT 발급·보관·폐기 기준을 명확히 해야 합니다.
1) 최소 권한 원칙 및 자동 탐지 체계 구축
우선 토큰이 유출되더라도 피해 범위를 줄일 수 있도록 권한 관리 체계를 정비해야 합니다. 가능한 조직은 허용된 IP 대역, VPN, 조직 정책을 활용해 접근 범위를 제한하고, 이상 징후를 탐지하는 도구를 함께 운영해야 합니다.
• Fine-grained PAT 적용: 가능하면 Classic PAT보다 특정 저장소와 필요한 권한을 더 세밀하게 지정할 수 있는 Fine-grained PAT를 우선 검토합니다.
• 최소 권한 및 만료 기한 설정: 단순 조회 목적이라면 읽기 권한만 부여하고, 토큰에는 만료 기한을 설정해 장기 사용을 줄입니다. 자동화가 많아 토큰 관리가 복잡하다면 GitHub App 전환도 검토할 수 있습니다.
• 접근 제어 강화: 계정 단위 2단계 인증은 기본으로 유지하고, 조직·엔터프라이즈 정책에서 지원되는 경우 IP Allow List와 승인 절차를 활용합니다.
• 시크릿 탐지 기능 활성화: Secret Scanning과 Push Protection을 활용하면 PAT나 API 키 등 하드코딩된 자격증명이 저장소에 들어가기 전 차단하거나 경고할 수 있습니다. 다만 적용 범위와 지원 패턴은 저장소 유형, 라이선스, 토큰 종류에 따라 달라질 수 있습니다.
2) 개발 환경 재점검
개발자 작업 환경도 함께 점검해야 합니다. 소스코드와 자격증명을 분리하고, 로컬 단말과 IDE 확장 프로그램, CI/CD 환경에 저장된 토큰을 함께 확인해야 2차 인프라 침해 가능성을 줄일 수 있습니다.
• 소스코드와 자격증명의 분리: 소스코드에 자격증명을 직접 작성하는 하드코딩을 금지합니다. 하드코딩된 데이터는 저장소 유출 시 곧바로 2차 피해로 이어질 수 있습니다.
• 시크릿 관리 체계 도입: 로컬 파일이나 코드에 비밀정보를 남기지 말고, CI/CD Secret, 클라우드 Secret Manager, HashiCorp Vault 같은 관리 체계로 분리합니다. 애플리케이션 실행 시점에 필요한 값을 안전하게 주입하는 구조가 바람직합니다.
• 개발 엔드포인트 보안 점검: 개발자 PC와 VS Code 등 IDE 확장 프로그램의 보안 상태를 정기적으로 확인합니다. 개발 도구의 악성 확장 프로그램이나 공급망 공격을 통해 로컬에 저장된 자격증명이 탈취될 수 있기 때문입니다.
■ 자격증명 중심 보안 체계가 필요한 이유
출처 : Magnific
클라우드 서비스와 DevOps 기반 개발 환경이 확대되면서 자격증명은 기업 보안의 핵심 관리 대상이 됐습니다. 하나의 자격증명 노출만으로도 소스코드 저장소, 클라우드 인프라, 데이터베이스, 배포 시스템이 연쇄적으로 영향을 받을 수 있습니다.
따라서 최소 권한 원칙, 단기 임시 자격증명 활용, 감사 로그 모니터링, 정기적인 자격증명 교체 정책을 포함한 자격증명 중심 보안 체계가 필요합니다. 이는 특정 GitHub 토큰 점검에 그치지 않고 클라우드 보안과 개발 보안 운영 전반으로 이어져야 합니다.
다만 이러한 체계를 모든 조직이 자체적으로 설계하고 유지하기는 쉽지 않습니다. 특히 개발·운영 환경이 클라우드와 SaaS, 외부 협업 도구로 확장된 조직이라면 권한 설정, 로그 점검, 침해 징후 탐지를 함께 보는 접근이 필요합니다.
이 단계에서는 GitHub 안의 토큰만 보는 것으로는 충분하지 않습니다. PAT 유출이 클라우드 키, 배포 계정, 개발자 단말, 관제 로그로 이어질 수 있기 때문에 권한 설정과 침해 흔적을 함께 점검하는 체계가 필요합니다.
특히 내부 보안 인력만으로 클라우드 구성, 로그 분석, 외부 노출 경로를 모두 확인하기 어렵다면 SK쉴더스와 같은 전문 보안 진단과 운영 지원을 받는 것이 좋습니다.
• 클라우드 보안: AWS·GCP·Azure 등 클라우드 계정 권한, 접근 제어, 로깅, 암호화 설정을 점검하고 개선 방향을 제시합니다.
• 보안 관제·MDR: 이상 접근, 계정 탈취 의심 행위, 엔드포인트 기반 위협을 탐지·분석하고 대응을 지원합니다.
• 진단 서비스: 웹·앱·인프라 진단과 모의해킹을 통해 외부 노출 자산과 공격 경로를 점검합니다.
GitHub PAT 유출 대응은 토큰 폐기에서 끝나지 않습니다. 개발자 개인의 토큰 관리와 조직 차원의 클라우드 보안·관제·진단 체계를 함께 정비해야 안전한 개발 환경을 유지할 수 있습니다.
SK쉴더스 클라우드 보안 서비스 자세히 알아보기
SK쉴더스 보안 관제·MDR 서비스 자세히 알아보기
■ 자주 묻는 질문
Q. 제 계정이 유출 대상인지 어떻게 확인하나요?
A. GitHub나 관계 기관의 통보 여부를 확인하되, 통보를 받지 않았더라도 비공개 저장소를 운영한다면 예방 차원에서 기존 PAT를 점검하고 불필요한 토큰은 폐기하는 것이 안전합니다. 조직 계정이라면 Audit Log와 Security Log에서 낯선 IP, 비정상 Clone·Push 기록도 확인하세요.
Q. 침해 정황이 확인되면 어디에 신고해야 하나요?
A. 침해사고가 확인되거나 의심되는 경우에는 한국인터넷진흥원 인터넷침해대응센터(KrCERT, 국번 없이 118) 또는 관할 기관에 신고하는 것이 좋습니다. 신고 전에는 유출된 토큰을 폐기하고 관련 로그와 접근 기록을 보존해 두면 원인 분석과 피해 범위 확인에 도움이 됩니다.
Q. 토큰만 새로 발급하면 조치가 끝나는 건가요?
A. 그렇지 않습니다. 저장소 소스코드나 커밋 히스토리에 데이터베이스 비밀번호, API 키, 클라우드 키가 있었다면 함께 무효화·재발급해야 합니다. 현재 파일에서 삭제해도 이전 이력에 남을 수 있으므로 자격증명 자체를 폐기하는 것이 중요합니다.
Q. 개발자 PC를 통한 토큰 탈취는 어떻게 막나요?
A. 출처가 불분명한 개발 도구나 확장 프로그램 설치를 피하고, VS Code 등 IDE 확장 프로그램을 주기적으로 점검해야 합니다. 인증 정보를 코드에 직접 적는 하드코딩을 없애고 시크릿 관리 체계로 분리하면 단말이 감염되더라도 피해 범위를 줄일 수 있습니다.
[참고자료]
경찰, 깃허브 계정 500여개 유출 확인...보안 조치 권고 | 전자신문
Managing your personal access tokens | GitHub Docs
Token expiration and revocation | GitHub Docs
Reviewing the audit log for your organization | GitHub Docs



