API별 허용 임계치·메소드 제한, JSON 응답 클로킹, JSON 요청 필드 검사
[보안뉴스 김경애 기자] API(Application Programming Interface)는 각기 다른 애플리케이션을 연결해 주는 인터페이스로, 각각의 서비스들을 하나로 묶는 중요한 역할을 한다. API 보안의 기본은 웹 애플리케이션 보안이다. 버퍼 오버플로우, 인젝션, XSS 등 웹 애플리케이션을 타깃으로 한 대표적인 공격 대응과 함께 민감정보에 대한 유출 방지, 허용 및 차단 리스트 관리, 접근로그 관리, 크리덴셜 스터핑 공격 차단 등을 통해 API 보안을 강화해야 한다. 특히 OWASP에서 선정한 중요 취약점 대응이 요구되는데, 여기에는 6가지 핵심 기술이 필요하다.
▲API 보안을 위한 핵심 기술 6가지[자료=파이오링크]
보안업체 파이오링크의 김송현 웹보안PM은 API 보안을 위한 OWASP 취약점 대응기술로 △mTLS △식별정보 클로킹 △API 토큰 인증 및 무결성 검사 △API별 허용 임계치 및 메소드 제한 △JSON 응답 클로킹 △JSON 요청 필드 검사를 제시했다.
1. mTLS(Mutual TLS)
TLS는 오랜 기간 클라이언트와 서버 간 보안 연결을 위해 사용됐다. 기존에 TLS가 적용된 서버는 모든 클라이언트가 접속할 수 있었다. 하지만 제로트러스트 보안 시대에서는 모든 클라이언트들의 접속 허용이 보안상 취약할 수 있다. 특히, API를 통해 민감한 정보를 제공하는 서버는 특정 클라이언트들에게만 접속을 허용하는 것이 바람직하다. 이 점을 보완하기 위해 등장한 mTLS는 클라이언트가 서버를 확인하는 것은 물론 역으로 서버가 클라이언트를 확인하는 과정이 추가된 기술이다.
김송현 PM은 “웹방화벽에 클라이언트와 서버 인증서를 함께 저장한 후, 클라이언트와 통신 시에는 서버로, 서버와 통신 시에는 클라이언트로 인증을 실시한다”며 “API 보안에 있어 굉장히 중요한 기술”이라고 설명했다.
2. 식별정보 클로킹
API 엔드포인트에 식별정보가 필요한 경우 클라이언트는 해당하는 식별정보를 포함해 요청한다. 만약 이 과정에서 요청 필드가 공격자에게 노출되어 식별 정보를 쉽게 구분할 수 있다면, 공격자는 이를 이용해 손상된 객체 수준 권한 공격을 할 수 있다. 이는 2019년 OWASP API Security Top 10에서 A1인 손상된 개체 수준 권한(Broken Object Level Authorization) 취약점에 해당된다.
예를 들어 shopName이 가게 이름을 식별하는 정보라고 가정하면, 이 정보를 다른 이름으로 변경해 수익 등 민감한 정보를 열람할 수도 있다는 얘기다. 이처럼 쉽게 해독 가능한 식별 정보는 악용될 가능성이 크다. 이 때문에 웹방화벽은 이 정보를 암호화하거나 마스킹하는 기능을 통해 해당 취약점에 대한 위협에 대응해야 한다.
3. API 토큰 인증 및 무결성 검사
인증에 대한 취약점은 API뿐만 아니라 모든 애플리케이션 환경에서 가장 치명적인 취약점으로 분류된다. 손상된 사용자 인증(Broken User Authentication, 2019 OWASP API Security Top 10 A2)과 식별 및 인증 실패(Identification and Authentication Failures, 2021 OWASP Top 10 A7) 취약점에 해당한다.
JSON을 사용하는 경우가 많은 API는 주로 JWT(JSON Web Token)를 사용해 사용자의 인증과 권한을 관리한다. JWT는 헤더(토큰의 유형 및 알고리즘), 페이로드(클라이언트 정보), 시그니처(헤더와 페이로드, 그리고 서버의 비밀키로 만들어진 해시값)로 구성된다. 이 때문에 JWT가 위·변조되어도 시그니처를 만들 때 사용한 비밀키가 없으면 서버에서 발급한 JWT와 일치하지 않는다. 이러한 특성을 활용해 웹방화벽은 서버의 비밀키를 가지고 클라이언트가 제시하는 JWT의 무결성을 검증할 수 있다.
4. API별 허용 임계치 및 메소드 제한
서버는 서비스에 대한 요청을 정상적으로 처리하기 위해 네트워크 대역폭, 서버의 CPU·메모리·스토리지 등의 자원이 필요하다. 이러한 자원은 무한으로 공급되지 않기 때문에 적절한 정책으로 관리되지 않으면 자원 부족 및 속도 제한 취약점으로 인해 DoS, DDoS와 같은 공격이 발생할 수 있다.
자원 부족 및 속도 제한(Lack of Resource & Rate Limiting, 2019 OWASP API Security Top 10 A4)와 같은 취약점으로부터 자원을 보호하기 위해서는 요청에 대해 허용 임계치를 설정할 수 있는 정책이 필요하다. 특히, API의 경우 사용 목적에 따라 API 트랜잭션별 허용 임계치 제한과 목적에 맞는 HTTP 메소드 제한이 필요하다.
5. JSON 응답 클로킹
API는 구현 형태에 따라 클라이언트의 의도와 다르게 과도한 정보가 제공되어 과도한 데이터 노출(Excessive Data Exposure), 대량 할당(Mass Assignment) 취약점이 발생할 수 있다. 이 같은 취약점은 정보의 권한을 확인해 과도한 정보가 포함돼 있으면 이를 클로킹(데이터 통신에서 송신 측과 수신 측 사이에 주기적으로 발생하는 클락 신호를 사용해 전송 자료의 동기를 맞추는 방법)해 정보의 노출을 막아줘야 한다. API 보안에 있어 중요한 포인트는 바로 API에서 주로 사용하는 전송 형태인 JSON 컨텐츠 타입에 대해서도 클로킹 기능을 적용할 수 있어야 한다는 점이다.
6. JSON 요청 필드 검사
아무리 안전한 시스템을 도입해도 운영이 미숙하면 심각한 취약점으로 이어질 수 있다. 따라서 클라이언트로부터 수신한 요청의 필드를 검사해 정당한 요청인지 여부를 판단해야 한다. 파이오링크 김송현 웹보안PM은 “JSON 응답 클로킹에서 설명한 것과 같이 API 보안을 위해서는 JSON 컨텐츠 타입에 대해 분석하고 대응하는 기술이 지원되는지가 핵심 포인트일 만큼 중요하다”고 강조했다.
[김경애 기자(boan3@boannews.com)]
<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>