DEEP DIVE REPORT

Google ADK TypeScript FileArtifactService 경로 순회(CVE-2026-105772): 비기본 아티팩트 저장소 구성 점검

SecurityDesk
• 2026.10.21 • 조회 1

Google ADK TypeScript(@google/adk)의 FileArtifactService에서 경로 순회(path traversal, CWE-22) 취약점(CVE-2026-105772)이 공개되었습니다. 조작된 userId/sessionId 값으로 인증 없이 임의 파일 읽기/쓰기가 가능한 취약점으로, GitHub Advisory Database는 GHSA-r3pf-g3mr-cmr7을 통해 Critical 심각도로 등록했으며 2026년 10월 20일 공개 후 현재 Unreviewed 상태입니다.

개요

개요 인포그래픽
FileArtifactService는 파일 시스템에 아티팩트를 저장할 때 userId와 sessionId를 경로 구성에 사용하는 구조입니다. 이 값에 경로 구분자나 인코딩 등이 조작되면 저장소 루트 밖 임의 경로에 접근할 수 있어, 인증 없이 민감 정보 노출(임의 파일 읽기)과 서버 파일 변조(임의 파일 쓰기, 추가 공격 발판)가 가능해집니다.

이미 수정이 @google/adk 0.6.0에서 완료되어, 비기본 파일 아티팩트 저장소를 사용 중인 서비스의 업그레이드와 노출 여부 점검이 핵심 대응입니다. 기본 인메모리(in-memory) 아티팩트 서비스는 영향이 없는 것으로 공식 확인되었습니다.

영향 범위

  • Google ADK TypeScript(@google/adk)의 FileArtifactService를 사용하는 구성
  • 파일 기반 아티팩트 저장소로 기본 구성을 변경한 배포
  • @google/adk 0.6.0 미만 버전(파일 저장소 사용 시)
  • 외부 입력값이 userId/sessionId로 도달하는 에이전트 서비스는 시스템 기밀성·무결성 영향 가능성이 있습니다

기술적 분석

취약점의 원인은 FileArtifactService가 userId와 sessionId를 경로 구성에 사용하는 과정에서 입력 검증이 부족했던 것입니다. 이 값에 경로 구분자, 퍼센트 인코딩, 널 바이트 등이 포함되면 저장소 루트 외부의 임의 경로로 접근할 수 있는 경로 순회가 발생합니다.

수정 작업은 PR #210를 통해 @google/adk 0.6.0에 포함되었으며, userId와 sessionId에 허용 문자 화이트리스트 검사를 추가했습니다. 영숫자와 _, -, ., @만 허용하고, 경로 구분자, 퍼센트 인코딩, 널 바이트 등을 차단하는 방식입니다. 커밋 8c0eaa1에서는 루트 내부 검증(assertInsideRoot)과 세션 아티팩트 디렉터리 생성 검증 로직이 포함된 것으로 확인됩니다.

대응 방안

즉시 대응:

  • @google/adk 사용 여부와 버전, FileArtifactService(파일 아티팩트 저장소) 사용 여부를 전수 확인합니다. 기본 인메모리 아티팩트 서비스는 영향이 없으므로 파일 저장소 구성만 우선 분류하세요.
  • FileArtifactService를 사용하는 배포를 @google/adk 0.6.0 이상으로 즉시 업그레이드합니다.
  • 즉시 업그레이드가 어려운 환경에서는 userId/sessionId가 외부 입력으로 반영되는 지점을 점검하고, 가능하면 해당 서비스의 외부 노출을 일시 제한합니다.
  • 아티팩트 저장 디렉터리 내외에 비정상 파일 생성·수정 흔적이 있는지 확인합니다.

지속적 개선:

  • @google/adk 0.6.0 이상 유지(수정은 PR #210의 화이트리스트 검사로 경로 구분자, 퍼센트 인코딩, 널 바이트 차단)
  • 사용자 제공 식별자가 파일 경로에 반영되는 모든 커스텀 코드에 동일한 허용 문자 검사 적용
  • 아티팩트 저장소를 애플리케이션 전용 격리 디렉터리와 최소 권한으로 운영
  • 기능상 필요 없다면 기본 인메모리 저장소 등 파일 시스템 기반 저장소 사용 자체를 재검토

탐지 포인트:

  • userId/sessionId 값에 경로 구분자, 퍼센트 인코딩 형태의 이상 패턴이 포함된 요청 로그 점검
  • 아티팩트 저장 루트 디렉터리 외부 경로에 대한 파일 생성·수정 이벤트 모니터링(파일 무결성 감시)
  • 저장소 디렉터리 밖 위치에 생성된 비정상 파일의 존재 여부 조사

한계

  • 취약 버전의 정확한 하한(영향 개시 버전)은 확인된 자료에 명시되어 있지 않습니다.
  • CVSS 점수 수치와 세부 벡터는 확인된 자료에 포함되어 있지 않으며, Critical은 GitHub Advisory Database의 분류입니다. 해당 어드바이저리는 아직 Unreviewed 상태입니다.
  • CISA KEV 등재 여부와 야생 악용, 공개 PoC는 확인되지 않았습니다(조사 후 미발견).
  • 취약 코드 도입 시점과 노출 조건(외부 입력 도달 경로)의 상세는 확인된 자료만으로 단정할 수 없습니다.

종합 평가

공개 기준일 현재 야생에서의 실제 악용 사례와 공개 PoC는 확인되지 않았습니다. 다만 임의 파일 읽기/쓰기가 인증 없이 가능하다는 점에서 잠재 영향은 크며, GitHub Advisory Database는 Critical 심각도로 분류하고 있습니다. 악용 여부 미확인은 안전하다는 의미가 아니라 관측되지 않았다는 의미로 읽어야 합니다.

참고자료

함께 읽으면 좋은 글

본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.

로그인

아직 댓글이 없습니다.

첫 번째 댓글을 작성해보세요!

IT 도구 서랍

→ Unix: 2025-01-15T09:30:00
→ 날짜: 1736934600

→ ASCII: ABC
→ 문자: 65 66 67

ASCII 코드표 — 클릭하면 입력란에 추가

DecHex약어설명
DecHex문자
DecHex문자

→ 유니코드: 홍길동
→ 문자: \ud64d\uae38\ub3d9