Zarn
Uma análise de segurança de código estático leve para aplicativos Perl modernos
Realizando análise estática, o Zarn é capaz de identificar possíveis vulnerabilidades: para esse fim, cada arquivo é analisado usando a análise AST para reconhecer tokens que apresentam riscos e, posteriormente, executa o processo de rastreamento Taint para confirmar que é explorável ou não, para validar se um agente malicioso é capaz de direcionar o método em questão.
Atualmente, o Zarn faz uma análise de contexto de arquivo único, o que significa que não é capaz de identificar vulnerabilidades que não estão diretamente relacionadas ao arquivo que está sendo analisado. Mas, no futuro, planejamos implementar uma análise de gráficos de chamadas para identificar vulnerabilidades que não estão diretamente relacionadas ao arquivo que está sendo analisado.
Você pode ler a publicação completa sobre Zarn em: Uma ferramenta de análise de segurança estática leve para aplicativos Perl modernos.
# Download
$ git clone https://github.com/htrgouvea/zarn && cd zarn
# Install libs dependencies
$ sudo cpanm --installdeps .$ perl zarn.pl --rules rules/quick-wins.yml --source ../nozaki --sarif report.sarif
[warn] - FILE:../nozaki/lib/Functions/Helper.pm Potential: Timing Attack.
[vuln] - FILE:../nozaki/lib/Engine/Orchestrator.pm Potential: Path Traversal.
[vuln] - FILE:../nozaki/lib/Engine/Orchestrator.pm Potential: Path Traversal.
[warn] - FILE:../nozaki/lib/Engine/FuzzerThread.pm Potential: Timing Attack. rules :
- id : ' 0001 '
category : info
name : Debug module enabled
message : Debug modules can expose sensitive information and potentially create security vulnerabilities.
sample :
- Dumper
- id : ' 0002 '
category : vuln
name : Code Injection
message : Occur when untrusted data is executed as code, allowing attackers to run arbitrary commands on the server.
sample :
- system
- eval
- exec
- qx
- id : ' 0003 '
category : vuln
name : Path Traversal
message : Occur when user input is not properly sanitized, allowing attackers to access files and directories outside of the intended directory structure.
sample :
- open name : ZARN SAST
on :
push :
branches : [ "main" ]
pull_request :
branches : [ "main" ]
schedule :
- cron : " 28 23 * * 1 "
jobs :
zarn :
name : Security Static Analysis with ZARN
runs-on : ubuntu-20.04
steps :
- name : Checkout code
uses : actions/checkout@v4
- name : Perform Static Analysis
uses : htrgouvea/[email protected]
- name : Send result to Github Security
uses : github/codeql-action/upload-sarif@v3
with :
sarif_file : result.sarifSuas contribuições e sugestões são bem -vindas. Veja aqui as diretrizes de contribuição. Por favor, relate bugs via página de problemas e para problemas de segurança, consulte aqui a política de segurança. (✿ ◕‿◕) Este projeto segue este guia de estilo: (https://github.com/htrgouvea/perl-style-guide).
Este trabalho é licenciado sob licença do MIT.