무슨 일이 있었나
read_file 도구의 페이지네이션되지 않은 분기는 validate_project_path를 사용하지만, 페이지네이션된 분기(offset/limit로 선택됨)는 경로를 열기 전에 해당 격리 검사를 우회하여 절대 경로와 상대 순회가 프로젝트 루트를 벗어날 수 있습니다. 이는 MCP 호출자에게 서버에서 읽을 수 있는 임의 파일을 노출합니다.
왜 중요한가
코드베이스를 인덱싱하는 AI 코드 그래프/MCP 도구는 작업공간 가드가 우회되면 임의 파일 읽기 프리미티브로 전환될 수 있으며, 네트워크 호출자나 프롬프트 주입된 에이전트 세션에 소스, 구성 및 비밀을 노출합니다.
공격 경로
MCPToolsRegistry.read_file의 페이지네이션된 분기는 공격자가 제어하는 file_path를 project_root에 결합하면서 포함 여부를 해석하고 검증하지 않습니다; 절대 경로는 구성된 루트를 버리고 상대 순회는 그 밖으로 해석됩니다. 네트워크에 노출된 HTTP MCP 서버의 인증되지 않은 호출자는 서버 프로세스에서 사용 가능한 임의의 UTF-8 읽기 가능한 파일(자격 증명, 환경 데이터, 개인 키 포함)을 읽을 수 있습니다.
영향받는 시스템
code-graph-rag < 0.0.345
완화 방안
code-graph-rag 0.0.345로 업그레이드하십시오. 권고: https://github.com/vitali87/code-graph-rag/security/advisories/GHSA-vvr2-h2jp-838m