Covenant

1. 도입

머쓱 404; 이벤트가 어제(3/6)자로 종료되었습니다. 보안관점에서 머쓱 이벤트를 바라보려고 합니다.

2. 프로그래머스, VS Code를 만나다

프로그래머스 머쓱 이벤트!

  프로그래머스에서 기업 과제 테스트작업을 VS Code Cloud 환경에서 작업을 할 수 있습니다. 이를 홍보하는 차원으로 404 Page Not Found를 프로그래머스 VS Code 환경에서 작업하는 이벤트를 했습니다.


동네사람들 고오급 키보드 준데요~

클라우드 IDE 사업을 하는 MS

  프로그래머스의 웹페이지에서 VS CODE를 돌린다는 것은 놀라운 사실은 아닙니다. 프로그래머스가 Cloud9, 구름IDE 처럼 자사 클라우드 IDE를 개발한 것이 아니라 MS의 Visual Studio Online을 사용하는 것이기 때문입니다.
  이제 기업들이 코딩테스트 뿐 아니라 과제 테스트를 진행합니다.코딩테스트 환경을 꽉 잡고 있는 프로그래머스답게 이러한 변화를 잘 잡아서 VSCODE 환경을 제공하는 것은 코딩테스트 시장에서 입지를 견고하겠다는 의지로 보입니다.
  이전까지 프로그래머스에서 과제 제출 기능은 있었습니다. 2019년 웹 개발자 온라인 잡페어에 참가해서 Django로 과제 실무테스트를 봤습니다. 다만 Github의 private로 이용해야하며 프로그래머스에 Github 주소를 쓰고 이를 빌드하는데 시간도 5~10분 걸리고 빌드에 성공해도 10분 이후에는 다시 빌드해야합니다. 여간 불편하게 아닙니다..

VSCODE를 프로그래머스에서 그대로 볼 수 있습니다.

  VSCODE를 띄운것과 똑같습니다. 심지어 확장 프로그램도 그대로 설치됩니다.



3. 그래서 어떤점이 문제?

  터미널창에 리눅스 명령어 필터를 걸지 않았다는 것입니다. 이것만으로 문제가 없을 수 있습니다만, VS Code를 사용하는 개인에게 사용하는 CPU나 인터넷 자원에 제한을 두지 않았다는 점입니다.


터미널 창에서 텐서플로우를 설치 할 수 있습니다.

전체 용량을 보아하니 다른 사용자의 용량과 합쳐진 것 같습니다.

  wget을 이용하면 파일을 다운로드 받을 수 있습니다. https://speed.hetzner.de/ 에서 100MB, 1GB, 10GB 바이너리 파일을 받을 수 있습니다.

wget https://speed.hetzner.de/10GB.bin

  사실 실험해봤는데 Command 창 50개에 위와 같은 명령어를 실행할 수 있었으며 초당 2.5~3.5Mbps 속도로 다운로드가 되었습니다. 50개의 터미널에서 실행되기에 평균 150Mbps 대역폭을 사용하는 것입니다. 이게 되는 걸 보고 식겁해서 빠르게 종료했습니다.

  CPU가 한 인스턴스에서 어느정도 구동이 가능한지 확인하기 위해서 Biggest Integer Calculation 기법을 사용했습니다. 구름 IDE는 CPU 이용률 100%에서 고정되어 계산이 이루어지는 반면에 VS Code는 한 3초 동작하고 먹통이 되었습니다. CPU가 어떻게 그리고 얼마나 하나의 인스턴스에 자원을 할당하는지는 알 수 없었습니다.

  이정도가 가능하다면 눈치 빠르신 분들은 리눅스 인스턴스로 할 수 있는 상상 가능한 모든 나쁜짓이 가능하다는 것을 아실 것입니다..


4. 어떻게 개선해야할까?

  • 1. 각 인스턴스마다 사용할 수 있는 자원 제한.
    • 구름IDE는 하나의 인스턴스에 사용할 수 있는 자원의 제한을 걸어 놓습니다.
  • 2. 테스트에 맞는 명령어만 터미널창에 지원.
    • 과제 테스트 진행에 필요한 명령어만 화이트리스트로 허용하는 하면 됩니다. Repl.it 처럼요...
  • 3. 비정상 사용자에 대한 모니터링 및 자동 차단 서비스
    • 과제 테스트에 임하는 사용자 중에서 과도한 자원을 사용하는 경우 자동으로 차단하거나 관리자가 이를 식별할 수 있는 알림 서비스가 필요해 보입니다.

마치며. 프로그래머스에게 알려주었습니다.

  해피해킹을 노리며 사심가득하게 피드백 제출하기에 제출했습니다. 지금까지 프로그래머스가 코딩테스트 환경으로 좋은 서비스를 제공해 왔고, 앞으로도 개선하여 좋은 서비스를 해 주기를 바랍니다.







광고꽝고~