Apa yang terjadi
Cabang non-paginated dari alat read_file menggunakan validate_project_path, tetapi cabang paginated (dipilih oleh offset/limit) melewati pemeriksaan penahanan tersebut sebelum membuka path, memungkinkan path absolut dan traversal relatif untuk keluar dari root proyek. Ini mengekspos file arbitrer yang dapat dibaca server ke pemanggil MCP.
Mengapa penting
Alat AI code-graph/MCP yang mengindeks basis kode dapat diubah menjadi primitif pembacaan file arbitrer jika penjaga workspace dilewati, mengekspos sumber, konfigurasi, dan rahasia ke pemanggil jaringan atau sesi agen yang di-inject prompt.
Vektor serangan
Cabang paginated dari MCPToolsRegistry.read_file menggabungkan file_path yang dikendalikan penyerang ke project_root tanpa menyelesaikan dan memverifikasi penahanan; path absolut membuang root yang dikonfigurasi dan traversal relatif menyelesaikan di luar itu. Pemanggil yang tidak terautentikasi dari server HTTP MCP yang diekspos jaringan dapat membaca file arbitrer yang dapat dibaca UTF-8 yang tersedia untuk proses server, termasuk kredensial, data env, dan kunci privat.
Sistem yang terdampak
code-graph-rag < 0.0.345
Mitigasi
Tingkatkan ke code-graph-rag 0.0.345. Advisory: https://github.com/vitali87/code-graph-rag/security/advisories/GHSA-vvr2-h2jp-838m