>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
Python

Comment vérifier les serveurs MCP pour détecter les menaces cachées et les backdoors

La connexion d'extensions tierces aux assistants IA est rapidement devenue chose courante. Nous ajoutons sans hésitation de nouveaux serveurs MCP à Cursor, Windsurf ou Claude Desktop pour que le modèle puisse lire la documentation, interroger des bases de données ou exécuter des scripts. Pourtant, peu de gens lisent réellement le code source de ces utilitaires avant de les exécuter. C'est une erreur majeure.

Tout outil externe obtient un accès direct au contexte du modèle et à votre système. Si la description d'un outil contient une instruction subtile (injection de prompt), ou si un package envoie silencieusement des variables d'environnement vers un serveur externe, il est difficile de repérer cette astuce manuellement. L'équipe de Cisco AI Defense a publié un projet open-source mcp-scanner — un utilitaire en ligne de commande et une bibliothèque Python conçus spécifiquement pour auditer les serveurs MCP.

MCP Scanner

Ce que le scanner peut faire

L'outil vérifie quatre entités du protocole MCP à la fois : les descriptions de fonctions (tools), les prompts préconfigurés, les ressources statiques et les instructions système du serveur.

En interne, il exécute un système d'analyse hybride. Le scanner ne se limite pas à la correspondance de signatures — il combine plusieurs approches :

  1. Analyse par signatures YARA. Vérifie le code et les schémas pour détecter les modèles d'attaque typiques, les appels de commandes shell et les tentatives d'évasion de sandbox. S'exécute localement et rapidement, aucune clé API nécessaire.
  2. Vérification sémantique LLM-as-a-judge. Envoie les schémas d'outils et les prompts système à un modèle (supporte OpenAI, Bedrock, Azure ou Ollama local) pour détecter les injections cachées et les divergences entre la description d'une fonction et son comportement réel.
  3. Audit comportemental du code source. Un analyseur statique compare les docstrings aux corps de fonctions en Python, TypeScript, Go, Rust, Java et cinq autres langages. Si une fonction prétend être une calculatrice mais initie des requêtes HTTP en interne, le scanner déclenche une alerte.
  4. Sandboxing des packages PyPI et npm. L'utilitaire peut télécharger des packages et les exécuter dans un conteneur Docker isolé, identifiant le code malveillant avant que vous ne l'installiez sur votre système.

Un détail intéressant : le dépôt inclut un Readiness Analyzer. Il contient 20 heuristiques et recherche les problèmes purement d'ingénierie : timeouts oubliés, logique de retry manquante pour les échecs réseau et une mauvaise gestion des erreurs.

Démarrage rapide dans le terminal

Le moyen le plus simple d'installer l'utilitaire est via uv :

uv tool install --python 3.13 cisco-ai-mcp-scanner

Si vous voulez simplement vérifier ce qui est déjà configuré dans vos éditeurs, lancez une analyse des configs connues :

mcp-scanner --scan-known-configs --analyzers yara --format summary

La commande trouvera les fichiers de configuration de Claude Desktop, Cursor et Windsurf sur votre machine, se connectera aux serveurs configurés et exécutera les règles YARA de base.

Pour vérifier un serveur local fonctionnant via stdio, transmettez la commande de lancement :

mcp-scanner --analyzers yara,prompt_defense --format table \
  stdio --stdio-command uvx --stdio-arg mcp-server-fetch

Si vous avez un endpoint distant en cours d'exécution, la vérification commence de la même manière :

mcp-scanner --server-url https://mcp.deepwiki.com/mcp --analyzers yara --format summary

L'utilitaire affichera un résumé pour chaque outil avec son statut de sécurité et une liste des menaces détectées.

=== MCP Scanner Results Table ===

Scan Target: http://127.0.0.1:8002/sse

Scan Target                   Tool Name     Status     API      YARA     LLM      Severity
-----------------------------------------------------------------------------------------
http://127.0.0.1:8002/sse     exec_secrets  UNSAFE     HIGH     HIGH     HIGH     HIGH
http://127.0.0.1:8002/sse     safe_command  SAFE       SAFE     SAFE     SAFE     SAFE

Utilisation dans le code et CI/CD

Le projet est conçu non seulement comme une CLI, mais aussi comme un SDK autonome. Il est pratique de l'intégrer dans des passerelles backend ou des pipelines de validation d'outils avant de publier dans le registre interne de votre entreprise.

import asyncio
import logging
from mcpscanner import Config, Scanner, set_log_level
from mcpscanner.core.models import AnalyzerEnum

async def main():
    set_log_level(logging.ERROR)

    config = Config(
        llm_provider_api_key="your_llm_api_key"
    )
    scanner = Scanner(config)

    # Проверяем удаленный сервер
    results = await scanner.scan_remote_server_tools(
        "http://127.0.0.1:8000/mcp",
        analyzers=[AnalyzerEnum.YARA, AnalyzerEnum.LLM]
    )

    for res in results:
        status = "OK" if res.is_safe else "ВНИМАНИЕ"
        print(f"Инструмент: {res.tool_name} -> {status}")

asyncio.run(main())

Pour les pipelines en boucle fermée, il existe un mode static. Vous pouvez exporter les schémas d'outils vers JSON à l'avance et les analyser hors ligne sans démarrer les serveurs et effectuer des requêtes réseau :

mcp-scanner --analyzers yara static --tools ./output/tools-list.json

Points importants à retenir

Le projet est open source sous licence Apache 2.0. Les analyseurs de base (YARA, pip-audit, Prompt Defense et les vérifications de readiness) s'exécutent entièrement de manière autonome et gratuitement.

Pour une analyse sémantique approfondie, vous aurez besoin soit d'une clé API pour n'importe quel LLM via LiteLLM, soit d'un modèle fonctionnant localement via Ollama. Le moteur d'inspection API de Cisco AI Defense se connecte optionally si vous avez déjà un abonnement à leurs services de sécurité enterprise.

L'outil est utile pour les développeurs qui créent leurs propres serveurs MCP pour s'auto-vérifier avant la publication, ainsi que pour les équipes intégrant des agents IA dans les flux de travail internes de l'entreprise.

Projets similaires