Esta é a primeira etapa para diagnosticar você mesmo o problema do New Relic IAST. Use este guia para resolver os problemas rapidamente.
Se você não encontrar seu problema listado aqui, você pode entrar em contato com o suporte da New Relic.
Vá para one.newrelic.com > All capabilities > IAST > Tests. Clique em um aplicativo para verificar a eficiência dos testes do aplicativo, vulnerabilidades, API coberta e chamadas de métodos, entre outros dados.
O IAST exige a reinicialização do aplicativo depois de habilitado.
Se este for um aplicativo novo, o firewall pode estar impedindo a comunicação com a plataforma NR. Verifique a seção de estatísticas de serviço no arquivo com o timestamp mais recente em nr-security-home/logs/snapshots
. Todos os 6 itens dessa lista devem dizer OK. Caso contrário, revise o registro para obter informações adicionais ou entre em contato com o suporte da New Relic. Você também pode ver a documentação padrão do firewall.
Se você puder ver seu aplicativo na interface do usuário do New Relic e o agente de segurança tiver iniciado o IAST com êxito, mas não encontrar vulnerabilidades na interface do usuário, verifique o seguinte:
O nível de eficiência do seu aplicativo: Vá para one.newrelic.com > All capabilities > IAST > Tests. Procure seu aplicativo e verifique a seção de resumo. Se a cobertura do IAST for baixa para seu aplicativo, adicione casos de teste adicionais ao seu aplicativo para obter um nível mais alto de eficiência de teste.
A cobertura do IAST: vá para one.newrelic.com > All capabilities > IAST > Tests. Procure seu aplicativo e clique nele. Na seção de resumo, verifique se a cobertura da análise IAST é alta e nenhuma vulnerabilidade foi detectada, o que significa que seu aplicativo está seguro.
Framework ou categoria de vulnerabilidades do seu aplicativo não é suportada.
Se depois de verificar isso você ainda não estiver vendo vulnerabilidades no IAST, entre em contato com o suporte da New Relic.
Se você não vir seu aplicativo em one.newrelic.com > All capabilities > IAST > Tests, verifique o seguinte:
- Seu aplicativo está instalado e funcionando: verifique o processo do aplicativo ou a página APM e serviços.
- O log do aplicativo para descobrir se há algum problema.
- A versão do seu agente APM e atualize-a, se necessário.
- O arquivo de configuração
newrelic.yml
inclui a modificação do parâmetro conforme indicado na página de instalação. - Vá para o diretório
nr-security-home/logs
e localize a linha[SETP-8]
no arquivoLANGUAGE-security-collector-init.log
. Verifique se há um erro inesperado e saiba o que falhou. - O aplicativo tem tráfego. Gere algum tráfego para permitir que o IAST teste seu aplicativo.
- Proxy ou firewall bloqueando o acesso. Coloque na lista de permissões os seguintes IPs
3.134.136.130, 18.219.177.104, 18.117.21.106
para o domínio csec.nr-data.net, os seguintes IPs3.130.22.102, 3.138.243.136, 3.139.218.150
para o domínio csec-gov.nr-data.net e os seguintes IPs18.185.235.118, 3.125.193.113, 3.75.166.122
para o domínio csec.eu01.nr-data.net. Mas nossa recomendação é adicionar domínios na lista de permissões em vez dos IPs, pois esses IPs podem mudar a qualquer momento. - O certificado TLS está correto. Adicione o certificado Let's Encrypt CA (baixe em Let's Encrypt Certificates) ao seu armazenamento confiável local. Inclua os certificados raiz e intermediários (ISRG Root X1 e Let's Encrypt R3) para estabelecer a cadeia de confiança completa.
- Framework ou categoria de vulnerabilidades do seu aplicativo é suportada.
Importante
Se você estiver usando o modo de alta segurança do APM, o agente não funcionará.
Para desativá-lo, você precisa entrar em contato com o suporte da New Relic.
Quando o agente de segurança está funcionando corretamente:
Você vê seu aplicativo em one.newrelic.com > All capabilities > IAST > Tests. O aplicativo é iniciado e há tráfego gerado.
No diretório
nr-security-home/logs
, procure o arquivoLANGUAGE-security-collector-init.log
. SubstituaLANGUAGE
no nome do arquivo pelo que você está usando. Pesquise estas etapas para ver onde está o problema:- [PASSO-1]: O agente de segurança está iniciando.
- [PASSO-2]: O agente de segurança gera um identificador exclusivo. Para conexão de soquete da web, você verá cabeçalhos de autenticação do Node.
- [PASSO-3]: O agente de segurança coleta informações sobre seu aplicativo.
- [PASSO-4]: A conexão do web socket com o validador SaaS foi estabelecida com sucesso.
- [PASSO-5]: Os threads do agente de segurança foram iniciados.
- [PASSO-6]: A instrumentação do aplicativo foi bem-sucedida.
- [PASSO-7]: O aplicativo recebe e aplica suas políticas e configuração.
- [PASSO-8]: Você vê um primeiro evento enviado para validação, o que significa que o agente de segurança foi iniciado com sucesso.
Aqui está um trecho de um arquivo de log do agente de segurança
LANGUAGE-security-collector-init.log
:Init Log File initiated.Init Logger configured successfully with level: INFO and rollover on max size 52428800.2023-05-26 10:45:02 : [8] [New Relic RPM Connection Service] INFO : com.newrelic.api.agent.security.Agent - [STEP-1] => Security agent is starting2023-05-26 10:45:02 : [8] [New Relic RPM Connection Service] INFO : com.newrelic.agent.security.AgentInfo - [STEP-2] => Generating unique identifier: 8a6d79c3-ad67-35d6-b811-17f7515b7f292023-05-26 10:45:02 : [8] [New Relic RPM Connection Service] INFO : com.newrelic.api.agent.security.Agent - [STEP-3] => Gathering information about the application
Você pode verificar se o IAST está funcionando, mesmo se estiver vendo seu aplicativo na interface do IAST e o agente de segurança tiver sido iniciado com êxito. Siga estas etapas para verificar:
Vá para one.newrelic.com > All capabilities > IAST > Tests.
Procure seu aplicativo na aba Application tests e clique nele.
Veja os detalhes do teste, incluindo APIs covered, methods calls e application testing efficiency.
Além disso, se você definir o nível de log como debug/finest, poderá procurar por Fuzz request received no arquivo
nr-security-home/logs/java-security-collector.log
. Isto mostra que a análise do IAST está em andamento.
O IAST inicia os testes quando detecta que há tráfego, então verifique se o seu aplicativo funciona ou tem algum tráfego direcionado a ele. Execute a interface do aplicativo ou endpoints de API.
Estas podem ser as razões pelas quais o IAST não detecta vulnerabilidades conhecidas:
IAST não oferece suporte framework de aplicativo.
Não há instrumentação para o módulo.
Seu aplicativo pode apresentar alto tráfego e latência por algum tempo como parte do IAST. Isso deve ser resolvido em alguns minutos quando o teste IAST for concluído.
Você também pode verificar o arquivo de log do snapshot na pasta nr-security-home/logs/snapshots
. O arquivo de log mostra o status do agente de segurança, o uso de recursos e os últimos cinco erros.
Se o seu aplicativo tiver a funcionalidade de criar arquivos e diretórios como parte do atendimento a uma solicitação HTTP, o IAST tentará testar o caminho do código e, portanto, criar esses arquivos e diretórios. O código do aplicativo, sob a influência das solicitações HTTP recebidas, cria esses arquivos. O agente não pode excluí-los.
Se você tiver certeza de que nenhuma API pode criar arquivos e diretórios, compartilhe a configuração e o log do seu aplicativo com o suporte da New Relic.
Como parte do IAST, o agente de segurança envia novas solicitações ao aplicativo que aumenta a carga, resultando em um aumento na utilização de recursos. Essa análise IAST também pode expor erros ou exceções não detectados em seu aplicativo.
Se o aplicativo travou devido à falta de recursos, aumente os recursos, reinicie o aplicativo e execute o IAST novamente.
Você pode atualizar o appId
na consulta abaixo e executá-lo no criador de consulta para encontrar todas as vulnerabilidades relatadas para sua aplicação.
SELECT * FROM Vulnerability WHERE issueType = 'Application Vulnerability' AND appId = YOU_APPLICATION_ID
Atualize o status de suas vulnerabilidades se achar que o IAST relatou um falso positivo. Siga esses passos:
Pesquise seu aplicativo: Vá para one.newrelic.com > All capabilities > IAST > Tests.
Clique na guia Todos os aplicativos e selecione as vulnerabilidades que não são vulnerabilidades reais.
Na seção de detalhes de vulnerabilidades, você pode atualizar o status das vulnerabilidades relatadas. Você pode atualizar seu status para:
- Falso positivo
- Resolvido
- Não resolvido
Se quiser listar as vulnerabilidades para as quais você atualizou o status, você pode aplicar o filtro na lista de vulnerabilidades exploráveis detectadas.
Para Golang, certifique-se de importar os pacotes de instrumentação necessários para a biblioteca e estrutura que seu aplicativo usa.
Por exemplo, vamos supor que sua aplicação esteja usando biblioteca para Mongo DB. Para esta biblioteca específica, você precisa importar este pacote de instrumentação do newrelic:
import ("github.com/newrelic/go-agent/v3/integrations/nrsecurityagent""github.com/newrelic/go-agent/v3/newrelic""github.com/newrelic/csec-go-agent/instrumentation/csec_mongodb_mongo""go.mongodb.org/mongo-driver/mongo")Dependendo dos requisitos do seu aplicativo, existem outros pacotes que você pode precisar importar. Confira aqui a lista de pacotes suportados.
Certifique-se de importar o pacote correspondente para cada módulo.
Se você estiver abrindo um endpoint de protocolo HTTP, coloque a função
newrelic.WrapListen
ao redor do nome do endpoint para ativar a varredura de vulnerabilidades nesse endpoint:http.ListenAndServe(newrelic.WrapListen(":YOUR_PORT_NUMBER"), nil)Importante
Você pode pular esta etapa se estiver em um ambiente Linux.
Para um caso específico de Outbound HTTP Request ou chamadas para serviços externos, é necessário atualizar o método do seu aplicativo.
O IAST é compatível com o ambiente Windows. No entanto, para alguns aplicativos Java, você pode enfrentar classCirculatoryError
e precisar desabilitar a instrumentação de baixa prioridade na configuração do agente da seguinte forma:
Desative a instrumentação de baixa prioridade na configuração de segurança:
low-priority-instrumentation:enabled: falseExclua a classe de instrumentação de baixa prioridade do transformador de classe. Para fazer isso, adicione as linhas fornecidas na seção
class_transformer
do arquivo de configuração:com.newrelic.instrumentation.security.low-priority-instrumentation:enabled: false
Não, não temos nenhuma API para baixar as descobertas do IAST.
O IAST envia novas solicitações ao aplicativo com base no que observa durante o teste. O objetivo é determinar se comportamentos maliciosos são possíveis, o que envolve a invocação API adicionais e chamadas de métodos usando uma carga útil de exploração. Isso pode resultar na manipulação indesejável dos dados dos clientes e no acionamento de serviços de proteção de tempo de execução.