Alpine Linux, GitLab 침해 시도에 인스턴스 전면 재구축: 19.3.6 업그레이드도 Ruby 패치 없어 무효
- 10월 20일과 21일 새로 만든 계정이 CVE-2026-97229(CVSS 10.0) 악용을 시도해 GitLab 워커 프로세스가 8번 크래시했고, 그중 4번은 익스플로잇 중간 단계까지 진행됨
- 코드 실행 가능성을 배제할 수 없어 GitLab 인스턴스를 처음부터 재구축했고, 전 사용자 비밀번호를 초기화하고 GitLab 시크릿 키를 교체함
- 19.3.5에 있던 수정을 건너뛰고 19.3.4로 올린 실수 뒤 10월 22일 19.3.6으로 업그레이드했지만 여전히 취약했는데, 수정이 GitLab 코드가 아니라 번들 Ruby 패치라 표준 Ruby를 쓴 자체 이미지에는 적용되지 않았기 때문임
- Ruby는 10월 23일 3.3.13, 3.4.12, 4.0.9에서 Onigmo 정규식 엔진 수정을 내놨고, 10월 27일 이전에 받은 19.3.6 이미지와 그 이전 태그는 모두 취약함
- aports 커밋과 10월 21일 릴리스(3.21.9, 3.22.7, 3.23.7, 3.24.3), 10월 20일부터 24일까지 빌드된 패키지는 외부 기록과 대조해 변조가 없음을 확인했고 패키지 서명 키는 GitLab 서버에 저장된 적이 없음
Hacker News opinions
Ruby 정규식 엔진 버그라서 신뢰할 수 없는 입력으로 정규식을 컴파일하는 프로그램은 GitLab 말고도 다 노출됨. 소스로 빌드하거나 이미지 직접 만드는 쪽은 매일 뉴스 붙잡고 살아야 하나 싶어서 좀 지침
자동 빌드 돌리지 않으면 유지가 안 됨. 결국 업그레이드 트레드밀임
PHP2Shell 때도 돈은 되는데 몸이 갈렸음. 레거시 PHP 앱 여러 개 굴리는 중이라 요즘 계속 이런 식임
셀프호스팅이면 그냥 다 VPN 뒤로 넣어. 자체 보안팀이랑 개발팀 있는 회사만 공개 인터넷에 올려야 한다고 봄
Go 쪽에서 일하는데 vendoring 하지 말라고 계속 얘기함. 의존성을 캐시해두고 관리해야 할 짐이 생기는 거라서. 의존성 핀 고정도 똑같고, 배포판 Go 컴파일러 패키지는 너무 뒤처져서 공식 페이지 보라고 함
증기보일러 초창기에도 사고가 엄청 났는데 규제와 조직을 만들면서 잡았음. 지금 이 사고와 패치의 무한 반복은 정상이 아니고 계속 갈 수도 없음
15년 전만 해도 빌드 과정에서 아무 사이트의 latest 태그나 끌어오는 걸 미쳤다고 생각했는데, 세상이 바뀐 거임
Ruby 쪽 공지는 좀 심함. CVE도 안 받았다고 하고, 정규식 컴파일 자체가 원래 안전하지 않다고 봐왔다는 입장인데 2026년에 그건 좀 아님
그냥 토큰 계속 태워서 자동으로 따라가는 수밖에 없지 않나. 랩들이 자기 제품 수요를 만드는 구조임
정규식 같은 C 데이터 처리 라이브러리의 정수 오버플로가 RCE로 이어지는 거 보면 이번 주만 해도 C 라이브러리에 지친다
C 잘 다루는 사람은 괜찮고 쓰는 라이브러리는 전장에서 검증됐다고 계속 들어왔는데, 이번에 다 아니었음이 드러난 거 아님?
Rust가 여기서 뭐가 도움이 되냐. 릴리즈 빌드에서 정수 오버플로는 그냥 랩어라운드인데
Meltdown, Spectre, Rowhammer도 다 그런 부류였고 하드웨어는 못 고쳐도 소프트웨어 완화는 있었음. 저수준 코드는 애초에 네트워크에 덜 노출되기도 하고
우리 조직은 제로리스크로 갔음. PHP, Node, Python 관련 서비스 여러 개를 검증될 때까지 내렸고, 이제 공개 SW 시대 끝나는 거 아니냐는 농담까지 나옴
사고 보고서는 진짜 잘 썼음. 성공했을 경우 유출됐을 목록을 명시한 부분이 좋았고, 해시 종류도 밝혀줬으면 함
CVE-2026-89078 double free는 3.3.11 이상에만 영향인 것 같고 나머지는 패치 안 되는 구버전 Ruby도 걸리는 듯. 아무튼 Ruby 업데이트해라
제목이 상황을 축소하는 느낌임. attempted라고 하면 그냥 실패한 걸로 읽히는데 본문은 성공 가능성을 배제 못 한다고 함
19.3.6 이전에 받은 이미지가 취약하면 새 버전으로 태그를 따로 붙여야지, 같은 태그로 다시 올리는 건 좀 아닌 듯