안녕하세요, 여행자 K입니다.
오늘은 OWASP API Security Top 10 2023의 여섯 번째 항목인 'API06:2023 Unrestricted Access to Sensitive Business Flows(민감한 비즈니스 흐름에 대한 무제한 접근)'에 대해 살펴보겠습니다. 이 취약점은 단순히 데이터 유출을 넘어, 비즈니스 로직 자체를 악용하여 실제 재정적 손실이나 서비스 방해를 일으킬 수 있는 매우 위험한 문제입니다. 어떻게 악용될 수 있는지, 그리고 우리의 비즈니스와 API를 보호하기 위한 방안은 무엇인지 알아보겠습니다.
API06:2023 Unrestricted Access to Sensitive Business Flows(민감한 비즈니스 흐름에 대한 제한 없는 접근)이란?
'Unrestricted Access to Sensitive Business Flows'는 API가 노출하는 비즈니스 흐름(Business Flow)에 대해 적절한 접근 제한이 없어 발생하는 취약점을 의미합니다. 즉, API가 구매, 예약, 계정 생성 등 민감한 비즈니스 로직을 처리하는 과정에서, 공격자가 이를 과도하게 사용하거나 자동화된 방식으로 악용하여 비즈니스에 해를 끼치는 것을 말합니다.
OWASP에 따르면, 이 취약점은 주로 API가 지원하는 비즈니스 모델을 이해하고, 민감한 비즈니스 흐름을 찾아내어 접근을 자동화함으로써 비즈니스에 피해를 주는 방식으로 악용됩니다 . 이 공격은 기술적인 영향보다는 비즈니스 자체에 해를 입히는 경향이 있으며, 예를 들어 합법적인 사용자의 제품 구매를 방해하거나 게임 내 경제 시스템의 인플레이션을 유발할 수 있습니다 . 개발자들이 API의 전반적인 비즈니스 요구사항을 완전히 지원하기 위한 총체적인 시각이 부족할 때 이 문제가 더욱 심화되기도 합니다 .
취약한 API의 특징
API 엔드포인트가 민감한 비즈니스 흐름을 노출하면서도 이에 대한 접근을 적절하게 제한하지 않을 때 취약하다고 볼 수 있습니다 . 민감한 비즈니스 흐름의 일반적인 예시는 다음과 같습니다:
- 상품 구매 흐름: 공격자가 수요가 높은 상품의 재고를 모두 구매하여 비싸게 재판매할 수 있습니다(암표 매매, 스캘핑).
- 댓글/게시물 생성 흐름: 공격자가 시스템에 스팸성 게시물을 대량으로 작성할 수 있습니다.
- 예약 흐름: 공격자가 사용 가능한 모든 시간대를 예약하여 다른 합법적인 사용자의 서비스 이용을 막을 수 있습니다.
실제 공격 시나리오 예시
어떤 식으로 공격이 이루어지는지 구체적인 시나리오를 통해 알아보겠습니다.
- 시나리오 #1 (스캘핑): 한 기술 회사가 추수감사절에 한정판 게임 콘솔을 출시한다고 발표했습니다. 공격자는 자동으로 제품을 구매하고 거래를 완료하는 코드를 작성합니다. 출시 당일, 공격자는 다양한 IP 주소와 위치에서 이 코드를 실행하여, 적절한 보호 장치가 없는 API를 통해 대다수의 재고를 선점합니다. 이후 공격자는 이 제품을 훨씬 비싼 가격에 재판매합니다.
- 시나리오 #2 (서비스 방해 후 할인 구매): 항공사에서 취소 수수료가 없는 온라인 티켓 구매 서비스를 제공합니다. 악의적인 사용자가 원하는 항공편 좌석의 90%를 예약합니다. 항공편 출발 며칠 전, 이 사용자는 모든 티켓을 한꺼번에 취소하여 항공사가 좌석을 채우기 위해 티켓 가격을 할인하도록 만듭니다. 그 후 이 사용자는 원래 가격보다 훨씬 저렴하게 한 장의 티켓을 구매합니다.
- 시나리오 #3 (부정 리퍼럴 프로그램 악용): 차량 공유 앱이 친구를 초대하면 크레딧을 제공하는 추천 프로그램을 운영합니다. 이 크레딧은 현금처럼 차량 이용에 사용될 수 있습니다. 공격자는 자동화된 스크립트를 사용하여 가짜 계정을 대량으로 생성하고, 각 신규 가입마다 공격자의 지갑에 크레딧을 추가합니다. 공격자는 이 크레딧으로 무료로 차량을 이용하거나, 과도한 크레딧이 충전된 계정을 판매할 수 있습니다.
대응 방안
이러한 비즈니스 로직 악용을 막기 위해서는 다음과 같은 다층적인 접근 방식이 필요합니다.
- 민감한 비즈니스 흐름 식별: 과도하게 사용될 경우 비즈니스에 해를 끼칠 수 있는 모든 비즈니스 흐름을 명확하게 식별하고 문서화해야 합니다.
- 적절한 보호 메커니즘 선택 및 적용: 식별된 비즈니스 위험을 완화하기 위한 보호 메커니즘을 선택하고 구현해야 합니다. 자동화된 위협을 늦추기 위한 방법들은 다음과 같습니다.
- 장치 지문(Device Fingerprinting): 헤드리스 브라우저와 같은 예상치 못한 클라이언트 장치의 서비스를 거부하여 공격자의 비용을 증가시킵니다.
- 인간 탐지 (Human Detection): CAPTCHA 또는 타이핑 패턴과 같은 고급 생체 인식 솔루션을 사용하여 사람이 아닌 접근을 감지합니다.
- 비인간적 패턴 분석 (Non-human Patterns Analysis): 사용자의 흐름을 분석하여 '장바구니에 추가' 후 '구매 완료'까지 1초 미만으로 걸리는 등, 비인간적인 패턴을 감지합니다.
- IP 주소 차단: Tor 출구 노드 및 잘 알려진 프록시의 IP 주소를 차단하는 것을 고려합니다.
- 기계 소비 API 접근 제한: 개발자 및 B2B API와 같이 기계가 직접 소비하는 API는 종종 필요한 모든 보호 메커니즘을 구현하지 않아 공격의 쉬운 표적이 될 수 있으므로, 접근을 보안하고 제한해야 합니다.
API06:2023 Unrestricted Access to Sensitive Business Flows는 기술적 취약점만이 아닌, 비즈니스 관점에서 심각한 위협이 될 수 있는 항목입니다. 서비스 기획 단계에서부터 비즈니스 로직의 잠재적인 악용 가능성을 고려하고, 이에 대한 방어 전략을 마련하는 것이 무엇보다 중요합니다.
읽어주셔서 감사합니다.