Assessor_2.0/reports/pingcastle-audit-2026-09-09/PRUEFBERICHT.md

123 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PingCastle-Importprüfung
## Nachtrag: Punkte 1–3 umgesetzt und verifiziert
9. September 2026, PingCastle-Profil **1.5.0**, Extractor **2.2.0**,
HTML/XML-Formatadapter **1.1.0**. Der ursprüngliche Prüfstand darunter bleibt
als historische Diagnose erhalten.
- XML: Alle 403 Attribute außerhalb der RiskRules sind einzeln mit Originalwert
und Attributpfad vorhanden, außerdem alle 70 explizit leeren Blätter.
Zusammen mit den 664 Textwerten entstehen 1.137 Kontextbeobachtungen.
- HTML: Alle 125 Tabellen und 1.513 Kontextbeobachtungen bleiben erhalten.
Die 47 verunreinigten Kontextzellen, 3 Finding-Details und 16 verknüpften
Detailzell-Vorkommen enthalten keine technischen Attributreste mehr.
Eine unabhängige HTML-Strukturzählung bestätigt unveränderte Elementanzahlen
vor und nach dem Schutz zitierter Attribute.
- Fehlende Rule IDs scheitern explizit. Dubletten sowie ungültige oder
abweichende Kategorie-Trefferzahlen erzeugen Diagnosen; die bisherige erste
Darstellung bleibt erhalten. Originalzähler und errechnete eindeutige Treffer
stehen in einem zusätzlichen Bilanzabschnitt: insgesamt 18 statt 17 Abschnitte,
ohne die Environment- oder Findingzahl zu erhöhen.
- Beide Formate liefern weiterhin dieselben 37 Regeln mit identischem Status,
Regelpunkten und abgeleiteter Severity. Bekannte Quellgrenzen bleiben sichtbar:
ein unaufgelöster HTML-Verweis und die XML-Results-Warnung.
21 neue synthetische Regressionen; `npm test`: 1.096 bestanden, acht optionale
PostgreSQL-Tests übersprungen, Sicherheits-/Designprüfung erfolgreich.
`npm run build`: Client und Server erfolgreich, bestehender Bundlegrößenhinweis.
Der produktive Parse-only-HTTP-Pfad bestätigt Profil und Zahlen; App, Backend
und Proxy antworten mit HTTP 200. Der kanonische PostgreSQL-Datastore wurde vor
dem Backend-Neustart geprüft; die Repositoryrevision blieb während des
Parse-Abgleichs unverändert. Keine Importdaten gespeichert oder ersetzt,
keine Schemaänderung. Temporäre Dummy-Prüfdatei entfernt.
Bestehende Importe benötigen einen expliziten Reimport. Punkte 4–5
(semantisches XML-Kontextmapping und Control-Path-JSON) sind nicht Teil dieser
Freigabe und bleiben offen. Die Schutzregeln stehen in `AGENTS.md`,
`SECURITY.md` und `docs/IMPORT_SECURITY_LIMITS.md`.
## Historischer Prüfstand vor der Korrektur
Stand: 9. September 2026. Assessor-Profil 1.4.0, Extractor 2.1.0. Prüfung, keine Implementierung oder Bestandsänderung. Einordnung: Phase 13A/13C.
## Ergebnis
**Die 37 ausgelösten Regeln sind vollständig und korrekt übernommen. Der gesamte Berichtskontext ist noch nicht vollständig beziehungsweise unverfälscht nutzbar.**
HTML und XML ergeben jeweils 37 eindeutige Regel-IDs und 37 kanonische Vorkommen. Titel, Regelpunkte, Status, Domain-Risiko und zugeordneter Kategoriescore stimmen für jede Regel überein. Browser- und Server-Adapter liefern dieselben Kandidaten und Kontextbeobachtungen. Beide kanonischen Modelle bestehen die Strukturvalidierung.
Die unabhängig aus den Originalen gezählten Treffer sind Stale Objects 10, Privileged Accounts 7, Trusts 0 und Anomalies 20. Die daneben genannten 187 Katalogregeln sind **keine 187 vorhandenen Einzeltestergebnisse**. Assessor leitet aus den Regelpunkten in beiden Formaten 8 Medium, 13 Low und 16 Info ab; das ist keine native PingCastle-Severity. Native Risikowerte: Domain 100, Stale Objects 31, Privileged Accounts 85, Trusts 0 und Anomalies 100.
## Was zu korrigieren wäre
### P1: XML-Attribute und explizite Leere erhalten
Außerhalb der RiskRules enthält XML 758 Blattelemente: 664 mit nichtleerem Text, 24 ohne Text mit Attributen und 70 ohne beides. Nur die 664 Textwerte werden kanonische Kontextbeobachtungen. Die 24 attributtragenden Elemente bestehen aus 16 CertificateTemplateRights, 4 Verteilungsdatensätzen und 4 Control-Path-Analysewerten. Auch die 70 ausdrücklich leeren Elemente fehlen als Zustände.
Das betrifft die strukturierte Projektion, nicht die Existenz des ursprünglichen Rohdokuments. Attribute werden im generischen XML-Zwischenmodell noch geführt. `xmlCandidates` verwirft jedoch Kontextknoten ohne Text und übernimmt die Attribute der übrigen Knoten ebenfalls nicht in die Kontextwerte. Folge: Berechtigungs-/Verteilungsinformationen und die Unterscheidung zwischen leer und nicht erhoben sind nicht vollständig nutzbar.
Korrektur: Originalattribute mit genauen Quellpfaden erhalten, Attribute separat typisieren und leere Sammlungen ausdrücklich kennzeichnen. Sicherheit der Feststellung: hoch.
### P1: HTML-Zelltext und Finding-Details sauber extrahieren
47 Kontextzellen enthalten technische Attributreste. Zusätzlich sind 3 Finding-Details sowie 16 Zellen verknüpfter Detailtabellen betroffen; die 16 zählen Vorkommen und nicht zwingend unterschiedliche Quellzellen.
Die lexikalischen Tag-/Zellregulärausdrücke sind gegenüber spitzen Klammern innerhalb zitierter Attribute nicht robust. Eine ausschließlich präsentative Bereinigung repariert keine bereits verunreinigten strukturierten Werte.
Korrektur: Attributgrenzen zuverlässig erkennen, sichtbaren Text vom Originalmarkup trennen und dieselbe Regel für Kontext und Finding-Details verwenden. Sicherheit: hoch.
### P1: Stille Nullbefunde, falsche Zähler und Dubletten diagnostizieren
Die Originaldateien haben keine fehlenden IDs oder widersprüchlichen Trefferzahlen. Drei zusätzliche synthetische Gegenproben belegen jedoch fehlende Schutzprüfungen:
- Ein angekündigter Treffer mit leerer Rule ID: 0 Kandidaten, `complete`, keine Diagnose.
- Zwei angekündigte Treffer mit einem Regelblock: 1 Kandidat, `complete`, keine Diagnose.
- Zwei Regelblöcke mit derselben ID: still auf 1 Kandidaten reduziert, `complete`, keine Diagnose.
Korrektur: Trefferzahlen je Kategorie gegen Einzelregeln abgleichen; fehlende IDs und doppelte IDs explizit behandeln. Keine Regeln verwerfen, um eine Summe passend zu machen. Sicherheit: hoch; die Relevanz für künftige Exporte ist durch synthetische Fälle belegt, nicht als Fehler dieses Dummy-Paares behauptet.
### P2: XML auf denselben Kontextvertrag wie HTML abbilden
HTML liefert 1.513 Beobachtungen in 17 Abschnitten, XML 664 in einem Sammelabschnitt. Diese Mengen haben unterschiedliche Körnung und sind keine unmittelbar vergleichbaren Vollständigkeitsquoten.
Beim XML liegen alle Eigenschaften unter `pingcastle.xml.*`. Gemeinsame Eigenschaften wie `domain.fqdn`, `risk.domain` und `report.engine_version` fehlen. Die entsprechenden Client-Info-Selektoren können die vorhandenen Quelldaten daher nicht gleichwertig nutzen. Die kanonische Toolversion bleibt beim XML leer.
Korrektur: fachlich äquivalente HTML-/XML-Werte auf dieselben Eigenschaften abbilden und zugleich ursprüngliche Werte und Pfade behalten. Sicherheit: hoch.
### P2: Control-Path-JSON erhalten
HTML enthält 27 gültige `application/json`-Blöcke: 26 Graphen mit insgesamt 255 Knoten- und 229 Kanten-Vorkommen sowie ein Beziehungserklärungs-Wörterbuch. Diese Strukturen werden vom PingCastle-Extractor nicht eigenständig übernommen. Die Summen sind **keine deduplizierte AD-Assetanzahl**. Vorhandene Tabellen können Teile derselben Information enthalten, ersetzen aber nicht die Knoten-Kanten-Beziehungen.
Korrektur: ausschließlich statisches JSON lesen, Struktur und Referenzen validieren und mit Provenienz erhalten. Keine Berichtsskripte ausführen. Eine zusätzliche graphische Darstellung ist eine gesonderte Produktentscheidung. Sicherheit: hoch.
## Kein Assessor-Fehler: fehlendes Ankerziel
Ein HTML-Detailverweis auf `HardenedPaths` hat im Original kein entsprechendes Ziel. Assessor meldet ihn korrekt als unaufgelöst. Es darf kein vermeintlich passender Zielabschnitt erfunden werden.
Bei Textvergleichen festgestellte Absatzunterschiede wurden nicht pauschal als Inhaltsverlust ausgegeben: überwiegend handelte es sich um Whitespace oder zusätzliche Inhalte gegenüber dem ersten DOM-Absatz.
## Verifikation und Grenzen
- Unabhängige native Regelzählung und ID-Abgleich, zusätzlich XML-Vergleich sämtlicher 37 Rationale-, Points-, Category- und Model-Werte.
- Produktive Importpipeline durch Browser-/Server-Adapter und kanonische Modellvalidierung.
- Laufendes Backend über den nicht speichernden Parse-Endpunkt: beide Dateien HTTP 200, je 37 Kandidaten; HTML 1.513 Kontextbeobachtungen/17 Abschnitte, XML 664/1. Repositoryrevision vor und nach der Prüfung unverändert.
- 34 vorhandene fokussierte Tests bestanden; ein zusätzlicher temporärer Test führte die drei oben beschriebenen Gegenproben aus. Temporäre Testdateien entfernt.
- Ein erweiterter unabhängiger DOM-Auditlauf überschritt unter Last sein Zeitlimit, nachdem er die Auswertung ausgegeben hatte. Ein vorheriger Kernabgleich war erfolgreich. Keine Performance-Aussage aus diesen Auditlaufzeiten.
- Keine vollständige visuelle UI-Abnahme, keine Aussage über alle PingCastle-Versionen, keine Migration, kein Reimport und keine Produktionscodeänderung. Aus einem Berichtspaar lässt sich kein zeitlicher Trend ableiten.
## Empfohlene Reihenfolge
Zuerst XML-Werterhalt, HTML-Textbereinigung und Vollständigkeitsdiagnosen; anschließend einheitliche Kontextabbildung und Control-Path-Daten. Danach synthetische Regressionen, denselben Dummy erneut abgleichen, Verarbeitung versionieren und erst auf Freigabe bestehende Importe ersetzen. HTML und XML nicht ungeprüft als doppelte Scans importieren oder automatisch miteinander verschmelzen.
## Quellen und Reproduzierbarkeit
- [Freigegebenes HTML](<C:/Users/milu/OneDrive - Exxeta/OC_SOC - General/Projekt Assessor/Dummy-Scans/PingCastle/ad_hc_sevenkingdoms.local.html>)
- [Freigegebenes XML](<C:/Users/milu/OneDrive - Exxeta/OC_SOC - General/Projekt Assessor/Dummy-Scans/PingCastle/ad_hc_sevenkingdoms.local.xml>)
- [Native Quellextraktion](<C:/Users/milu/OneDrive - Exxeta/Dokumente/VS CODE/ASSESSOR-2-5/src/importers/pingcastle-source-extractor.ts:586>)
- [XML-Kontextprojektion](<C:/Users/milu/OneDrive - Exxeta/Dokumente/VS CODE/ASSESSOR-2-5/src/importers/pingcastle-source-extractor.ts:1229>)
- [Lexikalische HTML-Extraktion](<C:/Users/milu/OneDrive - Exxeta/Dokumente/VS CODE/ASSESSOR-2-5/src/importers/html-extraction.ts:404>)
- [Strukturierte Prüfergebnisse und XML-Zählkern](<C:/Users/milu/OneDrive - Exxeta/Dokumente/VS CODE/ASSESSOR-2-5/reports/pingcastle-audit-2026-09-09/artifact.json>)
Der Datenqualitäts-Skill führte zur unabhängigen Quellenzählung statt einer bloßen Erfolgsprüfung. Der zusätzliche Build-report-/Visualize-data-Ausgabeweg ist blockiert: Gehostete Ausgabe ist wegen der projektspezifischen Local-only-Regel ausgeschlossen. Der lokale Portable-Builder verlangt für Diagramme tatsächlich SQL-förmige Provenienz und lehnt die hier ausgeführte JavaScript/XML-Auswertung ab. Eine SQL-Abfrage wurde nicht erfunden. Daher liegt dieses Markdown-Prüfprotokoll vor, kein gerenderter HTML-Prüfbericht. Dies betrifft ausschließlich die Darstellung dieses Prüfprotokolls, **nicht** die erfolgreich geprüfte PingCastle-HTML-Importfunktion. Es wurden keine Daten extern hochgeladen.