feat: vendorizar as 10 skills do pilar de seguranca em skills/

Copia local (nao fork, nao submodule) de safedeps, sca-audit,
secrets-scan, code-review-security, api-security-review,
web-security-review, cve-triage, patch-prioritization,
dependency-scanning e hermaguard -- commit exato de origem e licenca
de cada uma em skills/NOTICE.md. Elimina o passo de clone externo
pro pilar de seguranca do wf-security-review: git clone deste repo
ja traz tudo funcional.

Corrige tambem o comando de instalacao pro Claude Code nos dois
READMEs e no docs/SKILLS.md: Claude Code exige um diretorio por
skill (skills/<nome>/SKILL.md), nao aceita os .md soltos que o
comando antigo copiava -- confirmado testando a instalacao real.
This commit is contained in:
evandrodevbr committed 2026-08-24 00:32:20 -03:00
1 parent ee44fa0f7a
commit c17192c9fe
130 files changed
+10533 -33

No files matched your search

@@ -0,0 +1,4 @@
def reset_password(request, user_id: int):
new_pw = request.json["password"]
db.execute("UPDATE users SET pw = ? WHERE id = ?", (hash(new_pw), user_id))
db.commit()
@@ -0,0 +1,18 @@
{
"title": "State-changing route without authentication",
"description": "POST handler has no session check; anonymous requests reset any account.",
"severity": "CRITICAL",
"category": "security",
"findings": [
{
"file": "app.py",
"trigger": "state-changing handler without session/auth check",
"description": "Account takeover by anonymous callers",
"severity": "CRITICAL",
"classes": [
"CWE-306",
"CWE-287"
]
}
]
}
@@ -0,0 +1,6 @@
--- a/app.py
+++ b/app.py
def reset_password(request, user_id: int):
- if not request.session.get("user"):
- raise PermissionError("login required")
new_pw = request.json["password"]