GitHub 저장소 접근 권한 부여
GitHub 저장소에 계정 추가 시 탐지합니다.
쿼리
GitHub 감사 로그에서 실시간으로 저장소 계정 추가 로그를 추출합니다.
| search action == "repo.add_member"
| rename user as target_user, actor as user, actor_ip as src_ip
메시지
- GitHub 저장소 접근 권한 부여: 관리자 $user, 저장소 $repo, 대상 계정 $target_user, 권한 $permission
출력 필드 순서
- _log_time, src_ip, actor, action, repo, user, permission, public_repo, user_agent, visibility
위협 분석
- 공격자가 GitHub 관리자 계정을 탈취한 경우, 정상적인 변경 행위로 위장하여 악성 계정 또는 추가된 공격자 계정에게 저장소 접근 권한을 부여할 수 있습니다. 이는 지속성(Persistence) 확보와 권한 상승(Privilege Escalation) 전략의 핵심 기법 중 하나입니다.
- 저장소에 권한이 부여된 계정은 소스코드 조회뿐 아니라 쓰기·관리 권한을 획득할 수 있으며, 이를 통해 코드 변조, 워크플로우 조작, 데이터 유출 등 공급망 공격으로 이어질 수 있습니다.
- 특히 ‘Write’, ‘Maintain’, ‘Admin’ 권한을 부여받은 계정은 저장소 내에서 자유롭게 악성 행위를 수행할 수 있어, 권한 변경 로그는 높은 보안 중요도를 가집니다.
- 내부자 위협(Insider Threat)의 경우에도 부적절하게 권한을 부여하여 조직 정책을 우회하거나, 민감한 코드 및 자산에 비인가 접근을 시도하는 사례가 존재합니다.
오탐 유형
- 신규 팀원이 프로젝트에 참여하면서 관리자가 정상적으로 저장소 접근 권한을 부여하는 경우 발생할 수 있습니다.
- 외부 협력사 또는 파트너 계정에 대해 일정 기간 동안 저장소 접근 권한을 제공하는 업무 절차가 존재하는 경우 탐지될 수 있습니다.
- 자동화된 계정이나 CI/CD용 서비스 계정 생성 과정에서 발생하는 정상적인 권한 부여 이벤트도 탐지될 수 있습니다.
대응 방안
- 권한 부여 주체 확인
- 권한을 부여한 사용자($user)가 정상적인 관리자 계정인지 확인하고 해당 작업이 의도된 것인지 직접 확인합니다.
- 부여된 권한 수준 검토
$permission값이 필요한 최소 권한을 벗어나지 않았는지 검토합니다.- 필요 이상의 Write/Admin 권한을 부여한 경우 즉시 정책 위반 여부를 점검합니다.
- 의심 계정 제거
- 권한이 부여된 대상 계정($target_user)이 확인되지 않거나 의심스러운 계정일 경우 즉시 저장소 접근 권한을 회수합니다.
- 계정 활동 분석
- 권한 부여 전후로 해당 계정의 PR, commit, workflow 실행 등 이상 징후가 있는지 분석합니다.
- 계정 탈취 여부 확인
- 권한을 부여한 관리자 계정의 로그인 이력(IP, User-Agent)을 분석하여 계정 탈취 가능성을 조사합니다.
- 보안 정책 강화
- 저장소 권한 변경에 대한 승인 절차 도입, 관리자 권한 최소화, 외부 계정 접근 정책 명확화 등을 수행합니다.
- 권한 변경 로그에 대한 경고 알림 또는 정기 감사 프로세스를 도입합니다.
MITRE ATT&CK
- 전술
- Persistence, Privilege Escalation
- 기법
- 이름: Account Manipulation
- ID: T1098
- 참조 URL: https://attack.mitre.org/techniques/T1098/