Security-Seite: statische Audit-Referenz aus FH-Complete-Quellcode (benutzerberechtigung, Feldfilter basis/kontakt, foto_sperre, Modul-Pruefungen)

This commit is contained in:
Nicolas Gruber
2026-10-22 10:20:05 +02:00
parent 3af3c26304
commit 2c5278df45
+64
View File
@@ -26,4 +26,68 @@
</table>
<p class="hint" id="probe-target" style="display:none"></p>
</div>
<div class="card">
<h2>Audit-Referenz: Wo die Rechte im Quellcode sitzen</h2>
<p class="hint" style="display:block">
Das CIS basiert auf <b>FH-Complete</b> (Open Source, <span class="mono">github.com/FH-Complete</span>).
Gefunden per Source-Review statt Raten — jede Zeile = eine Prüfung, die der
Reichweiten-Check oben abdeckt oder die das <b>Weiterentwickeln</b> der Tests erlaubt.
</p>
<table class="data">
<thead><tr><th>Stelle im Code</th><th>Mechanismus</th><th>Prüfung / Beobachtung</th></tr></thead>
<tbody>
<tr>
<td class="mono">profile/index.php</td>
<td>Feld-Filter: <span class="mono">$ansicht</span> hide Geburtsdatum/-ort,
Adresse, private Kontakte bei fremdem Profil; ausser mit Recht
<span class="mono">basis/kontakt</span></td>
<td>Check&nbsp;2: grün = Code hält sich an sich selbst ✅</td>
</tr>
<tr>
<td class="mono">include/benutzerberechtigung.class.php</td>
<td>Zentrale Prüfung <span class="mono">$rechte->isBerechtigt('modul/recht', oe)</span>;
Rollen/Rechte in <span class="mono">tbl_berechtigung</span>,
<span class="mono">tbl_rolleberechtigung</span></td>
<td>Audit-Kriterium: Jede Seite mit Personen-/Plandaten MUSS diese Klasse
aufrufen — fehlender Aufruf = Fund. Unsere 4 roten Checks sind genau
die Seiten ohne wirksame Prüfung (LV-Plan, Autocomplete, bild.php,
stud_in_grp).</td>
</tr>
<tr>
<td class="mono">public/bild.php?src=person&amp;person_id=</td>
<td>Foto-Schutz nur über <span class="mono">person.foto_sperre</span>
(dann Dummy-Bild); keine Rollenprüfung, IDs fortlaufend</td>
<td>Check&nbsp;3: Foto-IDOR. FIX-Hebel für den Report: foto_sperre
default-mäßig einschalten oder Prüfung einbauen.</td>
</tr>
<tr>
<td class="mono">lvplan/stpl_week.php · stpl_kalender.php</td>
<td>Plan für beliebige <span class="mono">pers_uid</span> ohne
Berechtigungscheck</td>
<td>Check&nbsp;5: jeder Login sieht fremde Termine/Räume. Ist teils
gewollt (Raumsuche) — Meldung: Umfang dokumentieren.</td>
</tr>
<tr>
<td class="mono">lvplan/lvplan_autocomplete.php</td>
<td>Autocomplete <span class="mono">benutzer</span> liefert ganzes Directory
ohne Rollenfilter</td>
<td>Check&nbsp;1: 5735 Personen / 5 Requests.</td>
</tr>
<tr>
<td class="mono">extensions/FHC-Core-Anwesenheiten</td>
<td>Prüfungen deklariert pro Action im Controller
(<span class="mono">PermissionLib-&gt;isBerechtigt</span>)</td>
<td>Auf der Live-Instanz nicht installiert (404) — im Report als
"nicht testbar" vermerken.</td>
</tr>
<tr>
<td class="mono">extensions/FHC-Core-DSMS</td>
<td>eigenes Datenschutz-Modul der Plattform</td>
<td>Belegt: Feldebene ist eine konfigurierte Funktion, kein Bug —
ihre Korrektheit ist genau das, was Check&nbsp;2 dynamisch validiert.</td>
</tr>
</tbody>
</table>
</div>
{% endblock %}