Visando a melhorar a segurança de suas aplicações, os responsáveis pela empresa XPTO decidiram contratar uma empresa para fazer a análise do código fonte. A consultoria utilizou uma ferramenta que fez a análise automática do código fonte e indicou o seguinte código como vulnerável: <?php $db = new SQLite3('test.db'); $count = $db->querySingle('select count(*) from secrets where id = ' . $_GET['id']); echo "O resultado é: ".$count; Baseado no resultado, assinale a opção que mostra corretamente: o nome da categoria a que pertence a ferramenta e a categoria da vulnerabilidade.
- A)Dynamic Application Security Testing (DAST) e Cross-site Scripting
Errada, porque DAST analisa a aplicação em execução, não o código-fonte, e o erro do trecho não é Cross-site Scripting, mas sim uma injeção em consulta SQL.
- B)Static Application Security Testing (SAST) e SQL Injection
Certa, porque a ferramenta fez análise estática do código-fonte, o que caracteriza SAST, e a concatenação de entrada do usuário na query configura SQL Injection.
- C)Interactive Application Security Testing (IAST) e Buffer Overflow
Errada, porque IAST não é a categoria indicada pela análise apenas do código-fonte, e Buffer Overflow não tem relação com a falha mostrada no comando SQL.
- D)Dynamic Application Security Testing (DAST) e SQL Injection
Errada, porque embora SQL Injection seja a vulnerabilidade correta, a ferramenta descrita não é DAST, já que não houve teste da aplicação em execução.
- E)Interactive Application Security Testing (IAST) e Cross-site Scripting
Errada, porque IAST não corresponde a uma análise exclusivamente do código-fonte, e o problema do exemplo não é Cross-site Scripting.
Gabarito: B
A questão mistura dois conceitos clássicos de segurança de aplicações: o tipo de ferramenta e o tipo de falha encontrada no código. Quando a ferramenta analisa o código-fonte sem executar a aplicação, ela está fazendo uma análise estática, isto é, uma varredura do código em busca de padrões inseguros. Isso é exatamente o que faz o Static Application Security Testing (SAST). No trecho mostrado, o problema está em concatenar diretamente o valor vindo de $_GET['id'] dentro da consulta SQL. Esse tipo de montagem abre espaço para SQL Injection, porque um atacante pode tentar alterar a consulta original e manipular o banco de dados. Em prova, sempre desconfie quando a entrada do usuário vai parar em uma query sem tratamento adequado. Por isso, o gabarito B está correto: SAST identifica vulnerabilidades olhando o código, e a falha exibida é SQL Injection. Se o código usasse consultas parametrizadas ou prepared statements, a história ficaria bem menos dramática para o banco. A FGV gosta de cobrar a diferença entre SAST, DAST e IAST. DAST testa a aplicação em execução, de fora para dentro; IAST combina observação em tempo de execução com análise interna; já SAST olha o código antes da execução. Aqui, como a consultoria analisou o código fonte automaticamente, não há dúvida de que é SAST.