Falha no servidor MCP do Azure DevOps permite sequestrar agentes de IA revisores via comentários ocultos em PRs
O servidor MCP oficial do Azure DevOps devolve descrições de pull requests sem sanitização, permitindo que comentários invisíveis (HTML oculto renderizado como nada na UI, mas retornado por completo pela API) injetem instruções em agentes de IA usados para revisão de código. Um atacante com apenas acesso de escrita a um projeto pode assim sequestrar o agente de um revisor com privilégios maiores, levando-o a agir fora do projeto original. Até a divulgação, a Microsoft não havia lançado correção nem atribuído CVE ao problema.
A falha está na ferramenta repo_get_pull_request_by_id do servidor MCP do Azure DevOps: diferente de outras ferramentas do mesmo servidor, como as que lidam com wiki e logs de build, ela nunca passou a resposta pela função de proteção createExternalContentResponse, que normalmente isola conteúdo externo untrusted do restante do contexto do agente. Isso significa que o conteúdo bruto de uma descrição de PR, incluindo qualquer coisa escondida dentro de comentários HTML, chega ao modelo como se fosse instrução legítima do sistema.
O vetor de ataque explora a diferença entre o que a UI web do Azure DevOps renderiza e o que a API REST retorna: comentários HTML (`<!-- payload -->`) dentro do campo Markdown da descrição do PR ficam invisíveis para um humano lendo a página, mas são devolvidos verbatim quando um agente de IA consulta o PR via MCP. Basta um revisor pedir para o próprio agente revisar aquele PR para que a instrução oculta seja lida como parte do contexto e execute a nova tarefa que o atacante definiu. Na prova de conceito documentada, o payload fez o agente disparar um pipeline em um projeto diferente daquele do PR, ler uma página de wiki confidencial fora do escopo do atacante, e publicar o conteúdo de volta como comentário no próprio PR, onde o atacante podia lê-lo.
O que torna isso especialmente perigoso é o padrão de privilégio: em ambientes corporativos é comum que o revisor de um PR tenha acesso mais amplo do que o autor, exatamente para poder revisar mudanças sensíveis. Como o ataque não depende de vulnerabilidade de software tradicional, apenas de um comentário de texto, qualquer colaborador com permissão de escrita em um repositório pode tentar escalar para o escopo de um revisor com muito mais acesso, sem deixar rastro além do próprio comentário.
Até o momento da publicação, não havia CVE atribuído nem versão corrigida do servidor MCP disponível, o que deixa em exposição qualquer organização que já tenha conectado agentes de IA de revisão de código ao Azure DevOps via MCP. O caso se soma a uma classe crescente de falhas de "prompt injection indireta" em conectores MCP, reforçando que qualquer ferramenta que alimente contexto para um agente precisa tratar esse conteúdo como potencialmente hostil, e não apenas confiar que ele veio de um sistema interno confiável.