젠킨스(Jenkins)란 모든 언어의 조합과 소스 코드 레포지토리에 대한 지속적 통합(Continuous integration, CI)과 지속적 배포 환경을 구축하기 위한 오픈 소스 소프트웨어이다. 젠킨스로 빌드, 테스트, 배포 프로세스를 자동화하여 소프트웨어 품질과 개발 생산성을 높일 수 있다. 웹 기반의 콘솔로 다양한 인증 기반과 결합이 가능하며 권한 관리 기능을 통해 쉽게 빌드, 배포 환경을 구축할 수 있다. 또한 1,800 가지가 넘는 플러그인을 사용하여 소프트웨어 자동화 개발을 지원한다. 이 같은 편리함으로 세계에 1 백만 명이 넘는 사용자를 보유하고 있다. 빌드, 배포 이외에도 스케쥴링을 이용한 배치 작업에 활용되거나 플러그인을 직접 개발하여 기능을 확장할 수 있어 개발자들이 애용하는 시스템이다.
이용에 큰 비용이 들지 않는다는 오픈 소스 서버의 장점이 있지만, 반대로 누구라도 접근이 쉽다는 위험이 존재한다. 특히, 다수의 개발자들이 하나의 프로그램을 개발 시 버전 충돌 방지를 위해 각자 작업한 내용을 공유 저장소에 빈번히 업로드 한다. 그 때 무방비로 Jenkins 취약점이 노출되어 있으면 해커들의 공격 대상이 되기 쉽다. 또한, 일괄 배포 및 처리를 위해 젠킨스 오픈 소스 서버에 수 십, 수 백 대 서버를 연결하여 사용한다. 따라서, 관리되지 않은 하나의 오픈 소스 서버로 인해 수 백 대의 서버가 모조리 해커 손에 통제되는 대규모 보안사고로 이어질 수 있다.
7월 3일 보안 블로그 Security Affairs에서 공개된 수십 개의 젠킨스 플러그인 제로데이 취약점은 이 같은 위험성을 그대로 반증하고 있다.
Criminal IP에서는 다양한 필터를 사용해 젠킨스 서버를 사용하는 IP 주소들을 조회할 수 있다.
파비콘 검색을 활용한 Jenkins 서버 IP 주소 조회
Criminal IP(https://www.criminalip.io) 의 favicon 필터는 웹 사이트의 파비콘 해시를 검색하여 IP 주소를 조회할 수 있는 기능이다. favicon이란 favorites + icon의 합성어로, 웹 사이트를 대표하는 아이콘이다. 거의 모든 기업 및 기관 웹사이트와 사용자에게 제공되는 서비스의 웹 페이지에는 대부분 이러한 파비콘이 적용되어 있다. Criminal IP는 파비콘 해시 알고리즘 16진수를 사용하고 있어, 위 파비콘 해시 계산기로 확인된 10진수 값을 16진수로 변환 후 검색하면 된다. 이를 바탕으로 오픈 소스 서버 Jenkins의 파비콘 해시를 검색해 보았더니 총 2,663개의 Jenkins 오픈 소스 서버를 사용하고 있는 IP 주소가 확인된다. favicon 필터 사용 팁은 글 하단에 참조된 favicon filter를 활용하여 위조된 피싱사이트를 탐지하는 Search Tip 을 참고할 수 있다.

Criminal IP의 Asset Search에서 favicon: 4dce888을 검색한 결과
조회된 Jenkins 오픈 소스 서버 검색 결과 중 한 웹사이트로 접속하게 되면 실제 Jenkins 서버 페이지로 접속된다.

별도의 검증 없이 조회할 수 있는 노출된 Jenkins 취약점 서버 페이지
타이틀 검색을 통한 공개된 Jenkins 취약점 탐지
또 다른 방법으로, title 필터 검색을 통해 Jenkins 오픈 소스 서버를 사용하고 있는 IP 주소를 조회할 수 있다. Criminal IP(https://www.criminalip.io)의 title 필터는 웹페이지의 Meta tag 중 타이틀에 키워드가 포함된 IP 주소를 결과 값으로 보여준다. title 필터의 다른 응용 사례는 CIP Blog Search Tip의 title 필터를 활용한 deface 사이트 탐지 방법 글을 참고할 수 있다.
Criminal IP Asset Search (https://www.criminalip.io/ko/asset) 에서 “title: x-jenkins”를 검색하면 총 6개의 Jenkins 오픈 소스 서버를 사용하고 있는 IP 주소가 확인된다.

Criminal IP의 Asset Search에서 title: x-jenkins를 검색한 결과
이 결과 중에는 아무런 인증 수단 없이 바로 개발 소스 코드를 볼 수 있는 페이지도 포함되어 있다.

아무런 인증 수단 없이 외부에 공개되어 있는 개발자 소스 코드 저장 서버
해당 페이지에서는 소프트웨어 빌드 상태, 대기 목록 실행 상태를 아무런 제재 없이 조회할 수 있었다.

별도의 검증 없이 조회할 수 있는 소프트웨어 빌드 상태, 대기 목록 상태
또한, 이미 배포가 성공한 결과물 역시 아무런 제재 없이 볼 수 있었다.

별도의 검증 없이 조회할 수 있는 Jenkins 취약점 서버의 소프트웨어 배포 상태
이는 심각한 공격 표면에 노출되어 있는 Jenkins 취약점 으로, 정보 유출의 근원지가 될 수 있다.
이 외에도, Criminal IP(https://www.criminalip.io)에서는 웹 페이지 상단 title과 favicon이 없는 상태의 Jenkins 오픈 소스 서버를 사용하는 IP 주소들을 조회해볼 수 있다. 해당 검색 쿼리로 검색할 시, 총 4,196개의 Jenkins 오픈 소스 서버를 사용하고 있는 IP 주소를 조회할 수 있다.

Criminal IP Asset Search에서 X_Hudson X_Jenkins 200 쿼리로 검색한 결과
위 검색결과에서도, 별도의 검증 없이 조회 가능한 상태의 Jenkins 오픈 소스 서버가 상당수 발견 되었다.
이처럼 누구나 쉽게 접근 가능한 오픈 소스 서버의 경우 서버 관리자의 각별한 주의와 공격 표면에 대한 주기적인 보안 점검이 필요하다.
데이터 출처 : Criminal IP (https://www.criminalip.io)
관련 글 :
댓글 남기기