웹 보안 리드·아키텍트 트러블슈팅 면접

웹 보안 리드 · 아키텍트 (10년+) 트러블슈팅 7문항 조회수 45 · 2026-09-15 (화) 07:42:06
1 SQL Injection 장애 대응
Hard

Q. 새벽 2시에 온콜을 받았습니다. 전자상거래 플랫폼의 상품 검색 API에서 비정상적으로 느린 쿼리가 대량 발생하고 있으며, DB CPU 사용률이 95%를 넘어 서비스 장애가 발생했습니다. WAF 로그를 확인하니 특정 IP 대역에서 검색어에 UNION, SELECT 등의 SQL 키워드가 포함된 요청이 급증했습니다. 즉시 취해야 할 조치부터 근본 원인 분석, 재발 방지까지 단계별 대응 전략을 설명해주세요.

즉시 서비스 복구를 위한 긴급 조치와 근본 원인 해결을 분리해서 생각해보세요.

A. 모범답안

1단계 긴급 조치로 WAF에서 해당 IP 대역을 즉시 차단하고, DB 커넥션 풀을 재시작하여 서비스를 복구합니다. 2단계로 애플리케이션 로그와 DB 슬로우 쿼리 로그를 수집하여 SQL Injection 공격 벡터를 분석하고, Prepared Statement 미적용 지점을 특정합니다. 3단계로 모든 사용자 입력을 받는 쿼리에 Parameterized Query를 적용하고, ORM 사용 시 raw query 사용 부분을 리팩토링합니다. 4단계로 WAF 룰을 강화하여 SQL Injection 패턴을 사전 차단하고, DB 계정 권한을 최소화(Least Privilege)하여 공격 성공 시 피해 범위를 제한합니다. 5단계로 SAST/DAST 도구를 CI/CD 파이프라인에 통합하여 배포 전 취약점을 자동 탐지하고, 정기적인 펜테스트를 수립합니다. 마지막으로 사고 보고서를 작성하고 전사 보안 교육을 실시하여 개발팀의 시큐어 코딩 역량을 강화합니다.

핵심 포인트
  • • 긴급 차단 및 서비스 복구 우선순위
  • • Prepared Statement 적용을 통한 근본 원인 해결
  • • 다층 방어 전략(WAF + 코드 레벨 + DB 권한)
  • • 자동화된 취약점 탐지 체계 구축
답변에 넣으면 좋은 키워드
SQL Injection Prepared Statement Parameterized Query WAF 룰셋 최소 권한 원칙 SAST DAST 슬로우 쿼리
실무에서는

레거시 시스템에서 동적 쿼리 생성 로직이 있을 때 SQL Injection 공격으로 인한 대규모 장애가 발생할 수 있습니다.

Follow-up 질문

ORM을 사용하는 환경에서도 SQL Injection이 발생할 수 있는 경우는 어떤 것들이 있으며, 어떻게 방지할 수 있습니까?

2 JWT 토큰 탈취 사고 분석
Hard

Q. 프리미엄 구독 서비스에서 비정상적인 동시 접속이 탐지되었습니다. 한 계정으로 수백 개의 디바이스에서 동시 로그인이 발생하고 있으며, 조사 결과 다크웹에서 유효한 JWT 액세스 토큰이 거래되고 있음을 확인했습니다. XSS나 피싱 공격 흔적은 없으며, HTTPS를 사용하고 있습니다. 토큰이 유출된 경로를 추적하는 방법과 즉시 취해야 할 조치, 그리고 장기적인 아키텍처 개선 방안을 제시해주세요.

토큰이 어디에 저장되고 어떻게 전송되는지, 로깅과 모니터링 관점에서 생각해보세요.

A. 모범답안

먼저 액세스 로그를 분석하여 비정상 접속 패턴(User-Agent, IP 지역, 접속 시간대)을 파악하고, 클라이언트 측 토큰 저장 방식을 확인합니다. localStorage에 JWT를 저장했다면 제3자 스크립트나 브라우저 확장 프로그램을 통한 유출 가능성을 조사합니다. 즉시 조치로 시크릿 키를 로테이션하여 기존 토큰을 모두 무효화하고, 리프레시 토큰 기반 재인증을 강제합니다. 의심 계정에 대해 강제 로그아웃 및 비밀번호 재설정을 요구합니다. 중기적으로 JWT를 HttpOnly, Secure, SameSite 쿠키로 전환하여 JavaScript 접근을 차단하고, 디바이스 핑거프린팅과 IP 기반 이상 탐지를 도입합니다. 장기적으로는 짧은 TTL의 액세스 토큰과 리프레시 토큰 로테이션 전략을 구현하고, 토큰에 디바이스 ID를 바인딩하여 토큰 재사용을 방지합니다. 또한 Redis 기반 토큰 블랙리스트를 구축하여 실시간 토큰 무효화 기능을 추가합니다.

핵심 포인트
  • • 클라이언트 측 저장 방식 취약점 분석
  • • 시크릿 키 로테이션 및 강제 재인증
  • • HttpOnly 쿠키 전환으로 XSS 방어
  • • 디바이스 바인딩 및 토큰 블랙리스트 구축
답변에 넣으면 좋은 키워드
JWT HttpOnly 토큰 로테이션 리프레시 토큰 디바이스 핑거프린팅 토큰 블랙리스트 시크릿 키 관리
실무에서는

모바일 앱이나 SPA에서 토큰을 안전하지 않게 저장하면 대규모 계정 도용 사고로 이어질 수 있습니다.

Follow-up 질문

JWT의 시크릿 키를 로테이션할 때 무중단으로 전환하는 구체적인 방법은 무엇입니까?

3 CORS 설정 오류 장애
Medium

Q. 마이크로서비스 환경에서 프론트엔드 배포 후 갑자기 특정 API 호출이 실패하기 시작했습니다. 브라우저 콘솔에는 CORS 정책 위반 에러가 표시되고 있으며, 백엔드 로그에는 OPTIONS 프리플라이트 요청만 기록되고 실제 요청은 도달하지 않습니다. 이전에는 정상 작동했고 백엔드 코드는 변경되지 않았습니다. CDN을 통해 프론트엔드를 서빙하고 있으며, API는 별도 도메인에서 운영 중입니다. 문제를 진단하고 해결하는 절차를 설명해주세요.

프론트엔드 배포로 인해 변경될 수 있는 요소들, 특히 도메인과 헤더를 중심으로 생각해보세요.

A. 모범답안

먼저 브라우저 개발자 도구의 네트워크 탭에서 프리플라이트 OPTIONS 요청의 응답 헤더를 확인하여 Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers 값을 검증합니다. 프론트엔드 배포 시 CDN 도메인이나 서브도메인이 변경되었는지 확인하고, 백엔드의 CORS 허용 오리진 리스트와 일치하는지 검증합니다. API Gateway나 로드밸런서에서 CORS 헤더를 추가하는 경우 설정이 중복되어 충돌할 수 있으므로 계층별 설정을 점검합니다. 프론트엔드에서 커스텀 헤더(예: Authorization, X-Custom-Header)를 새로 추가했다면 백엔드의 Access-Control-Allow-Headers에 해당 헤더를 명시적으로 추가해야 합니다. 해결책으로 백엔드의 CORS 미들웨어 설정을 업데이트하여 새 오리진과 헤더를 허용하고, 와일드카드 사용 시 보안 리스크를 고려하여 명시적 도메인 리스트를 사용합니다. 마지막으로 CDN 캐시를 퍼지하고 브라우저 캐시를 클리어한 후 재테스트합니다.

핵심 포인트
  • • 프리플라이트 요청 응답 헤더 검증
  • • 배포로 인한 도메인 변경 확인
  • • 계층별 CORS 설정 충돌 점검
  • • 커스텀 헤더 허용 리스트 업데이트
답변에 넣으면 좋은 키워드
CORS 프리플라이트 OPTIONS Access-Control-Allow-Origin Access-Control-Allow-Headers CDN 오리진
실무에서는

마이크로서비스 아키텍처에서 API Gateway와 개별 서비스의 CORS 설정이 충돌하여 장애가 발생하는 경우가 빈번합니다.

Follow-up 질문

프로덕션 환경에서 CORS 와일드카드를 사용하는 것이 왜 위험하며, 동적으로 오리진을 검증하는 방법은 무엇입니까?

4 세션 하이재킹 공격 대응
Hard

Q. 소셜 네트워크 서비스에서 사용자들이 자신의 계정이 해킹당했다는 신고가 급증했습니다. 조사 결과 공용 WiFi를 사용한 사용자들의 세션 쿠키가 탈취되어 공격자가 해당 세션으로 계정을 장악하고 있었습니다. 서비스는 HTTPS를 사용하고 있으며 세션 쿠키에 Secure 플래그가 설정되어 있습니다. 그럼에도 불구하고 공격이 성공한 원인을 분석하고, 즉각적인 피해 차단 방법과 세션 관리 아키텍처 개선 방안을 제시해주세요.

HTTPS 사용에도 불구하고 세션이 탈취될 수 있는 시나리오와 세션 검증 메커니즘을 생각해보세요.

A. 모범답안

공격 원인으로 첫 로그인 시 HTTP로 접속 후 HTTPS로 리다이렉트되는 과정에서 MITM 공격으로 쿠키가 탈취되었거나, HSTS가 설정되지 않아 SSL Stripping 공격에 노출되었을 가능성을 분석합니다. 또는 혼합 콘텐츠(Mixed Content)로 인해 일부 요청이 HTTP로 전송되었을 수 있습니다. 즉시 조치로 모든 활성 세션을 무효화하고 전체 사용자에게 재로그인을 요구하며, 의심 계정은 2FA 인증을 추가로 요구합니다. HSTS 헤더를 추가하여 브라우저가 항상 HTTPS로만 접속하도록 강제하고, preload 리스트에 등록합니다. 세션 관리 개선으로 세션 쿠키에 사용자의 IP 주소나 User-Agent를 바인딩하여 세션 컨텍스트가 변경되면 재인증을 요구합니다. 세션 타임아웃을 단축하고, 중요 작업 수행 시 재인증(Step-up Authentication)을 요구합니다. 또한 비정상적인 지역이나 디바이스에서 접속 시 이메일/SMS 알림을 발송하고, 사용자가 활성 세션을 관리할 수 있는 대시보드를 제공합니다.

핵심 포인트
  • • HSTS 미설정으로 인한 SSL Stripping 공격 가능성
  • • 세션 컨텍스트 바인딩을 통한 하이재킹 방어
  • • 전체 세션 무효화 및 강제 재인증
  • • 이상 접속 탐지 및 알림 시스템
답변에 넣으면 좋은 키워드
세션 하이재킹 HSTS SSL Stripping MITM 세션 바인딩 Step-up Authentication 혼합 콘텐츠
실무에서는

공용 WiFi 환경에서 HSTS가 설정되지 않은 서비스는 세션 탈취 공격에 매우 취약합니다.

Follow-up 질문

세션 쿠키에 IP 주소를 바인딩할 때 모바일 사용자나 프록시 환경에서 발생할 수 있는 문제는 무엇이며 어떻게 해결할 수 있습니까?

5 XXE 취약점 장애 대응
Hard

Q. B2B SaaS 플랫폼에서 고객이 업로드한 XML 파일을 파싱하는 기능에서 서버 내부 파일 시스템의 민감 정보가 외부로 유출되는 사고가 발생했습니다. 공격자는 XML 파일에 외부 엔티티를 선언하여 서버의 /etc/passwd 파일과 환경 변수를 읽어냈습니다. 레거시 XML 파서 라이브러리를 사용 중이며, 여러 마이크로서비스에서 동일한 파싱 로직을 사용하고 있습니다. 즉시 취해야 할 조치와 전사 차원의 재발 방지 전략을 설명해주세요.

XML 파서 설정과 입력 검증, 그리고 전사 표준화 관점에서 접근해보세요.

A. 모범답안

즉시 조치로 모든 XML 파서에서 외부 엔티티 처리를 비활성화합니다. Java의 경우 DocumentBuilderFactory에서 setFeature로 external-general-entities와 external-parameter-entities를 false로 설정하고, Python lxml의 경우 resolve_entities=False를 지정합니다. 업로드된 XML 파일을 스캔하여 DOCTYPE 선언이나 ENTITY 선언이 포함된 파일을 차단하고, 화이트리스트 기반 스키마 검증을 추가합니다. 유출된 정보의 범위를 파악하기 위해 서버 접근 로그와 네트워크 아웃바운드 로그를 분석하고, 영향받은 고객에게 통지합니다. 중기적으로 전사 시큐어 코딩 가이드라인에 안전한 XML 파싱 표준을 명시하고, 공통 라이브러리를 만들어 모든 마이크로서비스에 배포합니다. XML 대신 JSON이나 Protocol Buffers 같은 안전한 데이터 포맷으로 마이그레이션을 검토합니다. SAST 도구에 XXE 탐지 룰을 추가하여 코드 리뷰 시 자동으로 취약점을 발견하고, 정기적인 보안 감사를 통해 레거시 코드의 취약점을 지속적으로 제거합니다.

핵심 포인트
  • • XML 파서의 외부 엔티티 처리 즉시 비활성화
  • • 스키마 검증 및 입력 필터링 강화
  • • 전사 공통 라이브러리 및 시큐어 코딩 표준 수립
  • • 안전한 데이터 포맷으로의 마이그레이션
답변에 넣으면 좋은 키워드
XXE XML External Entity DocumentBuilderFactory 외부 엔티티 스키마 검증 SAST 시큐어 코딩
실무에서는

SOAP API나 설정 파일 업로드 기능에서 XXE 취약점으로 인한 내부 정보 유출 사고가 자주 발생합니다.

Follow-up 질문

XML을 완전히 제거할 수 없는 레거시 시스템에서 XXE를 방어하기 위한 추가적인 네트워크 레벨 방어 전략은 무엇입니까?

6 CSP 우회 공격 분석
Hard

Q. 엔터프라이즈 웹 애플리케이션에 엄격한 Content Security Policy를 적용했음에도 불구하고 XSS 공격이 성공하여 사용자 세션이 탈취되는 사고가 발생했습니다. CSP는 script-src 'self'로 설정되어 있으며, 인라인 스크립트는 차단되어 있습니다. 조사 결과 공격자는 JSONP 엔드포인트와 오래된 JavaScript 라이브러리를 이용하여 CSP를 우회했습니다. 공격 벡터를 분석하고, CSP 정책을 강화하는 방법과 함께 조직 전체의 CSP 관리 체계를 어떻게 구축할지 설명해주세요.

허용된 도메인이나 경로에서 제공되는 콘텐츠의 안전성과 CSP 정책의 완전성을 점검해보세요.

A. 모범답안

공격자는 script-src 'self'에서 허용된 자사 도메인의 JSONP 엔드포인트에 콜백 함수로 악성 코드를 주입하거나, 오래된 AngularJS 같은 라이브러리의 템플릿 인젝션 취약점을 이용하여 CSP를 우회했을 가능성이 높습니다. 즉시 조치로 사용하지 않는 JSONP 엔드포인트를 제거하고, 필요한 경우 CORS 기반 API로 대체합니다. 취약한 버전의 JavaScript 라이브러리를 최신 버전으로 업데이트하고, npm audit이나 Snyk 같은 도구로 의존성 취약점을 스캔합니다. CSP 정책을 강화하여 script-src에 nonce나 hash 기반 인라인 스크립트만 허용하고, strict-dynamic 지시어를 추가하여 동적으로 로드되는 스크립트도 제어합니다. base-uri, form-action, frame-ancestors 같은 추가 지시어를 설정하여 다른 공격 벡터도 차단합니다. CSP 위반 리포트를 수집하기 위해 report-uri나 report-to를 설정하고, 실시간 모니터링 대시보드를 구축합니다. 조직 차원에서 CSP 템플릿을 표준화하고, 새로운 서비스 배포 시 CSP 검증을 필수 체크리스트에 포함시킵니다.

핵심 포인트
  • • JSONP 엔드포인트와 레거시 라이브러리를 통한 CSP 우회
  • • nonce/hash 기반 인라인 스크립트 제어 및 strict-dynamic 적용
  • • CSP 위반 리포트 수집 및 모니터링
  • • 전사 CSP 표준 및 배포 체크리스트 수립
답변에 넣으면 좋은 키워드
CSP Content Security Policy JSONP strict-dynamic nonce CSP 우회 report-uri 의존성 취약점
실무에서는

레거시 엔드포인트나 오래된 라이브러리가 남아있으면 엄격한 CSP도 우회될 수 있어 지속적인 점검이 필요합니다.

Follow-up 질문

nonce 기반 CSP를 SPA 환경에서 구현할 때 서버 사이드 렌더링과 클라이언트 사이드 렌더링의 차이점은 무엇입니까?

7 API Rate Limiting 우회 공격
Medium

Q. 모바일 뱅킹 앱의 OTP 발송 API에 분당 5회 제한을 걸어두었는데, 공격자가 대량의 SMS 발송을 유발하여 월 수천만 원의 SMS 비용이 청구되는 사고가 발생했습니다. 로그를 분석한 결과 공격자는 X-Forwarded-For 헤더를 조작하여 매번 다른 IP로 인식되게 만들었고, Rate Limiting이 우회되었습니다. API Gateway에서 IP 기반으로 Rate Limiting을 구현했으며, 프록시 서버를 거쳐 요청이 들어옵니다. 즉시 비용 출혈을 막고, Rate Limiting 전략을 개선하는 방법을 설명해주세요.

IP 외에 사용할 수 있는 식별자와 다층 Rate Limiting 전략을 고려해보세요.

A. 모범답안

즉시 조치로 X-Forwarded-For 헤더를 신뢰하지 않고 프록시 서버의 실제 연결 IP를 사용하도록 설정을 변경하거나, 신뢰할 수 있는 프록시 체인만 허용하도록 설정합니다. OTP API에 임시로 더 엄격한 전역 Rate Limit을 적용하여 비용 출혈을 막습니다. 근본적인 해결책으로 IP 기반 외에 사용자 계정, 전화번호, 디바이스 ID를 조합한 다층 Rate Limiting을 구현합니다. 예를 들어 동일 전화번호로 시간당 3회, 동일 디바이스로 10회, 전체 API로 분당 100회 같은 계층적 제한을 설정합니다. 비로그인 상태의 요청에는 더 엄격한 제한을 적용하고, CAPTCHA를 추가하여 자동화된 공격을 차단합니다. Redis 같은 분산 캐시를 사용하여 여러 API Gateway 인스턴스 간에 카운터를 공유하고, Sliding Window 알고리즘을 적용하여 정교한 제어를 구현합니다. 비정상 패턴 탐지를 위해 머신러닝 기반 이상 탐지 시스템을 도입하고, SMS 발송량이 임계치를 초과하면 자동으로 알람을 발송하고 서비스를 일시 중단하는 서킷 브레이커를 구현합니다.

핵심 포인트
  • • X-Forwarded-For 헤더 조작 방지 및 신뢰 체인 설정
  • • 다층 식별자 기반 Rate Limiting (계정, 전화번호, 디바이스)
  • • 분산 환경에서 Redis 기반 카운터 공유
  • • 비용 임계치 기반 자동 차단 메커니즘
답변에 넣으면 좋은 키워드
Rate Limiting X-Forwarded-For Sliding Window Redis 디바이스 ID CAPTCHA 서킷 브레이커 이상 탐지
실무에서는

SMS나 이메일 발송 API는 공격자의 주요 타겟이며, 단순 IP 기반 제한만으로는 방어가 불충분합니다.

Follow-up 질문

분산 시스템에서 정확한 Rate Limiting을 구현할 때 발생할 수 있는 동시성 문제와 해결 방법은 무엇입니까?

댓글 0

로그인 후 댓글을 작성할 수 있습니다.

아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!