brunch

You can make anything
by writing

C.S.Lewis

by Extreme Code Jun 22. 2021

서비스에 대한 악의적 사용을 고민해야 하는 이유

개발자가악의적인 사용자에 대한 고려를 해야 하는 이유

  기존에 이미 존재하는 것과 비슷한 서비스를 개발하지 않고 뭔가 새로운 것을 만든다면 꽤 많은 고민이 필요합니다. 의도한 대로 사용하지 않는 사용자가 꽤 많기 때문인데요, 그 때문에 스타트업 제 1법칙이 "사용자가 원하는 것을 만들어라" 일 것입니다. 물론 이건 말이 쉽지 실제로 달성하기는 어려운 문제이죠..


그런 것과는 별개로 악의적 사용자에 대한 고려 또한 추가로 필요합니다. 개발자는 서비스나 제품을 만들 때 다양한 고민을 하게 됩니다. 근데 너무나 고민할 점이 많기 때문에 "악의적 사용자" 에 대한 고려를 크게 못할 수도 있습니다. 특히나 악의적 사용자는 기술적인 취약점을 파고들기 때문에 쉽게 생각하지 못한 것 까지 공격을 당할 수 있습니다. 특히나 사용자가 많은 서비스를 하게 되면 이런 "악의적 사용자"를 만날 확률이 높습니다. 일반적으로 커머스 업계에서 이야기하는 블랙 컨슈머와는 다른 개념이고 악의적인 해커라고도 볼 수 있을 것 같습니다. 


물론, 반대로 악의적인 의도를 갖고 있지 않더라도 실제 기획자/개발자들이 의도한 것과 다르게 사용을 해서 결과적으로 서비스에 장애나 손해를 입히는 사용자들도 있습니다. 그러므로 개발자는 이러한 것들을 고려해야 할 필요가 있습니다.




의도하지 않은 사용

  이것은 정보 유출이나 서버가 뚫리는 해킹과는 좀 다른 것입니다. 악의적 해킹 등에 대해서는 표준적인 보안 가이드가 있기 때문에 그런 걸 잘 지켜서 코딩하고 아키텍쳐도 그러한 고려를 하면 잘 발생하지는 않습니다. 특히나 요즘엔 다양한 라이브러리/프레임워크가 이러한 부분을 고려하는 경우가 많기 때문에 일반적인 서비스의 경우 기본만 잘 지킨다면 이로 인해 문제가 발생할 확률은 크지 않습니다.


하지만, 기술적/구조적 문제점이 있다면 공격을 받는 것과 비슷한 상황이 벌어질 수 있습니다. 예를 들어, 특정 서비스에서 사용자가 자신의 파일들을 업로드하고 이걸 볼 수 있도록 하였는데 여기에 추가적인 제한을 걸지 않아서 해당 사용자가 이미지나 파일을 매우 큰 커뮤니티에 공개하게 된다면, 해당 데이터 노출을 모두 우리가 부담해야 합니다. 즉, 우리의 서버가 파일 호스팅 처럼 쓰이는 것이고 만일 클라우드 서비스 기반으로 운영을 하고 있는데 그러한 일이 생겨서 갑자기 파일 요청이 급격히 늘어나면 요금 폭탄을 맞을 수 있습니다. 자체 서버라면 감당을 못하고 장애가 날 수 있구요.


이건 사용자가 의도해서 악의적으로 사용한 것은 아닌데 결과적으로 공격을 당한 것 처럼 되어버린 것입니다. 그렇기 때문에 이렇게 사용자가 원래는 의도하지 않았더라도 발생할 수 있는 시나리오에 대해서 대비를 해야 할 필요가 있습니다.



악의적인 사용

  위의 예시와 다르게 사용자가 처음부터 악의적인 목적을 가지고 있을 수도 있습니다. 몇 개월 전에 발행된 Github이 지속적으로 당한 악의적 공격에 대한 기사입니다. Github은 평소에도 많은 공격을 받지만 이것은 일반적인 공격과는 다르게 사용자의 악의적 의도를 많이 고려하지 못하고 기능을 추가하여 발생한 문제이기 때문에 생각할 거리를 던져줍니다.


Github 의 사례

  Github에는 github action 이라는 기능이 있습니다. 제 기억으로는 2019년 쯤에 추가되었던 것 같습니다. 이 기능은 repository 설정에서 활성화 가능하고, 특정 PR마다, 머지마다 등 다양한 상황에서 빌드나 테스트가 trigger 되도록 하는 기능입니다. Self-hosted 라고 직접 자신의 서버를 활용할 수도 있지만 많이 쓰이진 않고 Github server에서 돌도록 할 수도 있습니다. 즉, 빌드나 테스트 등을 github server를 활용해서 무료로 할 수 있기 때문에 굉장히 유용한 기능입니다.


문제는 이런 기능을 블록체인 기반 크립토 마이닝에 사용하는 유저들이 있었다는 점입니다. 2020년 가을부터 다양한 오픈소스 레포지터리를 fork하고 악의적 PR등을 올려서 github action을 활성화 시키고 여기에서 크립토 마이닝 코드가 돌아가도록 한 것입니다. 물론 라이브러리 등에 영향은 없겠지만, github server 가 이런 데 쓰이면 다른 개발자들이 많은 피해를 입겠죠. Github 입장에서는 많은 금전적 손해도 볼 것입니다.


github action이 일정 사용 수준까지는 무료이며, 이게 어찌보면 공짜 연산 서버이기 때문에 CI 용도 외에도 다양한 용도로 쓸 수 있을 거 같아서 저도 비슷한 생각을 해본적은 있지만, 이런걸 진짜로 실행했을 줄은 몰랐습니다. 정말 중국은 여러 의미로 대단한거 같네요.


이러한 것을 보면 인간의 창의성은 정말 무한한 것 같네요. 그런 창의성 등을 좋은 데 쓰면 참 좋을 텐데 말이죠. 원래 나쁜 짓이나 hacky 한 것일수록 재밌고 머리가 잘 돌아가는 경우가 있긴 하지만, 이렇게 악의적으로 이용하면 많은 선량한 개발자들만 피해를 보게 됩니다.




정리하면

  근데 사실 이런 github같은 케이스는 early stage startup 이 크게 신경쓸 필요가 없을 확률이 높습니다. 고객의 관심을 끄는 것 자체부터가 힘들기 때문이죠. 하지만 이러한 상황은 항상 염두에 둘 필요가 있습니다.


그리고 서비스가 어느정도 사용자가 있는 규모로 성장을 하였다면 그때부터는 일반적인 보안과 관련된 것 뿐 아니라 이런 악의적 공격에 대한 고민이 꽤 중요하고, 다양한 면에서 의도적/비의도적인 악의적 이용에 대한 고려를 할 필요가 있을 것입니다.


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari