Git HTTP 서버, CGI 방식의 근본적인 문제점

by DD
5개월 전
조회수 9

Git HTTP 서버가 CGI 방식을 사용하여 확장성 문제를 겪고 있다는 점을 지적함

CGI 방식은 매 요청마다 새로운 프로세스를 생성하여 Forkbomb 공격에 취약하다는 문제점을 제기함

개발자는 git-http-backend의 대안으로 지속적이고 동시성을 지원하는 HTTP 서버를 제안함

CGI 방식의 근본적인 문제점

CGI(Common Gateway Interface) 방식은 웹 서버가 각 요청마다 새로운 프로세스를 생성하는 방식으로, Fork/Exec 오버헤드가 발생한다. 구체적으로, 환경 변수와 표준 입력을 통해 요청 정보를 전달받아 표준 출력으로 결과를 반환한다. 따라서, 대규모 트래픽 발생 시 서버 자원 고갈로 인한 서비스 거부 공격(DoS)에 취약하며, 서버 확장성을 저해한다.

git-http-backend의 취약점

git-http-backend는 CGI 핸들러를 사용하여 Git repository를 HTTP로 제공하는 방식이다. 반면, 이 방식은 매 클론 요청마다 새로운 프로세스를 생성하여 CPU 사용량 급증을 유발한다. 따라서, 대량의 클론 요청이 발생하는 경우 서버가 과부하되어 가용성 저하를 초래할 수 있으며, 특히 무분별한 클론 시도가 있을 경우 더욱 심각해진다.

확장 가능한 Git 서버 아키텍처 제안

CGI 방식의 한계를 극복하기 위해, 지속적으로 실행되며 동시성을 지원하는 HTTP 서버를 구축해야 한다. 구체적으로, 멀티 스레딩 또는 비동기 I/O를 활용하여 여러 요청을 효율적으로 처리해야 한다. 따라서, Nginx 또는 Node.js와 같은 기술을 사용하여 git-http-backend를 대체하는 방안을 고려해 볼 수 있으며, 서버 성능안정성을 동시에 확보할 수 있다.

Git's HTTP server side design does not scale