블로그

API 작동 방식 및 잠재적 보안 문제인 이유

프랭크 키이-마누 썸네일
프랭크 카이 마누
2022년 10월 25일 게시

우리 중 많은 사람 이 애플리케이션 프로그래밍 인터페이스(API)라는 용어를 들어봤을지 모르지만 , 애플리케이션 개발자나 기술 분야의 사람이 아니라면 API가 실제로 무엇인지(또는 무엇을 하는지) 확실히 알지 못할 수도 있습니다. 의미는 분명히 직관적으로 이해되지 않습니다.

API는 한 애플리케이션이 다른 애플리케이션의 정보와 기능에 액세스할 수 있는 채널을 제공합니다. 그러나 추가적인 맥락이 필요할 수 있으므로 기본적인 비유로 시작해 보겠습니다.

API 설명

예를 들어 교통사고를 당해서 차를 수리해야 한다고 가정해 보겠습니다. 평판이 좋은 수리점을 찾아서 서비스 담당자와 협력하여 수행해야 할 작업에 대해 논의하고, 질문에 대한 답변을 얻고, 견적을 받고, 약속을 예약합니다.

정비사를 고용하고, 부품을 주문하고, 필요한 작업장 도구와 장비를 제공하고, 진단 테스트를 실시하는 등의 일은 귀하가 할 일이 아닙니다. 앞유리를 교체해야 하거나, 차체를 다시 칠해야 하거나, 바퀴를 다시 정렬해야 하는 경우 서비스 담당자가 이러한 외부 서비스도 수행하도록 조치합니다.

서비스 담당자는 고객과 정비소 사이의 인터페이스라고 생각하면 됩니다. 즉, 고객의 서비스 요청을 처리하는 메신저이자 통역가로, 동시에 고객은 자동차 수리에 관련된 모든 내부 세부 사항과 복잡한 사항을 알 필요가 없습니다.

서비스 담당자는 귀하의 요청을 받고 이를 정확하게 통역하고 번역하고, 귀하의 요청을 이행하는 데 필요한 모든 서비스를 준비하고, 최종적으로 작동 가능한 상태로 귀하의 차량을 반환하여 귀하를 대신하여 일합니다.

이 시나리오에서 주의해야 할 중요한 용어와 개념은 메신저와 통역사/번역가로서의 인터페이스, 요청-응답 프로세스, 그리고 요청자인 당신을 수리가 어떻게 이루어지는지에 대한 세부 정보로부터 보호하는 개념입니다. 이러한 개념은 모두 API가 작동하는 방식의 핵심입니다.

이제 이러한 개념 중 일부를 매일 사용하는 일반적인 애플리케이션, 예를 들어 휴대폰의 일반적인 여행 앱 에 적용해 보겠습니다. 이 앱은 항공편, 호텔, 크루즈, 지상 교통, 투어 등에 대한 최신 정보를 제공할 가능성이 높습니다. 이 앱을 만든 회사가 모든 정보를 자체 데이터베이스에 저장해 두거나 모든 전문 지식을 사내에 두고 있을 가능성은 낮습니다. 대신 이 데이터는 호텔, 항공사, 크루즈 운항사 등의 파트너 공급업체가 제공하는 API를 사용하는 앱을 통해 제공됩니다. API는 수리점의 서비스 담당자와 마찬가지로 요청하는 고객(이 경우 여행 앱)에게 필요한 정보를 제공하고 불필요한 복잡성을 최소화합니다.

현대 앱의 빌딩 블록

오늘날 API는 현대 애플리케이션의 기본이 되었습니다. 이 시리즈의 이전 블로그에서 설명한 대로, 최신 앱의 빌드 및 배포 방식 도 컨테이너가 최신 애플리케이션에 필수적입니다. 컨테이너는 애플리케이션을 여러 개의 개별 구성 요소로 나누어 개발 및 향후 업데이트를 더 쉽게 관리할 수 있도록 해줍니다.

API는 컨테이너 클러스터와 이들이 공유하는 애플리케이션 서비스 간의 통신 채널입니다. 또한, 외부 서버 및 데이터베이스와의 데이터 교환을 용이하게 합니다. (아래 그림 1 참조)

단점은 API가 외부인에게 데이터를 노출할 수 있다는 것입니다. 이는 조직의 API를 공격자에게 매우 매력적으로 만듭니다. 이는 데이터에 액세스할 수 있을 뿐만 아니라 조직 인프라 내의 다른 중요 시스템에 대한 잠재적 진입점으로서도 유용합니다. 적절한 예방 조치와 보안 관리가 이루어지지 않으면 API는 조직에 심각한 위험을 초래할 수 있습니다.

그림 1: 컨테이너 클러스터와 그들이 공유하는 애플리케이션 서비스는 API를 통해 통신합니다.

API는 공격 표면을 확장합니다

API가 현대 애플리케이션 개발의 기반이 되면서 공격 범위도 계속 확대되고 있습니다. 안타깝게도 많은 기업이 앱에 연결하는 API의 적절한 인벤토리를 유지하는 데 뒤처져 있습니다. 또한 새로운 취약점을 방지하기 위해 API를 정기적으로 유지관리하고 업데이트해야 합니다.

공격자는 API 취약점을 악용하여 네트워크에 액세스하고 개인 식별 정보(PII)나 지적 재산(IP)을 비롯한 조직의 가장 민감한 데이터를 잠재적으로 손상시킬 수 있습니다. 이는 회사의 브랜드와 평판을 손상시키고, 매출 손실을 초래하며, 상당한 벌금을 부과받을 수 있습니다.

API는 다음을 포함하여 웹 및 모바일 애플리케이션을 타겟으로 하는 것과 동일한 종류의 많은 공격 에 취약합니다.

  • 일반 사용자가 사용자 이름과 비밀번호를 입력하는 API 프로그램에 악성 코드를 삽입하는 것을 주입이라고 합니다.
  • API가 처리할 수 있는 것보다 많은 트래픽을 API에 범람시켜, 통신하는 앱을 의도한 사용자가 사용할 수 없게 만드는 것을 일반적으로 분산 서비스 거부(DDoS) 공격이라고 합니다.
  • 도난한 자격 증명을 사용하여 API에 대한 무단 액세스를 시도하는 행위(일반적으로 자격 증명 스터핑이라고 함)

잠재적 위험 이해

API는 최신 애플리케이션을 구축하는 데 선호되는 방법이 되었습니다. 외부 소스에서 애플리케이션으로 정보를 가져오는 개념은 새로운 것이 아니지만 끊임없이 진화하는 앱 개발 방법과 혁신에 대한 압력으로 인해 조직은 API를 적절하게 보호하기 전에 공개적으로 사용할 수 있는 잠재적 위험을 아직 파악하지 못했을 수 있습니다.

좋은 소식은 API를 보호하는 데 큰 미스터리는 없다는 것입니다. 대부분의 조직에서는 API를 대상으로 하는 주입, DDoS 위협, 자격 증명 채우기 및 기타 유형의 공격과 같은 잘 알려진 공격을 방지하기 위한 대책을 이미 마련해 놓았 습니다.

아래 비디오를 시청하고 F5가 조직의 디지털 경험을 뒷받침하는 API를 보호하는 데 어떻게 도움을 주는지 알아보세요.