1. WAAP (Web Application and API Protection)
- 웹 애플리케이션과 API에 대한 보안을 통합적으로 관리 [1][2]
구분 | 설명 |
웹 애플리케이션 방화벽 (WAF, Web Application Firewall) |
- 웹 공격 대응, 정보 유출 방지, 부정 접근 방지, 웹 위변조 방지 등 웹 애플리케이션 계층에 대한 공격 탐지 및 차단 수행 |
API 보안 | - 웹 애플리케이션 상의 API 통신을 보호하기 위해, 다양한 API 데이터형식의 구문 확인 및 유효성 검사를 하는 등 탐지 및 차단 수행 - API 트래픽 모니터링: API 트래픽을 모니터링하여 비정상적인 활동 탐지 - API 인증 및 권한 관리: API 사용자의 인증과 권한 관리 지원 - API 취약점 관리: API의 알려진 취약점 관리 및 패치 지원 |
Bot 완화 | - Brute force attack, Fingerprinting, Credential stuffing, Scraping 등 웹 애플리케이션을 공격하는 악성 봇을 식별하고 애플리케이션에 액세스하지 못하도록 차단 |
DDoS(분산 서비스 거부) 방어 | - 애플리케이션 레이어 DoS 방어 기술을 통해 대부분 디도스 공격 방어 |
2. mTLS (Mutual TLS)
- 서버에 대한 인증(기존 TLS)에 더해 클라이언트에 대한 인증을 추가한 전송 계층 보안프로토콜 [3][4]
> 인증서에는 TLS/SSL 버전 정보, 발급 및 만료 날짜, Cipher Suits, 세션 ID 등이 포함
> 민감한 정보를 제공하는 API 환경에서 유용하며, 제로트러스트 보안 모델을 충족
> 중간자 공격, 스푸핑, 비밀번호 관련 공격, 악성 API 요청에 대응 가능
장점 | - 서버와 클라이언트가 상호 인증을 수행하여 TLS 보다 안전 - 데이터 암호화 및 전송 중 무결성 제공 - 인증서 기반 인증을 사용하므로 비밀번호에 대한 의존도를 줄임 - 민감한 데이터와 서비에 대한 클라이언트 접근 통제 강화 |
단점 | - 클라이언트와 서버 모두 인증서를 관리해야 하므로 관리 부담 발생(운영 복잡성, 확장성 문제, 구현 비용 증가 등) - TLS 대비 느린 속도 - 인증서 유효 기간 문제 또는 손상 등 장애 발생 시 복구 및 장애 처리 복잡 |
3. 식별정보 클로킹
- API 요청에 포함된 식별정보가 외부에 노출될 경우, 권한을 침해하는 손상된 개체 수준 권한(BOLA) 취약점 발생 가능
> 손상된 객체 수준 권한(Broken Object Level Authorization, BOLA) : 특정 데이터 객체에 액세스하기 위한 사용자 인증을 적절하게 확인하지 못할 때 발생하는 중요한 보안 취약점
- 식별정보 암호화 또는 마스킹 처리를 통해 권한 오용 차단
> 안전한 암호화 알고리즘 및 키 길이 사용 [5]
> 공격자가 권한 범위를 초과한 데이터를 조호화지 못하도록 BOLA 방지
> 요청에 포함된 민감 정보의 노출 방지
4. API 토큰 인증 및 무결성 검사
- JSON을 사용하는 경우가 많은 API는 주로 JWT(JSON Web Token)를 사용해 사용자의 인증과 권한 관리 [6][7][8]
> JWT의 각 값은 .(dot)으로 구분
JWT 구조 | |
Header | - 서명 시 사용하는 키(kid), 사용할 타입(typ), 서명 암호화 알고리즘(alg)의 정보를 저장 |
Payload | - 토큰에서 사용할 정보의 조각들인 Key/Value 형태의 클레임(Claim) 저장 |
Signature | - Header+Payload를 서버의 개인키 및 헤더에서 정의한 알고리즘으로 해시 생성 - 서버는 Signature를 검증하여 위·변조 여부 확인 |
- JWT 토큰을 검증해 위조·탈취·만료된 토큰 차단
> 손상된 사용자 인증(Broken Authentication) 및 세션 하이재킹 방지
5. API별 허용 임계치 및 메소드 제한
- 과도한 API 요청은 서버 자원 고갈로 이어져 서비스 거부 공격을 초래할 수 있음
> API 트랜잭션별 허용 임계치 제한과 목적에 맞는 HTTP 메소드 제한이 필요
> 자원 낭비 최소화 및 서비스 안정성 확보
6. JSON 응답 클로킹
- API는 구현 형태에 따라 의도와 다르게 과도한 정보가 제공될 수 있음
> 과도한 데이터 노출(Excessive Data Exposure), 대량 할당(Mass Assignment) 취약점 발생 가능
- 클라이언트 요청의 JSON 응답 필드를 클로킹(비노출) 처리
> 데이터 노출 방지를 위해 JSON 컨텐츠 타입에 대한 제어 기능이 필수적
> JSON 응답에서 불필요한 데이터를 클로킹하여 불필요한 정보 노출 방지
7. JSON 요청 필드 검사
- 클라이언트 요청 필드를 검사해 정당성 여부 판단
> JSON 요청 필드를 확인해 Injection 방지
참고
[1] https://blog.naver.com/pentamkt/223047110284
[2] https://www.datanet.co.kr/news/articleView.html?idxno=188058
[3] https://www.cloudflare.com/ko-kr/learning/access-management/what-is-mutual-tls/
[4] https://www.cloudflare.com/ko-kr/learning/access-management/what-is-mutual-tls/
[5] https://csrc.nist.gov/pubs/sp/800/131/a/r3/ipd?source=post_page-----a346d0ccaefd--------------------------------
[6] https://puleugo.tistory.com/138
[7] https://blog.bizspring.co.kr/%ED%85%8C%ED%81%AC/jwt-json-web-token-%EA%B5%AC%EC%A1%B0-%EC%82%AC%EC%9A%A9/
[8] https://velog.io/@vamos_eon/JWT%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%EA%B0%80-%EB%B3%B4%EC%95%883
[9] https://www.boannews.com/media/view.asp?idx=135182&page=1&kind=5
'취약점 > API' 카테고리의 다른 글
API 보안 #1 기본 (1) | 2024.09.20 |
---|