Skip to content
Back to skills

Pulse Security Audit

ASecurity

Sicherheitsprüfung von Pulse-Änderungen oder eines Bereichs – serverseitige Autorisierung jeder Dashboard-/Admin-Route, Same-Origin/CSRF, Sessions/Cookies, Eingabevalidierung, Pfad-/Upload-Sicherheit, XSS im HTML-Rendering, Secrets und Discord-Aktionen. Verwenden vor Merge sicherheitsrelevanter Änderungen oder bei Verdacht auf eine Lücke. Ändert keine Dateien.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
securitygoshellsqlgitapisecurity

Works with

  • cli
  • api

Security analysis

A100/100

Scanned November 7, 2026

npx -y skills add NicoPinguinDEV/Pulse --skill pulse-security-audit --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Pulse Security Audit?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Pulse Security Audit
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nicopinguindev-pulse-security-audit/badge)](https://www.skillsdirectory.com/skills/nicopinguindev-pulse-security-audit)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: pulse-security-audit
description: Sicherheitsprüfung von Pulse-Änderungen oder eines Bereichs – serverseitige Autorisierung jeder Dashboard-/Admin-Route, Same-Origin/CSRF, Sessions/Cookies, Eingabevalidierung, Pfad-/Upload-Sicherheit, XSS im HTML-Rendering, Secrets und Discord-Aktionen. Verwenden vor Merge sicherheitsrelevanter Änderungen oder bei Verdacht auf eine Lücke. Ändert keine Dateien.
argument-hint: [diff | Datei/Route/Bereich]
disallowed-tools: Edit, Write, NotebookEdit
disable-model-invocation: true
---

# Pulse-Security-Audit (nur lesen)

Keine Exploits gegen den VPS oder fremde Systeme, keine echten Discord-/OAuth-Aufrufe, `.env` nicht lesen, keine Secrets ausgeben (nur Fundstelle + Art nennen). Befunde mit Testfall belegen, wo möglich (TestClient/Mocks, nur lokal).

## Umfang
- Kein Argument / `diff`: `git diff main...HEAD` + unversionierte Dateien.
- Datei/Route/Bereich: gezielt dort, inkl. aller Registrierungen derselben Route (`grep -n '"<pfad>"' webserver.py pulse_*.py`) – `pulse_pro` u. a. ersetzen Handler zur Laufzeit.
- Nur geänderte Funktionen und ihre direkten Aufrufer lesen; die Suche nur entlang eines konkreten Datenflusses (Eingabe → Senke) erweitern. Kein Vollscan.

## Prüfliste
1. **Autorisierung (Regel 4):** Jede GET/POST-Route ruft `auth(request, user_session, perm=…, admin=…)` (bzw. `cctx` in `pulse_pro`) **vor** jeder Daten- oder Discord-Aktion. Passender `perm`-Schlüssel aus `PERM_KEYS`; Admin-Aktionen mit `admin=True`. Mehrstufige Aktionen (`/action` mit `action=…`) prüfen die Zuordnung Aktion → Recht (Tabelle bei `"set_weekly_goal": "admin"`). UI-Ausblendung zählt nicht.
2. **Rollenhierarchie:** Rollen vergeben/entziehen nur unterhalb der eigenen und der Bot-Rolle; Team-Kick entfernt nur Rollen (Regel 5).
3. **Same-Origin/CSRF:** `pulse_security.same_origin_ok` greift für zustandsändernde Methoden; keine neuen Ausnahmen ohne Begründung. Keine zustandsändernden GET-Routen.
4. **Sessions/Cookies/API-Keys:** `pulse_sessions` – Ablauf, Widerruf, `HttpOnly`/`Secure`/`SameSite`, konstante Vergleiche (`hmac.compare_digest`, vgl. `webserver.py`), keine Tokens in URLs/Logs.
5. **Eingaben/IDOR/Injection:** Typ-/Bereichsprüfung serverseitig (Browser-`min/max` umgehbar), Längenlimits. Objekt-IDs (Ticket, Akte, Schicht, Mitglied) gegen Guild **und** Recht des Nutzers prüfen. SQLite nur parametrisiert, keine f-Strings in SQL; kein `eval`/`pickle`/`shell=True` mit Eingaben.
5a. **SSRF/externe Provider:** Keine frei wählbaren URLs serverseitig abrufen (Webhooks, Bilder, KI-Provider) ohne Schema-/Host-Prüfung; Timeouts setzen; Ausfall/403/404/429 darf keine Daten verlieren oder Endlos-Retries auslösen.
5b. **Discord-Rechte:** Bot-Aktionen prüfen vorher Bot-Rechte und Rollenposition; Fehler (`Forbidden`, `NotFound`, `HTTPException`) werden sauber gemeldet.
6. **XSS:** Nutzer-/Discord-Inhalte im HTML immer über `esc(...)`; auch Attribute, `onclick`, Inline-`<script>`-Daten (JSON → `json.dumps` + Escape von `</`).
7. **Pfade/Uploads/Backups:** Keine Pfade aus Eingaben ohne Normalisierung + Basisverzeichnis-Prüfung; Zip-Entpacken über `pulse_backup._safe_member`; Upload-Typ/Größe begrenzt (`pulse_uploads`).
8. **Befehle/Host-Agent:** Server Control Center / `deploy/pulse_host_agent.py`: feste Befehlsliste, kein `shell=True` mit Eingaben, Bestätigung für Deploy/Rollback/Neustart.
9. **Rate-Limits/DoS:** Login/OAuth/öffentliche Endpunkte begrenzt, Limiter selbst speicherbegrenzt.
10. **Secrets/Logs:** Keine Tokens/Webhook-URLs in Code, Tests, Logs oder Fehlermeldungen; `.gitignore` deckt Laufzeitdaten ab.
11. **KI/AutoMod:** Keine automatische Sanktion allein durch KI; Features nicht still produktiv aktiviert (Regel 6).

## Ergebnis (Deutsch)
Je Befund: Schwere (kritisch/hoch/mittel/niedrig), `datei:zeile`, Angriffsvoraussetzung (wer, welche Rolle, welche Anfrage), Wirkung, belegt oder Vermutung, Fix-Vorschlag und Regressionstest (inkl. „keine Schreibaktion bei Ablehnung“). Geprüfte, aber unbegründete Verdachtsfälle als **False Positive** mit Grund kennzeichnen. Danach die ausgeführten Tests mit echtem Ergebnis. Nie behaupten, Pulse sei vollständig sicher – nur, was im geprüften Umfang gefunden wurde.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.