Github Action이 털렸다
Github Action이 뭔데?
깃허브에는 Github Action 이라는 기능이 있습니다. Test, 빌드, CI/CD 구축, 작업 실행 예약 등 다용도로 사용 할 수 있는 좋은 도구입니다.
Features • GitHub Actions
Easily build, package, release, update, and deploy your project in any language—on GitHub or any external system—without having to run code yourself.
github.com
저장소의 .github/workflows 에 yaml 로 된 파일을 업로드하면, 해당 파일의 규칙에 따라 그 안에서 정의된 작업들을 실행시켜주는 고마운 기능입니다.
그런데 이 친구가 털렸다
Docker 이미지 경량화 게시글에서 언급된 템플릿을 작성하고, 기존 프로젝트에도 경량화를 진행했습니다.
inssa.club 의 백엔드 서비스 업데이트를 진행했죠.
Inssa Club - Share your full Clubhouse Profile with a single link
Clubhouse profile with a single link.
inssa.club
그런데 자동으로 진행되어야 할 롤링 업데이트가 전혀 되지 않는 모습을 발견했습니다.
로그를 확인해보니, 전혀 모르는 유저가 20시간 가량 제 github action을 실행시켜놓고 사라졌습니다.
당황해서 생활코딩 커뮤니티에 글도 썼다니까요.
https://www.facebook.com/groups/codingeverybody/permalink/5604200889620401/
생활코딩 : 제 깃허브 action에 전혀 모르는 유저가 10시간 가량을 실행시켜놓고 사라졌습니다
제 깃허브 action에 전혀 모르는 유저가 10시간 가량을 실행시켜놓고 사라졌습니다. 혹시 이런 경우 있으신가요? 해당 레포 및 액션 실행 기록은 밑의 링크에서 확인하실 수 있습니다.
www.facebook.com
해커의 공격시도는 이 곳에서 확인하실 수 있습니다. https://github.com/linkkky/api.inssa.club_clubhouse/actions/runs/723711926
linkkky/api.inssa.club_clubhouse
The clubhouse profile retrieving service of https://inssa.club - linkkky/api.inssa.club_clubhouse
github.com
부랴부랴, 부족한 영어로 abusing 신고를 보냈습니다.
원래는 해당 PR이랑 포크 받은 유저까지도 볼 수 있었는데, github 측의 빠른 대처로 캡쳐하는데는 실패했습니다... 남아있는것은 Github Action 실행 기록 뿐..
공격 방식
PR을 보내게 되면, 저장소의 Github Action이 실행되나 봅니다. 해당 해커는 채굴 코드를 다운로드 받고 실행시키는 코드를 저를 포함한 약 95개의 저장소에 실행시킨것으로 확인되었습니다. 제 일로 기사가 쓰여지는건 처음이네요..
GitHub Actions being actively abused to mine cryptocurrency on GitHub servers
GitHub Actions has been abused by attackers to mine cryptocurrency using GitHub's servers, automatically.The particular attack adds malicious GitHub Actions code to repositories forked from legitimate ones, and further creates a Pull Request for the orig
www.bleepingcomputer.com
해커의 정체
생활코딩 회원분들의 도움을 통해, 이 사람이 github action을 통해 turtle coin을 채굴하고 다니는 해커라는것을 알게되었습니다.
GitHub Actions being actively abused to mine cryptocurrency on GitHub servers
GitHub Actions has been abused by attackers to mine cryptocurrency using GitHub's servers, automatically.The particular attack adds malicious GitHub Actions code to repositories forked from legitimate ones, and further creates a Pull Request for the orig
www.bleepingcomputer.com
지금 현재는 github의 조치 덕분에 해당 유저의 계정 및 저장소가 전부 삭제되었습니다.
뻔뻔하게 본인 프로필 README에 공격 성공한 저장소들을 자랑하는 모습을 캡쳐해뒀어야 했는데.. 이제는 없네요.
상술하였듯 저를 포함한 약 95개의 저장소에 실행시킨것으로 확인 되었습니다. 실제로는 훨씬 더 많겠죠.
예방법
저 사용자를 시작으로, 유사 공격이 이루어지고 있는것 같습니다. 관련이 있을지 모르겠지만, 작성일 현재 시각 기준 github action의 status가 yellow 네요.
대응책
아까 보낸 abusing report 의 답변으로 다음과 같은 답변을 받았습니다.
대충 요약하자면 다음과 같습니다.
- 당신과 같은 리포트를 한 사람들이 있었다. 예방 할 수 있도록 하겠다.
- contribution 을 영구히 collaborator 만 할 수 있도록 하는 기능이 현재 없다.
- 그러나 임시적으로 막을 수 있는 방법이 있다. 최대 6개월까지 설정 가능하고, 이후에 다시 활성화 해야한다.
- 그 외에 Github Secret 이나 토큰과 관련한, 내 문제와는 관련없는 이야기...
Github Support의 James가 친절히 안내해준대로, Settings > Moderation Settings > Interaction limits 에서 "Limit to repository collaborators" 를 Enable 시키면, collaborator가 아닌 사용자는 해당 레포에 대한 상호작용 (덧글, issue, pr) 을 막을 수 있습니다.
물론 open source로 활발히 진행중인 프로젝트라면 이 방법은 사용 할 수 없겠지만, 다른 개발자를 위해 소스를 그저 공개해둔 경우라면 Interaction Limit을 활성화 하는것이 좋을 것 같습니다.
내 action은 아직도 복구가 안됐다
이제 시작일지, 대응이 완료된건진 잘 모르겠지만 제 github action은 아직도 복구가 안됬습니다. 일단 ticket을 끊어놓긴 했는데.. 아래 처럼 안됩니다.
github action을 쓰지 못해서 매우 답답하네요. 다들 이래서 전통적인 ci 솔루션과 jenkins를 쓰는걸까요?
흠..
아무쪼록, 다들 조심히, 안전히, 즐거운 개발하시고, 이만 글 마치겠습니다.
'Computer Science' 카테고리의 다른 글
Pytest 관련 짧은 팁 (0) | 2021.08.26 |
---|---|
파이썬 함수가 mocking(patching) 이 안돼요! (0) | 2021.08.25 |
Go 프로젝트 Docker 이미지 크기 99.2% 줄이기 (부제: 이미지 크기 12921% 떡상 시키기) (0) | 2021.04.08 |
이리치이고 저리치이고. 고난의 CI/CD 구축기 (0) | 2021.03.26 |
약빨고 22시간 개발 한 썰(부제: inssa.club 개발기) (0) | 2021.03.23 |