
Um analisador de código-fonte construído para destacar funcionalidades de interesse e outras características, respondendo rapidamente à pergunta 'O que há no código?' usando análise estática com um mecanismo de regras baseado em JSON. Ideal para escanear componentes antes do uso ou detectar mudanças no nível de funcionalidades.
# Introdução

[](https://www.nuget.org/packages/Microsoft.CST.ApplicationInspector.CLI/)
[](https://www.nuget.org/packages/Microsoft.CST.ApplicationInspector.CLI/)
Microsoft Application Inspector é uma ferramenta de caracterização de código-fonte de software que ajuda a **identificar características de codificação de componentes de software de primeira ou terceira parte** com base em chamadas de bibliotecas/APIs conhecidas e é útil em casos de uso de segurança e não segurança. Ele usa centenas de regras e padrões regex para revelar características interessantes do código-fonte, auxiliando na determinação do **que o software é** ou **o que ele faz** a partir das operações de arquivo que utiliza, criptografia, operações de shell, APIs de nuvem, frameworks e muito mais, e recebeu atenção da indústria como uma contribuição nova e valiosa para OSS no [ZDNet](https://www.zdnet.com/article/microsoft-application-inspector-is-now-open-source-so-use-it-to-test-code-security/
), [SecurityWeek](https://www.securityweek.com/microsoft-introduces-free-source-code-analyzer)
, [CSOOnline](https://www.csoonline.com/article/3514732/microsoft-s-offers-application-inspector-to-probe-untrusted-open-source-code.html)
, [Linux.com/news](https://www.linux.com/news/microsoft-application-inspector-is-now-open-source-so-use-it-to-test-code-security/)
, [HelpNetSecurity](https://www.helpnetsecurity.com/2020/01/17/microsoft-application-inspector/
), Twitter e outros, e foi destaque no [Microsoft.com](https://www.microsoft.com/security/blog/2020/01/16/introducing-microsoft-application-inspector/).
O Application Inspector é diferente das ferramentas tradicionais de análise estática, pois não tenta identificar padrões "bons" ou "ruins"; ele simplesmente relata o que encontra em relação a um conjunto de mais de 400 padrões de regras para detecção de recursos, incluindo recursos que impactam a segurança, como o uso de criptografia e outros. Isso pode ser extremamente útil para reduzir o tempo necessário para determinar o que componentes Open Source ou outros fazem, examinando o código-fonte diretamente em vez de confiar em documentação ou recomendações limitadas.
A ferramenta suporta a varredura de várias linguagens de programação, incluindo C, C++, C#, Java, JavaScript, HTML, Python, Objective-C, Go, Ruby, PowerShell e [outras](https://github.com/microsoft/ApplicationInspector/wiki/3.4-Applies_to-(languages)), e pode escanear projetos com arquivos de linguagens mistas. Ela suporta a geração de resultados em formatos de saída HTML, JSON e texto, sendo o **padrão um relatório HTML** semelhante ao mostrado aqui.

Não deixe de ver nossa página completa do wiki do projeto https://Github.com/Microsoft/ApplicationInspector/wiki para informações adicionais e ajuda.
# Início Rápido
## Obter o Application Inspector
### Ferramenta .NET (recomendada)
- Baixe e instale o .NET 6 [SDK](https://dotnet.microsoft.com/download/)
- Execute `dotnet tool install --global Microsoft.CST.ApplicationInspector.CLI`
Veja mais no [wiki](https://github.com/microsoft/ApplicationInspector/wiki/2.-NuGet-Support)
### Binário Dependente de Plataforma
- Baixe o Application Inspector selecionando o pacote pré-compilado para o sistema operacional de sua escolha mostrado na seção Assets do [Releases](https://github.com/microsoft/ApplicationInspector/releases).
## Executar o Application Inspector
- Ferramenta Nuget: `appinspector analyze -s path/to/src`.
- Específico da plataforma: `applicationinspector.cli.exe analyze -s path/to/src`
# Objetivos
Microsoft Application Inspector ajuda você a proteger seus aplicativos do início à implantação.
**Escolhas de Design** - Permite que você escolha quais componentes atendem às suas necessidades com uma pegada menor de recursos desnecessários ou desconhecidos para manter a superfície de ataque do seu aplicativo menor, além de ajudar a verificar os esperados, ou seja, apenas criptografia padrão da indústria.
**Identificando Deltas de Recursos** - Detecta mudanças entre versões de componentes, o que pode ser crítico para detectar injeção de backdoors.
**Automatizando Verificações de Conformidade de Segurança** - Use para identificar componentes com recursos que exigem escrutínio adicional de segurança, aprovação ou conformidade com SDL como parte do seu pipeline de build ou crie um repositório de metadados sobre todos os seus aplicativos empresariais.
# Contribuir
Temos uma base inicial forte de Regras para detecção de recursos. Mas há muitos padrões de identificação de recursos ainda a serem definidos e convidamos você a **enviar ideias** sobre o que gostaria de ver ou tentar definir alguns. Esta é uma chance de impactar literalmente o ecossistema de código aberto, ajudando a fornecer uma ferramenta que todos possam usar. Veja a seção [Regras](https://github.com/microsoft/ApplicationInspector/wiki/3.-Understanding-Rules) do wiki para mais informações.
# Lançamentos Oficiais
O Application Inspector está em status de lançamento para PÚBLICO GERAL. Seu feedback é importante para nós. Se você estiver interessado em contribuir, revise o CONTRIBUTING.md.
O Application Inspector está disponível como ferramenta de linha de comando ou pacote NuGet e é suportado no Windows, Linux ou MacOS.
Binários específicos de plataforma do CLI ApplicationInspector estão disponíveis em nossa [página de releases](https://github.com/microsoft/ApplicationInspector/releases) no GitHub.
A biblioteca C# está disponível no NuGet como [Microsoft.CST.ApplicationInspector.Commands](https://www.nuget.org/packages/Microsoft.CST.ApplicationInspector.Commands/).
A .NET Global Tool está disponível no NuGet como [Microsoft.CST.ApplicationInspector.CLI](https://www.nuget.org/packages/Microsoft.CST.ApplicationInspector.CLI/).
Se você usar a versão .NET Core, precisará ter o .NET 6.0 ou posterior instalado. Veja os arquivos [JustRunIt.md](https://github.com/microsoft/ApplicationInspector/blob/master/JustRunIt.md) ou [Build.md](https://github.com/microsoft/ApplicationInspector/blob/master/BUILD.md) para mais informações.
# Informações de Uso da CLI
```
> appinspector --help
ApplicationInspector.CLI 1.8.4-beta+976ee3cdd1
c Microsoft Corporation. All rights reserved.
analyze Inspect source directory/file/compressed file (.tgz|zip)
against defined characteristics
tagdiff Compares unique tag values between two source paths
exporttags Export the list of tags associated with the specified rules.
Does not scan source code.
verifyrules Verify custom rules syntax is valid
packrules Combine multiple rule files into one file for ease in
distribution
help Display more information on a specific command.
version Display version information.
```
## Exemplos:
### Ajuda do Comando
Para obter ajuda para um comando específico, execute `appinspector <command> --help`.
### Comando Analyze
O Comando Analyze é o carro-chefe do Application Inspector.
#### Análise Padrão Simples
Isso produzirá um output.html da análise no diretório atual usando argumentos e regras padrão.
```
appinspector analyze -s path/to/files
```
#### Saída Sarif
```
appinspector analyze -s path/to/files -f sarif -o output.sarif
```
#### Saída Markdown
Isso criará uma saída markdown adequada para ambientes de CI com um resumo dos principais recursos.
```
appinspector analyze -s path/to/files -f markdown -o report.md
```
#### Excluindo Arquivos usando Globs
Isso criará uma saída json chamada data.json da análise no diretório atual, excluindo todos os arquivos nas pastas `test` e `.git` usando os padrões glob fornecidos.
```
appinspector analyze -s path/to/files -o data.json -f json -g **/tests/**,**/.git/**
```
### Informações Adicionais de Uso
Para ajuda adicional sobre o uso da interface do console, veja [Uso da CLI](https://github.com/microsoft/ApplicationInspector/wiki/1.-CLI-Usage).
Para ajuda sobre o uso do pacote NuGet, veja [Suporte NuGet](https://github.com/microsoft/ApplicationInspector/wiki/2.-NuGet-Support)
# Instruções de Build
Veja [build.md](https://github.com/microsoft/ApplicationInspector/blob/main/BUILD.md)
## Privacidade
O uso deste aplicativo é regido pela [Declaração de Privacidade da Microsoft](https://go.microsoft.com/fwlink/?LinkId=521839).