A. 인증 및 인가 서비스 Cognito

1. AWS Cognito 개요

  • 웹 및 모바일 앱에 대해 인증, 권한 부여 및 사용자 관리 제공
  • 사용자는 로그인하기 위해 아이디/비밀번호 또는 Google, Facebook 등의 권한 부여자를 통해 로그인

 

2. 취약점 발생 원리

비밀번호 오류횟수 제한

  • 비밀번호 오류횟수 제한 로직이 존재하지 않아 무작위대입 공격을 통해 타 사용자 비밀번호 획득 가능한 취약점
  • 금융위원고시 전자금융감독규정 - 비밀번호 5회 실패 시 계정을 잠그고 비밀번호 재부여 또는 초기화 지시
  • Cognito는 임시 잠금 기능을 통해 일부 대응
참 고
로그인 시도의 실패는 5회까지 허용되며 그 후의 각 실패에 대해서는 1초부터 시작하여 약 15분까지 두 배씩 기하급수적으로 증가한 시간만큼 임시 잠금 상태가 됩니다. 임시 잠금 시간 동안의 시도는 무시됩니다. 임시 잠금 시간이 지난 후 다음 시도가 실패하면 새 임시 잠금 시간은 마지막 시간의 두 배로 시작됩니다. 시도하지 않고 15분 정도 기다리면 임시 잠금도 재설정됩니다. 이 동작은 변경될 수 있습니다.

 

  • DynamoDB, Lambda 등 다른 서비스와 결합하여 로그인 시도 테이블 관리 및 제한 설정

 

3. 보안대책

인증 전,후 트리거 설정

  • 인증 시 트리거를 동작하도록 하여 로그인 시도 횟수 관리
  • 일정 횟수 이상이 되면 로그인 차단 후 비밀번호 재설정 유도
  • 성공적으로 로그인했다면 로그인 시도 횟수 초기화

 

B. HTTPS 프로토콜 설정 미흡

1. 개요

취약한 HTTPS 프로토콜 이용

  • 취약한 버전 암호 프로토콜 사용 시 암호화된 통신 내용이 유출될 수 있어 취약한 버전의 SSL(SSL 2.0, 3.0) 사용 여부 점검


취약한 HTTPS 암호 알고리즘 이용

  • 보안 강도가 낮은 암호 알로리즘 사용 시 가옫가 낮은 알고리즘을 사용할 경우 암호화된 통신 내용이 유출 되는 등 위협, 암호 알고리즘의 보안 강도의 적절성 여부 점검


취약한 HTTPS 재협상 허용

  • 암호화된 통신 내용이 노출될 가능성이 존재하는 취약한 방식의 HTTPS 재협상 허용 여부 점검


2. 보안대책

HTTPS 설정 관련 AWS Services

  • CloudFront
  • LoadBalancer
  • API Gateway
  • AWS Certificate Manager

 

인증서 발급 / Import 가능

 


취약한 HTTPS 재협상 허용

  • CloudFront : HTTPS 재협상을 지원하지 않음
  • Load Balancer : 로드밸런서 유형에 따라 재협상 지원 여부가 다름
    • Application LB : HTTPS 재협상 지원하지 않음
    • Network LB : HTTPS 재협상 지원하지 않음
    • Classic LB : 보안 HTTPS 재협상을 지원하며, 비활성화 필요 시 ALB로 마이그레이션 필요


C. 불필요한 웹 매서드 허용

1. 개요

불필요한 웹 매서드 허용

  • PUT, DELETE 등의 메서드가 허용되어 있을 경우 공격자가 악성 파일을 업로드하거나 삭제 등 웹 사이트 변조 가능성이 존재
  • GET, POST 이외의 불필요 메소드 제거

클라우드 특성

  • API Gateway가 백엔드의 Lambda 함수 기능을 외부에 제공
  • REST/HTTP API 엔드포인트 생성 시 표준 HTTP 메서드(DELETE, GET, HEAD, PATCH, POST, PUT)를 설정하여 API를 서비스

 

2 .진단 방법

진단시 유의사항

  • Burp, Telnet을 이용하여 매서드 변경(PUT, DELETE) 후 정상 기능 작동 여부 점검
  • 페이지 별 설정이 다를 수 있으므로 최상위 경로 외에 하위 경로에서도 점검
  • 웹 서버에 지장을 줄 수 있는 리소스 삭제 주의

 

3. 실습


4. 보안대책

API Gateway

  • 사용하지 않는 메서드 제거
  • 삭제 후에는 API 배포하여 변경내용 적용
  • S3 정적 웹 호스팅 페이지의 경우 DELETE 메서드를 통해 리소스 삭제 가능
  • 객체를 삭제하기 위해 REST API 및 DELETE 메서드를 사용할 수 있음
    • 오브젝트에 대한 접근 권한 설정 변경으로 대응