-
-
API 보안 전략 - 일찍 시작하고 끝까지 지키는 안전한 소프트웨어 개발을 위한 필수 방어 기술
콜린 도모니 지음, 류광 옮김 / 정보문화사 / 2024년 8월
평점 :
API는 application programming interface의 약자입니다. p6을 보면 이런 말이 나옵니다. "API는 공격자들에게도 점점 더 인기를 얻고 있다." 이 말은, 대략 15년 전부터, 라이브러리로 바로 진입하지 않고 이처럼 중간단계를 두어 개발상의 여러 편의를 도모하는 API 시스템이, 그 누구보다 개발자들에게 큰 사랑을 받았더랬습니다. 다시 말하지만 API라는 게, 마치 전에 없던 새 시대를 연 듯(일부 사실이지만) 폭발적 호응을 얻었던 게 대략 15년 전이라는 뜻이죠. 그러나 저 구절에서도 보듯, 섬뜩하게도 API는 공격자, 즉 해커들에게도 쌍수를 들어 환영하는 타겟이 되어가는 게 또한 현실입니다.
이유가 무엇이겠습니까? 라이브러리도 물론 핵심 파일들의 묶음입니다. 그러나 API는 이보다 더 높은 단계에서 부품들을 미리 엮어두어, 다소의 변형만을 가한 채 사용하기 때문에, 이제 어떤 프로그램이라 해도 대충의 얼개가 닮아가는 셈입니다. 개발자의 개성이 희석되었으니 도둑들이 편해하는 것도 당연하지 않겠습니까? p7을 보면 "기존 보안 도구들은 API의 보안에 적합하지 않다"고 하는데, 그 예로 웹 애플리케이션 방화벽 같은 걸 들고 있습니다. 한때 이것만 갖춰 놓으면 든든하다고들 여겼던 강력한 도구들이 뒷방 노인 취급 받는 걸 보면 새삼 세월의 무상함을 느낍니다.
더 심각한 지적은 뒤에 나옵니다. "개발자가 API의 보안을 잘 모를 때가 많다." 책에서는 다음과 같은 말도 합니다. "개발자란, 어려운 문제에 도전하길 좋아하는 창의적인 문제 해결사이다." 우리도 흔히 "행복회로를 돌린다"는 말을 냉소적으로 쓰곤 하지만, 미국 개발자들 사이에서도 happy path라는 표현이 있나 봅니다. 이렇게 되는 데에는 개발자가, 한번 만들어 놓은 코드 변경을 일반적으로 꺼리는 데에도 원인이 있는데, 그 이유야 시스템이 깨질까봐입니다. 그런데 이런 무사안일주의에 젖어서는, 예리하고 의욕 가득한 침투자들의 끊임없는 시도를 막을 길이 없고, 그들의 눈에 어느 정도 빤하게 보이는 API의 허점을 보완, 엄폐하기가 난망합니다. 그래서 책에서는 크게 API 보안 방향성을, 속도제한, 암복호화, 해시-HMAC-서명, 전송보안, 인코딩 등을 통해 잡습니다. 이상의 주제들이 이 책의 핵심입니다.
책에서는 p46 이하에서 아마존의 예를 드는데, AWS는 HTTP 상에서 키 기반 HMAC 맞춤형 인증 메커니즘을 쓴다고 합니다. 앞서가는 기업은 이처럼 보안에도 철저하여, 오히려 업계 보안 수준까지 자신들이 선도합니다(외주 업체에 의존하는 게 아니라 거꾸로 그 수준을 능가함). 다들 알듯 아마존은 회원에게 자주 쓰는 카드번호도 저장해 놓으라고 하는데, 어디 여간 강심장 아니고서야 있던 것도 지우지, 그걸 얻다가 저장해 놓겠습니까? 그래도 여태 한 번도 아마존에서 그게 누구한테 털렸다는 말을 들어 본 적이 없습니다. 반면 국내 기업을 보십시오. 매번 고객 개인 정보 유출에, 심지어 자발적으로 타국 기업에다 이전(?)까지 해 줍니다. 이러니 광고업체가 망할 수밖에 없죠. 세계 어느 나라보다도 마이너리티 리포트 세계관이 일찍 실현될 태세입니다.
p91에 보면 국제배송업체가 PII 유출에 대한 심각한 위험을 안고 있음을 간파하고, 일단의 보안 연구자들이 해당 업체에다가 그 사실을 통보해 준 사례가 나옵니다. 이 책의 최고 장점은 이처럼 구체적인 사례를 들어 보안 이슈를 설명해 준다는 데에 있습니다. 여튼 취약점이 생기게 된 주된 원인으로 거론된 건, 속도제한 부재(많은 관리자들이 간과합니다. 저 뒤 p193도 함께 참조할 것), 과도한 정보 노출 등이었는데, 그 외에도 책에서는 "클라리언트나 프런트엔드가 저런 과잉정보를 적절히 걸러서 표시하겠거니" 기대를 가지지 말라고도 조언합니다. 위험에 있어서의 지형(landscape)를 개발자들은 거의 언제나 무시한다며 현실을 개탄합니다.
보안을 강화하는 가장 좋은 방법은 내가 직접 도둑이 되어 누군가를 공략해 보는 것입니다. p142 이하에, 좋은 예제 하나를 마련하여 이를 직접 공격해 보라고 자세한 가르침이 나옵니다. (대상이 되는) API와 효과적으로 상호작용하는 게 가장 중요하다고 책에서는 말합니다. 이와 관련, 좋은 자료가 많이 모인 곳으로는 깃허브닷컴의 awesome-api-security 같은 곳을 추천해 주네요. p161에서, 만약 열린 포트들을 찾았다면, 이후 동적 스캐너를 사용하여 호스트의 이벤트를 자세히 들여다보는 법을 가르칩니다. 그 외에도 제7장에서 부채널(side channel) 공격이라든가, p203의 경로 순회 등도 저 개인적으로는 매우 유용한 정보였습니다.
예사로 생각하고 책을 열었다면 뜻밖에 좋은 정보가 많아서, 또 설명이 매우 구조적이고 체계적이라서 놀란 독자들이 많았겠습니다. 아직은, 깊은 인사이트를 얻으려면 역시 외국 저자 책을 봐야겠다는 점 실감하게 된 독서였습니다.
*출판사에서 제공한 도서를 읽고 솔직하게, 주관적으로 작성한 후기입니다.