MCP Tool Poisoning Attacks
Un proyecto de Node.js que demuestra interacciones entre cliente y servidor MCP para ataques de envenenamiento de herramientas, que requiere una clave de API de Anthropic.
GitHub
3
Prueba este MCPPatrocinadoDocumentación
MCP_TOOL_POISONING_ATTACKS
ÍNDICE
ACERCA DE
Cliente MCP y Servidor MCP
ENTORNO
- node.js v22
- mcp sdk
claude-3-5-haiku-20241022
[!NOTE] ./servers/ipinfo/ actualmente se usa desde el Cliente MCP mediante
npx. Para instalar desde el repositorio de GitHub usando npx, es necesario colocarpackage.jsonen la raíz del repositorio, por lo que se ha colocado ./package.json en la raíz del repositorio para su uso con npx.
PREPARACIÓN
Para Dev Container
- instala VSCode, Docker
- instala las extensiones de VSCode Dev ContainerS
- En VSCode,
Ctrl shift py ejecutaDev Containers: Rebuild Containers - crea
.envy añadeANTHROPIC_API_KEY
cat << EOF > mcp_client/.env
ANTHROPIC_API_KEY=your_anthropic_api_key
EOF
- crea
mcp_client/mcpservers.json
Docker
- crea
.envy añadeANTHROPIC_API_KEY
cat << EOF > mcp_client/.env
ANTHROPIC_API_KEY=your_anthropic_api_key
EOF
- crea
mcp_client/mcpservers.json - construye la imagen de docker
docker compose build
CÓMO USAR
Ejecutar en Dev Containers
cd mcp_client
yarn run bundle
node dist/index.js
Ejecutar con docker run
docker compose run -it mcp_client
EJEMPLO
ejemplo de mcp_client/mcpservers.json
{
"mcpServers": {
"ipinfo": {
"command": "/usr/local/bin/npx",
"args": [
"-y",
"github:RyosukeDTomita/mcp_tool_poisoning_attacks#main",
"ipinfo"
],
"env": {
"PATH": "/usr/local/bin:/usr/bin:/bin"
}
},
"burp": {
"url": "http://localhost:9876/sse"
}
}
}
[!NOTE] Actualmente se usa el servidor superior dentro de
mcpservers.json.
docker compose run -it mcp_client
Tools:
[
{
name: 'ipinfo',
description: 'Get My IP information',
input_schema: {
type: 'object',
properties: {},
additionalProperties: false,
'$schema': 'http://json-schema.org/draft-07/schema#'
}
},
{
name: 'ipinfo_target_ipjson',
description: 'Get Target IP information from user request parameter',
input_schema: {
type: 'object',
properties: [Object],
additionalProperties: false,
'$schema': 'http://json-schema.org/draft-07/schema#'
}
}
]
Enter your message: 8.8.8.8の情報を教えて
=====Request to Anthoropic API=====
[ { role: 'user', content: '8.8.8.8の情報を教えて' } ]
=====Response from Anthropic API=====:
{
id: 'msg_012ZGLAfhWKmgDroHELiq6F6',
type: 'message',
role: 'assistant',
model: 'claude-3-5-haiku-20241022',
content: [
{
type: 'text',
text: '8.8.8.8の情報を調べるために、ipinfo_target_ipjsonツールを使用します。'
},
{
type: 'tool_use',
id: 'toolu_01EecHroNi48aFhzTaW5V5NW',
name: 'ipinfo_target_ipjson',
input: [Object]
}
],
stop_reason: 'tool_use',
stop_sequence: null,
usage: {
input_tokens: 432,
cache_creation_input_tokens: 0,
cache_read_input_tokens: 0,
output_tokens: 97
}
}
8.8.8.8の情報を調べるために、ipinfo_target_ipjsonツールを使用します。
=====MCP Server Tool result=====
: {
content: [
{
type: 'text',
text: '{"ip":"8.8.8.8","hostname":"dns.google","city":"Mountain View","region":"California","country":"US","loc":"38.0088,-122.1175","org":"AS15169 Google LLC","postal":"94043","timezone":"America/Los_Angeles","readme":"https://ipinfo.io/missingauth","anycast":true}'
}
]
}
=====Response from Anthropic API after tool use=====
この情報は、IPアドレス8.8.8.8の詳細を示しています。主な特徴は以下の通りです:
1. IP: 8.8.8.8
2. ホスト名: dns.google
3. 所在地:
- 都市: Mountain View
- 地域: カリフォルニア
- 国: アメリカ合衆国(US)
4. 地理的座標: 北緯38.0088、西経-122.1175
5. 組織: AS15169 Google LLC
6. 郵便番号: 94043
7. タイムゾーン: アメリカ/ロサンゼルス
8. エニーキャスト: はい(true)
この8.8.8.8は、Googleが提供する公開DNSサーバーの1つで、一般的に多くのユーザーが利用している信頼性の高いDNSサービスです。
