상세 컨텐츠

본문 제목

치명적인 Jenkins 서버 취약점, 민감 정보 노출로 이어질 수 있어

국내외 보안동향

by 알약4 2020. 8. 19. 09:00

본문

Critical Jenkins Server Vulnerability Could Leak Sensitive Information

 

인기있는 오픈 소스 자동화 서버 소프트웨어인 Jenkins가 지난 월요일 메모리 충돌 및 기밀 정보 유출로 이어질 수 있는 Jetty 웹 서버에 존재하는 치명적인 취약점을 알리는 권고를 발표했습니다.

 

CVE-2019-17638로 등록된 이 취약점은 CVSS 점수 9.4를 기록했으며 소프트웨어 프레임워크에 사용하는 Java HTTP 서버 및 웹 콘테이너를 제공하는 전 기능 도구인 Eclipse Jetty 버전 9.4.27.v20200227 ~ 9.4.29.v20200521에 영향을 미칩니다.

 

“Jenkinsjava -jar jenkins.war를 통해 시작될 때 HTTPservlet 서버로 동작하기 위해 Jetty를 둘러싼 래퍼인 Winstone-Jetty와 번들로 제공됩니다. 이를 통해 Jenkins가 어떤 인스톨러와 패키지를 통해서도 실행되지만 Tomcat과 같은 servlet 콘테이너를 사용하여 열 때는 실행되지 않도록 할 수 있습니다.”

 

이 취약점은 인증받지 않은 공격자가 다른 사용자를 위한 민감 정보를 포함한 HTTP 응답 헤더를 얻도록 허용할 수 있습니다.”

 

JettyJenkins Core에 영향을 미치는 이 취약점은 Jetty 버전 9.4.27에서 대규모 HTTP 응답 헤더를 처리하고 버퍼 오버플로우를 예방하는 메커니즘이 추가되었을 때 함께 추가된 것으로 보입니다.

 

Jetty의 프로젝트 담당자인 Greg Wilkins는 아래와 같이 밝혔습니다.

 

이 이슈는 버퍼 오버플로우로 헤더 버퍼를 릴리즈 했지만 필드에 null 처리를 하지 않아 발생했습니다.”

 

이를 처리하기 위해 JettyHTTP 응답 헤더가 버퍼 풀에 두 번 릴리즈되어 결국 메모리 충전과 정보 공개가 발생하는 HTTP 431 에러를 발생시키는 예외를 만들었습니다.

 

이 이중 릴리즈를 통해 스레드 2개가 동시에 해당 풀의 동일한 버퍼를 획득하여 하나의 요청을 통해 세션 식별자, 인증 크리덴셜, 기타 민감 정보를 포함했을 가능성이 높은 다른 스레드에서 작성한 응답에 접근할 수 있게 됩니다.

 

스레드 1이 응답 1 데이터를 쓰기 위해 ByteBuffer를 사용하는 동안, 스레드 2ByteBuffer를 응답 2 데이터로 채울 수 있게 됩니다. 이로 인해 요청 1을 발행 후 응답을 기다리는 클라이언트 1이 클라이언트 2를 위해 작성된 민감 정보를 담고 있을 가능성이 있는 응답 2를 열람할 수 있게 되는 것입니다.”

 

한 경우에는, 클라이언트가 세션 사이를 이동할 수 있도록 허용하는 메모리 충돌이 발생했습니다. 이로 인해 계정간 액세스가 가능했습니다. 한 사용자의 응답 내 인증 쿠키가 또 다른 사용자에게 전송되었기 때문에 사용자 A가 사용자 B의 세션으로 점프할 수 있게 되었습니다.

 

이 보안 권고가 발행된 후, 해당 취약점은 지난 달 공개된 Jetty 9.4.30.v20200611에서 수정되었습니다.

 

명령줄 인터페이스를 통해 Jetty를 번들로 제공하는 Winstone은 어제 공개된 Jenkins 2.243 Jenkins LTS 2.235.5를 통해 이 취약점을 패치했습니다.

 

Jenkins를 사용할 경우 버퍼 충돌 취약점을 완화하기 위해 최신 버전으로 소프트웨어를 업데이트할 것을 권장합니다.

 

 


 

출처:

https://thehackernews.com/2020/08/jenkins-server-vulnerability.html

https://www.jenkins.io/security/advisory/2020-08-17/

https://nvd.nist.gov/vuln/detail/CVE-2019-17638

https://bugs.eclipse.org/bugs/show_bug.cgi?id=564984


관련글 더보기

댓글 영역