2 Commits

Author SHA1 Message Date
pm dd94920955 Merge pull request 'owasp zap config' (#8) from teste-bloqueio into main
DevSecOps Enterprise Pipeline / security-gate-and-deploy (push) Failing after 53s
Reviewed-on: #8
2026-06-12 23:36:56 +00:00
pm 745c8b4e71 owasp zap config
DevSecOps Enterprise Pipeline / security-gate-and-deploy (pull_request) Successful in 45s
2026-06-13 00:34:35 +01:00
3 changed files with 27 additions and 12 deletions
+11 -12
View File
@@ -59,31 +59,30 @@ jobs:
- name: 5. Dynamic Security Scan (OWASP ZAP)
if: github.event_name == 'push'
run: |
echo ">>> Creating isolated network for DAST..."
docker network create zap-net
echo ">>> Provisioning ephemeral sandbox environment..."
docker rm -f apex-sandbox || true
docker run -d --name apex-sandbox apex-solutions:latest
sleep 5
docker run -d --name apex-sandbox --network zap-net apex-solutions:latest
sleep 10 # Aumentei para 10s para garantir que o Node arranca bem
echo ">>> Initiating OWASP ZAP Baseline Scan..."
mkdir -p qatests
docker rm -f zap-scanner || true
docker volume rm zap-reports || true
docker volume create zap-reports
# O ZAP precisa de aceder ao contentor pela rede criada
docker run --user root --name zap-scanner \
--link apex-sandbox:apex-sandbox \
--network zap-net \
-v zap-reports:/zap/wrk/:rw \
-t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \
-t http://apex-sandbox:3000 \
-r report.html \
-I
-I -c zap-baseline.conf
docker cp zap-scanner:/zap/wrk/report.html qatests/report.html || true
echo ">>> Decommissioning ephemeral sandbox..."
docker rm -f zap-scanner || true
docker volume rm zap-reports || true
docker rm -f apex-sandbox || true
echo ">>> Decommissioning ephemeral sandbox and network..."
docker rm -f zap-scanner apex-sandbox || true
docker network rm zap-net || true
- name: 6. Production Deployment & Local Reports
if: github.event_name == 'push'
+14
View File
@@ -23,6 +23,20 @@ app.get('/about', (req, res) => res.sendFile(path.join(__dirname, '../frontend/a
app.get('/careers', (req, res) => res.sendFile(path.join(__dirname, '../frontend/careers.html')));
app.get('/contact', (req, res) => res.sendFile(path.join(__dirname, '../frontend/contact.html')));
// Rota de Pesquisa Vulnerável a Reflected XSS (Armadilha para o OWASP ZAP)
app.get('/api/search', (req, res) => {
const termoPesquisa = req.query.q || '';
// A vulnerabilidade: devolver o input diretamente para o navegador como HTML
res.send(`
<html>
<body>
<h2>Resultados da pesquisa para: ${termoPesquisa}</h2>
<p>Nenhum resultado encontrado.</p>
</body>
</html>
`);
});
// Configuração do transporte de E-mail
let transporter;
+2
View File
@@ -0,0 +1,2 @@
# Bloqueia a pipeline se encontrar algo grave
FAIL_ON_SEVERITY: HIGH