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.

Documentación

MseeP.ai Security Assessment Badge

MCP_TOOL_POISONING_ATTACKS

un license

Í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 colocar package.json en 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

  1. instala VSCode, Docker
  2. instala las extensiones de VSCode Dev ContainerS
  3. En VSCode, Ctrl shift p y ejecuta Dev Containers: Rebuild Containers
  4. crea .env y añade ANTHROPIC_API_KEY
cat << EOF > mcp_client/.env
ANTHROPIC_API_KEY=your_anthropic_api_key
EOF
  1. crea mcp_client/mcpservers.json

Docker

  1. crea .env y añade ANTHROPIC_API_KEY
cat << EOF > mcp_client/.env
ANTHROPIC_API_KEY=your_anthropic_api_key
EOF
  1. crea mcp_client/mcpservers.json
  2. 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サービスです。

Referencias