OWASP API Security Top10이란?
앱 중심의 세상 속에서 혁신의 기본 요소는 API(Application Programming Interface)입니다. API는 클라우드, IoT, 모바일 등 다양한 환경에서 널리 활용되고 있는데요. 특히 API를 통해 전달되는 개인식별정보, 신용정보 등의 민감한 데이터의 유출은 심각한 결과를 초래할 수 있습니다. API보안의 중요성이 커짐에 따라 LG CNS RED팀은 API 보안 진단을 별도로 진행하고 있습니다. 이를 위해 OWASP(Open Web Application Security Project, 웹 애플리케이션 보안을 담당하는 비영리 단체)에서 제공하는 웹 애플리케이션 보안 취약점 TOP10(OWASP API Security Top10)을 활용하고 있는데요. OWASP는 주로 웹에 관한 정보노출, 악성 파일 및 스크립트, 보안 취약점 등을 연구하는 단체입니다.
OWASP가 OWASP API Security Top10(2019)을 공유한 지 4년 만인 2023년에 새롭게 갱신된 OWASP API Security Top10(2023)을 발표했습니다. 이번 글에서는 OWASP API Security Top10의 개정 내용과 데이터 유출 예방법에 대해 알아보겠습니다.
OWASP API Security Top10 2023 개정 내용
2019년 기준의 OWASP API Security Top10의 항목으로 보면 API2, API4, API7, API9, API10 항목에서 많은 취약점이 발견되었는데요. 특히 API2(Broken User Authentication)는 등록되지 않은 자산에서 인증 수단을 도용하는 상황과 인증 수단 파기와 관련된 내용으로 취약점이 발견됐습니다. 게다가 API9(Improper Assets Management)에서는 API 명세서를 만들지 않거나 제대로 관리하지 않아 보안에 심각한 영향을 줄 수 있는 Zombie API와 Shadow API가 발견됐습니다.
기존 OWAST Top10 API Security 2019와 개정된 OWAST Top10 API Security 2023의 차이는 아래와 같습니다.
• 기존 API3과 API6이 API3으로 통합
• 기존 API8과 API10은 2023 Top10에서 제외
• 기존 API2와 API4, API9는 2023 Top10에서 순위가 동일하나 내용 업데이트
• API6, API7, API10이 신규 취약점으로 랭크
다음은 세가지 측면의 트렌드 변화입니다.
• 여전히 액세스 제어 및 승인은 API 보안에서 가장 큰 과제로 남아 있습니다. 상위 5개 항목 중 3개는 권한(액세스 제어)과 관련이 있는데요. 최신 API 기반 애플리케이션은 수천 개의 API 엔드포인트(컴퓨터 네트워크에 연결하고 컴퓨터 네트워크와 정보를 교환하는 물리적 디바이스)와 수많은 매개변수로 인해 점점 더 복잡해지고 있습니다.
• Scalping(주식의 단기 거래행위를 일컫는 용어) 및 가짜 계정 생성과 같은 새로운 위험을 해결하기 위해 “Unrestricted Access to Sensitive Business Flows”라는 새 항목을 추가했습니다. 새로운 애플리케이션을 구축할 때 시큐어 코딩(소프트웨어 개발 시 안전한 코드 제작을 일컫는 용어)이나 안전한 계획 및 디자인이 필요하기 때문에 이러한 추세가 늘어나고 있습니다.
• SSRF(Server Side Request Forgery, 서버 측 요청 위조)가 목록에 추가됐습니다. SSRF는 새로운 취약점은 아니지만 API 기반 애플리케이션에서 널리 퍼지면서 심각해졌습니다. 예를 들어, webhooks(데이터가 변경됐을 때 실시간 알림을 받을 수 있는 기능)의 인기로 해커가 SSRF 취약성을 악용하기 더 쉬워진 것이 있는데요. 게다가 Cloud, K8S, Docker의 관리/제어 REST API로 인하여 많은 공격 표면이 노출되기도 했습니다.
기존 API 취약점은 ‘[RED팀] 지피지기면 백전불태, API보안 이해로 개인정보 철통방어!’에서 확인할 수 있습니다.
[새로 추가된 항목]
API6: Unrestricted Access to Sensitive Business Flows
‘Unrestricted Access to Sensitive Business Flows’ 항목이 OWASP Top10 API 보안 위험 랭킹 6위에 새롭게 추가됐습니다. 해당 공격은 공격자가 API의 비즈니스 처리 방식을 알아낸 뒤, 이를 자동화해 비즈니스에 악영향을 끼치는 방식으로 진행되는데요. 일례로, 특정 제품을 모두 구매해 다른 사용자가 시스템에 접근하지 못하게 하거나, 더 높은 가격에 상품을 재판매 하는 등 다양한 방법으로 악용되고 있습니다.
해당 공격을 예방하기 위해서는 API 접근을 지속적으로 모니터링하고, 의심스러운 사용자에 속도 제한을 걸어 과도한 API 호출을 방지해야 합니다.
API7: Server Side Request Forgery(SSRF)
과거 웹상에서 대규모 보안 사고의 원인이 됐던 SSRF가 API 상에서도 많은 피해 사례를 발생시키며 보안 위험 신규 항목으로 추가됐습니다. SSRF는 공격자가 웹 애플리케이션 서버에 위조된 HTTP요청을 발생시켜 외부 서버로 데이터를 유출하고, 오동작을 유도하는 취약점입니다. 공격자가 서비스 제공자의 내부 시스템에 접근할 수 있는 공격방식이기 때문에 공격의 피해가 매우 커질 수 있습니다.
데이터를 검증 없이 사용할 경우, 애플리케이션이 공격자의 위조된 요청을 수행하게 됩니다. 따라서 입력 값 검증 및 필터링, URL 화이트리스트, 서버 사이드 보안 정책 등을 적용해야 합니다.
API10: Unsafe Consumption of APIs
외부 또는 제3자의 API로부터 수신한 데이터를 적절한 검증 또는 보안 조치 없이 신뢰하고 사용하는 것을 의미합니다. 유명한 기업에서 제공하는 API를 맹신해 유효성 검증과 같은 보안 절차를 소홀히 적용하는 사례 등이 대표적인데요. 이로 인해 내부 데이터의 탈취, 외부 유출, 악성 데이터 유입 등의 피해가 발생할 수 있습니다.
[업데이트 항목]
API2: Broken Authentication
웹/애플리케이션 사용자 인증 메커니즘은 모든 사람에게 오픈 돼 있어 쉽게 악용될 수 있습니다. 공격자가 취약한 암호를 설정한 사용자의 신원을 탈취해 개인의 민감한 데이터에 접근하고, 계정을 잠그는 등의 피해가 발생할 수 있는데요. 일단 계정이 탈취되고 나면, 시스템 자체적으로 공격자와 기존 사용자를 구분하기 어렵기 때문에 시스템의 인증 체계를 꾸준히 모니터링하고, 취약점을 보완하는 등 사전에 방지하는 것이 가장 중요합니다.
API3: Broken Object Property Level Authorization
API가 권한이 없는 사용자에게 리소스의 속성을 보거나 수정할 수 있도록 허용해 발생하는 취약점입니다. 해당 취약점은 2019 OWASP Top10 중 ‘API3: 과도한 데이터 노출’과 ‘API6: 대량 할당’ 이 통합된 개념입니다. 개발자가 API를 설계할 때, 개발의 편의성을 위해 모든 항목을 보고 편집할 수 있도록 개방적인 접근을 허용하게 되는 경우가 많습니다. 이때 취약점이 발견된다면, 공격자가 클라이언트로 전송되는 트래픽을 탈취해 계정 번호, 이메일, 전화번호, 액세스 토큰과 같은 민감한 데이터에 무단으로 접근할 수 있습니다.
해당 공격을 방지하기 위해서는 API에서 반환된 속성이 최종 사용자 인터페이스에서 사용되고 있는지 확인해야 하며, 불필요한 매개 변수를 제거해 과도한 데이터 노출을 지양해야 합니다.
API4: Unrestricted Resource Consumption
이전 취약점은 취약점 자체에 초점을 맞췄지만, 이번 무제한 리소스 소비는 리소스 사용에 대한 적절한 속도 제한 및 기타 제한에 대한 내용이 추가됐습니다. 단일 로컬 컴퓨터나 클라우드 컴퓨팅 리소스를 사용해 여러 요청을 동시에 수행할 수 있는데요. 대부분의 자동화 도구는 높은 트래픽으로 인해 API 서비스 속도에도 영향을 줄 수 있고, CPU와 저장공간의 증가를 필요로 해 운영 비용이 증가하게 됩니다.
메모리, CPU, 최대 데이터 크기, 속도 등의 변수를 제한할 수 있는 솔루션을 활용해 해당 취약점을 방어할 수 있습니다.
API9: Improper Inventory Management
오래된 문서는 취약점의 발견 및 수정을 어렵게 만드는데요. 문서에 적용된 과거 API 버전 또는 손상된 API가 공격자에 의해 악용돼 중요한 데이터가 유출될 수 있습니다. 해당 취약점은 더 이상 사용하지 않는 문서와 자산을 폐기하거나 업데이트해 공격자가 액세스하지 못하도록 방어해야 합니다.
변화하는 API 공격에 대비하려면?
위와 같이 변화한 API 공격에 대해 우리는 어떻게 대비하고 준비해야 할까요? 기존에는 웹 방화벽 ‘WAF(Web Application Firewall, 트래픽을 모니터링, 필터링하고 웹 애플리케이션으로 들어오는 악성 트래픽 또는 앱에서 나가는 무단 데이터를 차단해 일반적인 공격으로부터 웹 애플리케이션을 보호하는 보안 솔루션)’는 SQL 인젝션(클라이언트의 입력값을 조작해 서버 테이터베이스를 공격할 수 있는 공격방식), 크로스 사이트 스크립팅(XSS,Cross-Site Scripting, 공격자가 입력한 악성스크립트가 사용자 측에서 응답하는 취약점) 등의 공격을 모니터링하고 차단하는 임무를 수행했습니다. 이는 정보 유출, 부정 로그인, 웹사이트 위ᆞ변조 등의 공격을 사전 차단하는 상당한 효과가 있었는데요. 하지만 API 공격이 고도화되면서 기존의 방어 방식으로는 효과적인 대응이 불가능해졌습니다. 미국 리서치 그룹인 가트너 역시 “기존 웹 애플리케이션 보안 요구 사항을 충족하기 위해 기존 웹 방화벽이 감당하던 범위보다 포괄적으로 웹 위험 동향 변화를 대비해야 한다”고 했습니다. 게다가 “2022년부터 가장 빈번한 공격인 API 남용으로 기업의 웹 애플리케이션 침해가 발생할 것”이며 “2025년까지 기업 API 50%가 관리되지 않은 상태로 있을 것”이라고 분석했습니다. 따라서 기존 WAF에서 향상된 웹 API 보안, DDoS 방어, API 모니터링 기능 등이 추가된 WAAP 솔루션을 도입하는 것이 중요합니다.
글 ㅣLG CNS 보안/솔루션사업부 RED팀 김성준 선임