
공격자가 ContentDB 서버와 데이터에 무단으로 접근해 이메일 주소, 해시된 비밀번호, 업로드 파일 등을 열람할 수 있었다. Luanti는 이용자에게 다른 사이트에서 같은 비밀번호나 비슷한 비밀번호를 썼다면 즉시 바꾸고, 10월 22~26일에 ContentDB에서 받은 파일을 확인하라고 권고했다.
공격자는 두 가지 취약점을 악용해 ContentDB에 침입했다. 이 가운데 하나는 제3자 구성요소의 취약점으로, Luanti는 해당 구성요소의 관리자에게 이를 알렸다. 취약점이 수정되고 공개된 뒤 추가 정보를 공유할 예정이다.
Luanti의 조사에 따르면 공격자는 10월 22일 13시(UTC)부터 ContentDB 내부 설정에 접근했고, 이를 이용해 직원 계정에 로그인했다. 이 설정으로 업로드 파일을 바꾸거나 이메일을 보낼 수도 있었지만, Luanti는 그런 일이 실제로 일어났다는 증거를 확인하지 못했다. 같은 날 17시 35분에는 취약점 가운데 하나를 수정하는 패치를 배포했지만, 당시에는 이미 악용됐다는 사실을 몰랐다.
공격자는 10월 24일 23시부터 원격 코드 실행 취약점을 탐색하기 시작했다. 10월 26일 00시 15분부터는 도커 컨테이너 안에서 서버 명령을 실행할 수 있는 전체 권한을 가진 것으로 확인됐다. 이에 따라 데이터베이스에 완전히 접근할 수 있었으며, 해당 컨테이너 안에서 실행되는 코드를 수정했을 가능성도 있다. Luanti는 10월 26일 09시에 침입을 발견해 ContentDB를 오프라인으로 전환하고 세션, API 토큰, GitHub OAuth 토큰을 포함한 모든 비밀 정보를 폐기했다.
공격자는 비밀 정보와 데이터베이스, Redis, 업로드 파일에 완전히 접근할 수 있었다. 노출됐을 가능성이 있는 정보와 자료는 다음과 같다.
- 사용자 이름, 이메일 주소, 해시된 비밀번호. 비밀번호는 솔트가 적용된 bcrypt 해시로 저장되며 평문으로 저장되지 않는다. 강하고 고유한 비밀번호는 해시에서 복구하기 어렵지만, 약하거나 흔한 비밀번호는 추측할 수 있다. Luanti는 사용한 비밀번호가 더는 안전하지 않다고 보고 대응하라고 권고했다.
- 10월 26일 전 2주 동안 ContentDB에서 패키지를 내려받거나 게임 안에서 패키지를 본 사람들의 IP 주소. IP 주소는 계정과 연결되지 않았다.
- 업로드된 패키지와 릴리스 파일.
공격자는 비밀 키를 이용해 어느 계정으로든 행동할 수 있었다. Luanti는 모든 업로드 파일을 백업과 대조했고 변경된 파일은 발견하지 못했다. 다만 취약점이 존재한 기간에 ContentDB가 악성 업로드 파일을 제공했을 가능성은 배제하지 않았다.
Luanti는 다음과 같이 대응하라고 안내했다.
- ContentDB 비밀번호를 다른 사이트에서도 사용했거나 비슷한 비밀번호를 썼다면 즉시 변경한다.
- Luanti에서 보낸 것처럼 꾸민 이메일을 포함해 피싱 이메일을 주의한다.
- 10월 22일부터 26일 사이 ContentDB에서 파일을 내려받았다면 해당 파일을 확인한다. 악성 업로드의 증거는 발견되지 않았지만 가능성을 배제하지 않았다. 이 기간에 받은 파일을 다시 내려받거나, 업스트림 소스 또는 비공식 미러의 파일과 비교할 수 있다.
- ContentDB가 다시 온라인 상태가 되면 비밀번호와 보유한 API 토큰을 재설정해야 한다.
Luanti는 취약한 구성요소를 교체하고 보안 감사를 계속하고 있다. 추가 사고를 막을 방법도 검토 중이다. 보안 업데이트가 진행되는 동안 ContentDB는 오프라인 상태를 유지하며, 복구에는 일주일 이상 걸릴 가능성이 있다. 조사가 이어지고 있으며, 추가 정보는 공개할 수 있을 때 공유할 예정이다. 의심스러운 점이나 우려 사항은 security@luanti.org로 연락하면 된다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요