목록 보기
CTO가 커리어를 걸고 비트 레벨까지 내려가서 DB를 해킹했던 이야기
백엔드

CTO가 커리어를 걸고 비트 레벨까지 내려가서 DB를 해킹했던 이야기

데브시스터즈
데브시스터즈
2023년 1월 17일

두줄요약

CockroachDB 장애로 서비스가 멈춘 상황에서 원시 sst 파일을 직접 파고들어 복구 가능성을 탐색했습니다. 내부 저장 형식과 인코딩을 분석해 데이터를 꺼내는 방향을 모색했습니다.

문제 상황

  • CockroachDB 설정 미스로 절반 이상 노드가 다운되며 트랜잭션 처리가 중단된 대규모 서비스 장애
  • 업체 지원으로도 현재 상태 복구가 불가능하다는 진단, 마지막 백업 복원 권고
  • Event Sourcing 기반 서비스 특성상 원시 데이터만 추출하면 높은 수준의 복구 가능성 존재

원인 분석

  • 노드 과반 비일관성 탐지로 클러스터에서 제외되며 보호 모드 진입
  • SQL 레이어 이전의 스토리지 레이어에 실제 row 데이터가 sst 파일 형태로 남아 있는 구조
  • CockroachDB 내부 저장 형식과 프로토버퍼 인코딩을 직접 이해해야 하는 상황

해결 방법

  • Pebble/RocksDB 계층의 sst 파일 구조와 CockroachDB Value 인코딩을 역추적
  • hexdump와 소스코드, 문서를 함께 보며 checksum, tag, length-delimited payload를 파싱
  • CLI의 PrettyPrint 출력 로직을 활용해 원시 바이너리를 사람이 읽을 수 있는 형태로 추출하는 방향 검토

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...