← 프로젝트

회사AI 게임 스타트업2026.06 – 2026.10진행 중

ISMS-P 기준 백엔드 보안 감사와 자격증명 체계 정비

런칭 전 백엔드 136개 엔드포인트를 다중 에이전트 워크플로우로 전수 감사해 취약점 72건을 확정하고, 인증 계약과 DB 자격증명을 다시 세웠다.

역할
DevSecOps · 감사 설계와 구동 · 인증 계약 재설계 · DB 권한 체계 · 컴플라이언스
기술
ISMS-P 2026 · Express · TypeScript · PostgreSQL 역할·권한 · GitHub Actions OIDC · 정적 분석 · 적대적 검증 · 다중 에이전트 오케스트레이션
72건
확정 취약점 (Critical 1 · High 13 · Medium 17 · Low 36 · Info 5)
136
전수 점검한 엔드포인트
0
CI 장기 자격증명 · superuser 단일 접속
200+
런타임 role로 검증한 DB 마이그레이션

엔드포인트가 많아 인가·결제 무결성·시험운영 분리를 사람 손으로 전수 검토하기 어려웠고, LLM 단독 점검은 오탐이 많았습니다. 리뷰 → 적대적 검증 → ISMS-P 인증기준 매핑의 3단계 워크플로우를 설계해 후보 92건을 확정 72건으로 걸렀고, 같은 기간 refresh 토큰 회전의 동시성 결함과 DB 자격증명 구조를 함께 정비했습니다.

상황

런칭을 앞둔 모바일 게임 백엔드에는 약 136개의 엔드포인트가 있었습니다. 인가 누락, 결제 무결성, 시험운영 엔드포인트의 운영 분리 같은 결함은 한 건이면 치명적인데, 전수 검토를 사람 손으로 하기엔 양이 많았고 LLM에 통째로 맡기면 환각과 오탐이 섞였습니다.

인증 쪽에도 구조적 공백이 있었습니다. refresh 토큰 회전에 동시성 결함이 있었고, DB는 마스터 자격증명 하나로 모든 서비스가 붙어 있었으며, CI는 장기 액세스 키를 들고 있었습니다.

한 일

  1. 01

    3단계 다중 에이전트 감사 워크플로우

    공통기반 4개와 엔드포인트 도메인 9개, 총 13개 검토 유닛으로 나눠 100개 이상의 서브에이전트로 병렬 정적 분석을 돌리고, 후보 결함을 적대적 검증으로 걸러 오탐을 억제한 뒤 ISMS-P 인증기준(2.5~3.5)에 매핑했습니다. 결함별 file:line·인증기준·조치방안이 담긴 한국어 보고서가 자동 생성됩니다.

  2. 02

    확정·분류·핸드오프

    후보 92건을 검증 통과 72건으로 확정하고 be/fe/infra로 분류해 백엔드 실행 핸드오프(단기·중기)와 DevOps 조치(전역 가드 · WAF · 알람)로 연결했습니다. 대표 Critical은 시험운영 엔드포인트의 운영 가드 부재로 유료 재화 결제를 우회할 수 있는 경로였고, 마운트 레벨 전역 가드로 일괄 차단을 권고했습니다. 세션별 엔진 격리로 교차 사용자 IDOR이 구조적으로 성립하지 않음을 확인해 과잉 대응도 막았습니다.

  3. 03

    인증 계약 재설계

    코드 리뷰에서 refresh 토큰 회전의 TOCTOU 동시성 결함을 발견해 원자적 UPDATE로 처방했고, 토큰 재사용 탐지를 설계 문서에 편입시켰습니다. 계정 전환 시 토큰을 즉시 발급하던 경로는 타입 레벨에서 발급을 막는 2단계 확인 구조로 다시 그었습니다.

  4. 04

    DB 권한 분리: superuser 하나에서 역할 네 개로

    모든 서비스가 owner/superuser 한 접속으로 붙어 있어 TRUNCATE, 트리거 비활성화, 복제 역할 전환 같은 우회 경로가 열려 있음을 실측으로 보인 뒤, owner · runtime · migrator · command 역할로 분리했습니다. 권한이 필요한 명령은 SECURITY DEFINER 함수와 postcondition으로 감쌌고, 서비스별 자격증명 분리 → ACL 컷오버 → 역할 드리프트 테스트를 거쳐 마스터 자격증명을 폐기했습니다. 회귀 테스트를 런타임 role로 돌리게 해 마이그레이션의 권한 결함(42501)을 스테이징 canary 전에 잡습니다. 마이그레이션 원장은 2026.10 기준 200건을 넘었습니다.

  5. 05

    CI·운영 자격증명

    CI는 GitHub Actions OIDC로 전환해 장기 키를 없앴고, 관리자 콘솔의 AWS 위임은 IMDS hop 제한과 와일드카드 없는 최소 role로, 중요 작업은 5분 창 재인증으로 묶었습니다. 외부 LLM 호출에는 4겹 차단 게이트와 일일 비용 상한, 추론 지역 고정을 두었습니다.

  6. 06

    출시 전 컴플라이언스

    prod ALB 앞 WAF, Redis 전송·저장 암호화와 AUTH, 미성년 월 결제 한도 사전 확인, AI 학습 선택 동의 수집과 철회, Redis 키·요청 로그의 가명화(HKDF + HMAC-SHA256), 계정 파기 실행기, 수신 거부 목록 만료를 구현해 출시 요건을 코드로 채웠습니다.

  7. 07

    테스트 착시 적발

    통합 테스트가 조용히 스킵되거나 응답 파싱 실패로 무단언 통과하는 '초록색 착시'를 서로 다른 PR 세 건에서 적발해, 영속화 계층이 CI에서 실제로 검증되도록 바로잡았습니다. 보안 플래그가 꺼져도 green인 테스트 부류도 같은 방식으로 걸렀습니다.

결과

  • 취약점 72건 확정(Critical 1 · High 13 · Medium 17 · Low 36 · Info 5), 조치 핸드오프 완료.
  • 유료 재화 결제 우회 경로(Critical)를 전역 가드로 일괄 차단.
  • refresh 토큰 회전 TOCTOU 결함 수정, 토큰 재사용 탐지를 설계에 편입.
  • superuser 단일 접속 → 역할 4개 분리, 마스터 자격증명 폐기, CI 장기 자격증명 0, 권한 결함을 canary 전에 잡는 런타임 role 회귀 테스트.
  • WAF · Redis 암호화 · 결제 한도 · 동의 · 가명화 · 계정 파기까지 출시 컴플라이언스 구현.

정직하게 적어 두는 것

  • 공식 ISMS-P 인증이 아니라 인증기준에 따른 자체 준비도 감사입니다.
  • 엔드포인트 경로와 제품명은 익명화했습니다.