123 lines
11 KiB
Markdown
123 lines
11 KiB
Markdown
# 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.
|