import { criarOcorrencia } from '../../../types/index.js';
export const detectorAzureSecurity = {
    nome: 'detector-azure-security',
    categoria: 'seguranca',
    descricao: 'Detecta vulnerabilidades em Azure Pipelines',
    test: (relPath) => relPath.includes('azure-pipelines') && /\.(ya?ml)$/i.test(relPath),
    aplicar: (src, relPath) => {
        if (!src)
            return [];
        const ocorrencias = [];
        if (/vmImage:\s*['"]?.*latest['"]?/i.test(src)) {
            ocorrencias.push(criarOcorrencia({
                tipo: 'azure-pipelines-latest-image',
                nivel: 'aviso',
                mensagem: 'Uso de imagem :latest em vmImage detectado',
                relPath,
                linha: 1,
                sugestao: 'Fixe a versão da imagem (ex: ubuntu-22.04) para evitar quebras inesperadas em atualizações do runner'
            }));
        }
        const secretRegex = /(password|token|secret|key|password):\s*['"]?([^$({][a-zA-Z0-9_\-]{8,})['"]?/gi;
        let match;
        while ((match = secretRegex.exec(src)) !== null) {
            ocorrencias.push(criarOcorrencia({
                tipo: 'azure-pipelines-secret-hardcoded',
                nivel: 'erro',
                mensagem: `Potencial segredo hardcoded detectado na propriedade '${match[1]}'`,
                relPath,
                linha: 1,
                sugestao: 'Use Azure Key Vault ou variáveis de biblioteca com $(NOME_DA_VARIAVEL)'
            }));
        }
        if (/bash:\s*curl.*\|\s*bash/i.test(src)) {
            ocorrencias.push(criarOcorrencia({
                tipo: 'azure-pipelines-dangerous-curl',
                nivel: 'erro',
                mensagem: 'Padrão "curl | bash" detectado',
                relPath,
                linha: 1,
                sugestao: 'Baixe o script, valide o checksum e execute localmente para evitar Remote Code Execution'
            }));
        }
        return ocorrencias;
    }
};
//# sourceMappingURL=detector-azure-security.js.map