API에도 기본적인 보안 구멍 많아…사용자와 개발자 모두 기본 수칙 지켜야
[보안뉴스 문가용 기자] 애플리케이션 프로그래밍 인터페이스(API)는 요즘과 같은 IT 기술 공유 시대에 필수적인 요소로 자리를 잡았다. API를 공유한다는 건 개발자나 웹사이트 소유자들에게 기존 애플리케이션의 소스코드 일부를 제공함으로써, 개발자와 웹사이트 소유자들이 자신들의 필요에 맞게 그 소스코드를 변경하여 사용하게 해 주는 것을 말한다.
[이미지 = utoimage]
그렇기 때문에 현대의 개발자들에게 있어 API만큼 유용한 것도 없고, 그렇기 때문에 실제 여러 애플리케이션과 웹 서비스에서 API가 널리 활용되고 있다. 사람이 몰린다는 건, 해커들도 몰린다는 소리. 이미 사이버 공격자들은 API들을 적극 공략하고 있다. 그중 가장 흔히 사용되는 기법들은 다음과 같다.
1. 코드 주입
사이버 공격자들은 멀쩡한 API를 자신들의 목적에 맞게 오염시키는 방법을 즐겨 사용하는데, 이를 위해 ‘코드 주입’이라는 기법을 활발히 차용하는 편이다. 이것도 모르고 오염된 API를 사용하면, 애플리케이션이나 웹 서비스가 개발자가 아니라 해커들이 원하는 방향으로 기능하게 된다. 즉, 엉뚱한 자들과 민감한 정보를 공유한다거나, 특정한 상황에서 인증 정보가 없이도 로그인이 되도록 한다거나, 추가 멀웨어를 심는 게 ‘코드가 주입된 API’를 통해 가능해진다.
API에 코드가 주입되었는지 아닌지를 확인하려면 여러 가지 ‘수동 점검’을 진행하는 것이 가장 좋다. 특히 요청 확인을 강도 높게 실시하는 것을 권장한다. 다각도로 기능을 점검함으로써 전혀 예상치 못한 반응이 나오는지 아닌지를 살피라는 것이다. 이러면 누군가 중간에서 악성 코드를 주입했더라도 알아챌 수 있게 된다.
2. 리플레이 요청 공격
악성 행위자들이 반복적으로 요청을 전송하는 것을 허락하는 API의 경우 이 공격에 취약하다. 첫 번째 악성 요청이 거부되더라도 공격자는 얼마든지 그 다음 요청을 전송할 수 있게 된다. 그런데 이렇게 여러 요청이 반복해서 오는 것을 막는 API보다 그렇지 않은 API가 더 많다. 해커들이 이 공격 기법을 선호하는 이유가 바로 그것이다.
이는 일종의 브루트포스 공격이라고 볼 수도 있다. 막으려면 HMAC 인증을 활용해 요청 시도 제한 규정을 적용해야 한다. 또한 다중 인증과 생애 주기가 짧은 오오스(OAuth) 접근 토큰을 활용하는 것도 방어에 큰 도움이 된다.
3. 요청 조작 공격
이 공격의 또 다른 이름은 CSRF다. 인증이 된 웹 애플리케이션(API와 같은)을 해커가 활용해 이메일 주소를 변경하거나 은행 계좌로부터 돈을 보내는 등의 결과를 이끌어 내는 공격이다. 꽤나 수년 전부터 인기가 높았으며 수많은 유명 웹사이트들이 이 공격에 피해를 입었다.
공격자들은 주로 서버에서 생성되는 토큰들, 그 중에서도 HTML 코드에 감춰져 있는 토큰들을 활용해 CSRF 공격을 성립시킨다. 이 토큰들은 요청이 만들어질 때마다 요청과 함께 서버로 전송되는 것으로, 이 토큰들을 통해 서버는 해당 요청을 신뢰할 수 있는지 확인할 수 있다. 이런 요청을 조작하는 행위는 코로나로 인해 온라인 거래가 많아진 시점에 더욱 위협적인 공격이 된다.
4. 사용자 인증 파괴
API 개발자들이 항상 인증 시스템에 철저하게 신경을 쓰는 건 아니다. 심지어 잘못 만들거나 구축하는 사례도 흔하다. 이런 경우 API은 대단히 취약해진다. 이렇게 만들어진 API가 해커들의 손에 들어가면, 해커는 인증된 사용자인 것처럼 스스로를 위장시키고 각종 행위를 할 수 있게 된다.
이러한 취약점을 통한 공격을 방어하려면 타임스탬프 요청을 활용하는 것이 도움이 된다. 아무 API 요청에 HTTP 헤더의 형태로 추가할 수 있다. 이렇게까지 해 두면 서버가 현재의 타임스탬프와 요청에 붙어 있는 타임스탬프를 비교할 수 있게 된다. 이 비교값이 타당할 경우(이는 사용자가 정책적으로 결정해야 한다) 인증이 통과된다.
API들은 해커들에게 있어 대단히 맛 좋은 먹잇감이 될 수밖에 없다. 광범위하게 사용되고 있고, 공격 효과가 대단히 높은 편이며, 심지어 간단한 해킹 기술로도 공략이 가능하기 때문이다. 그러므로 API를 만들거나 사용하는 사람 모두가 간단한 보안 수칙을 지켜 API를 보호해야 한다. 지금 API는 공격자들에게 있어 보물창고나 다름이 없다.
글 : 라비 라자로비츠(Lavi Lazarovitz), CyberArk
[국제부 문가용 기자(globoan@boannews.com)]
<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>