>_ DevTrendsit

Lingua

Home

Linguaggi

Sezioni

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicurezza
Python

Come Verificare i Server MCP per Minacce Nascoste e Backdoor

Connettere estensioni di terze parti agli assistenti AI è diventato rapidamente la norma. Aggiungiamo senza esitazione nuovi server MCP a Cursor, Windsurf o Claude Desktop affinché il modello possa leggere documentazione, interrogare database o eseguire script. Eppure pochissime persone leggono effettivamente il codice sorgente di queste utility prima di eseguirle. Un grave errore.

Qualsiasi strumento esterno ottiene accesso diretto al contesto del modello e al vostro sistema. Se la descrizione di uno strumento contiene un'istruzione sottile (prompt injection), o un pacchetto invia silenziosamente variabili d'ambiente a un server esterno, individuare il trucco manualmente è difficile. Il team di Cisco AI Defense ha rilasciato un progetto open-source mcp-scanner — un'utilità da riga di comando e una libreria Python progettata specificamente per analizzare i server MCP.

MCP Scanner

Cosa può fare lo scanner

Lo strumento controlla quattro entità del protocollo MCP contemporaneamente: descrizioni delle funzioni (tools), prompt pre-configurati, risorse statiche e istruzioni di sistema del server.

All'interno, esegue un sistema di analisi ibrida. Lo scanner non si limita alla corrispondenza delle firme — combina diversi approcci:

  1. Analisi delle firme YARA. Controlla il codice e gli schemi per pattern di attacco tipici, chiamate di comandi shell e tentativi di escape dalla sandbox. Funziona localmente e velocemente, senza bisogno di chiavi API.
  2. Verifica semantica LLM-as-a-judge. Invia schemi degli strumenti e prompt di sistema a un modello (supporta OpenAI, Bedrock, Azure o Ollama locale) per rilevare iniezioni nascoste e discrepanze tra la descrizione di una funzione e il suo comportamento effettivo.
  3. Audit comportamentale del codice sorgente. Un analizzatore statico confronta le docstring con i corpi delle funzioni in Python, TypeScript, Go, Rust, Java e altri cinque linguaggi. Se una funzione dichiara di essere una calcolatrice ma avvia richieste HTTP internamente, lo scanner genera un avviso.
  4. Sandboxing dei pacchetti PyPI e npm. L'utilità può scaricare pacchetti ed eseguirli in un container Docker isolato, identificando codice malevolo prima che lo installiate sul vostro sistema.

Un dettaglio interessante: il repository include un Readiness Analyzer. Contiene 20 euristiche e cerca problemi puramente ingegneristici: timeout dimenticati, logica di retry mancante per errori di rete e gestione degli errori inadeguata.

Avvio rapido nel terminale

Il modo più semplice per installare l'utilità è tramite uv:

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

Se volete solo controllare cosa è già configurato nei vostri editor, eseguite una scansione delle configurazioni note:

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

Il comando troverà i file di configurazione di Claude Desktop, Cursor e Windsurf sulla vostra macchina, si connetterà ai server configurati ed eseguirà le regole YARA di base.

Per controllare un server locale in esecuzione su stdio, passate il comando di avvio:

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

Se avete un endpoint remoto in esecuzione, il controllo inizia allo stesso modo:

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

L'utilità emetterà un riepilogo per ogni strumento con il suo stato di sicurezza e un elenco delle minacce rilevate.

=== 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

Utilizzo nel codice e CI/CD

Il progetto è progettato non solo come CLI, ma anche come SDK autonomo. È comodo integrarlo nei gateway backend o nelle pipeline di validazione degli strumenti prima di pubblicare nel registro interno della vostra azienda.

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())

Per le pipeline a ciclo chiuso, c'è una modalità static. Potete esportare gli schemi degli strumenti in JSON in anticipo e analizzarli offline senza avviare server e senza effettuare richieste di rete:

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

Cosa tenere a mente

Il progetto è open source sotto licenza Apache 2.0. Gli analizzatori di base (YARA, pip-audit, Prompt Defense e controlli di prontezza) funzionano completamente in modo autonomo e gratuitamente.

Per un'analisi semantica approfondita, avrete bisogno di una chiave API per qualsiasi LLM tramite LiteLLM, oppure di un modello in esecuzione locale tramite Ollama. Il motore Cisco AI Defense Inspect API si connette opzionalmente se avete già un abbonamento ai loro servizi di sicurezza enterprise.

Lo strumento è utile per gli sviluppatori che costruiscono i propri server MCP per l'auto-verifica prima del rilascio, così come per i team che integrano agenti AI nei flussi di lavoro interni dell'azienda.

Progetti correlati