
Paper, Daten und Code aus der Untersuchung potenzieller Sicherheitslücken-Manifestation durch verschiedene Analysen & Schlussfolgerungen bezüglich Internet-RFCs
Original-Papier und Hilfsskripte zur Analyse von Sicherheitsaspekten von Internet-RFCs.
Dieses Repository enthält eine Überprüfung der RFC-Sicherheit (im Stil eines RFC geschrieben) sowie verschiedene Python-Hilfsskripte, die verwendet wurden, um die für die zugrunde liegende Analyse erforderlichen Daten zu gewinnen und den notwendigen Cypher-Code (neo4j-Graphdatenbank) zu erzeugen, um die Graphdatenbank-Analyse des RFC-Korpus zu unterstützen.
Die Skripte in diesem Repository sind lediglich schnelle Skripte, die die für das Whitepaper benötigten Informationen extrahieren und in einem CSV-Format ablegen, das für den Import in eine neo4j-Graphdatenbank (in diesem Fall) verwendet werden kann. Die Skripte erheben keinen Anspruch auf Vollständigkeit hinsichtlich der extrahierten Daten und dienen daher nur als Beispiele/Vorlagen.
Um die E-Mail- und Veraltungsbeziehungen über RFCs hinweg zu extrahieren, führen Sie die folgenden Skripte über den RFC-Korpus aus, die CSV-Dateien der Beziehungen erzeugen:
https://github.com/m4ttl/RFC-Security-Research/blob/main/RFC%20Email%20Processing/email-Cypher.py https://github.com/m4ttl/RFC-Security-Research/blob/main/RFC%20Precedent%20Processing/parsejsoncypher.py
Importieren Sie dann die CSV-Dateien in neo4j, beispielsweise:
MERGE (rfc:RFC {name: csvLine.rfc})
MERGE (email:Email {name: csvLine.email})
CREATE (email)-[:CONTRIBUTED_TO]->(rfc)
Für die Veraltungsbeziehungen importieren Sie diese wie folgt in neo4j:
LOAD CSV WITH HEADERS FROM 'file:///standalone.csv' AS csvLine
MERGE (rfc:RFC {name: csvLine.rfc, title: csvLine.title})
LOAD CSV WITH HEADERS FROM 'file:///updated_by.csv' AS csvLine
MERGE (rfc:RFC {name: csvLine.rfc, title: csvLine.title})
MERGE (updaterfc:Updaterfc {name: csvLine.updatedby})
CREATE (rfc)-[:UPDATED_BY]->(updaterfc)
LOAD CSV WITH HEADERS FROM 'file:///updates.csv' AS csvLine
MERGE (rfc:RFC {name: csvLine.rfc, title: csvLine.title})
MERGE (updatesrfc:Updatesrfc {name: csvLine.updates})
CREATE (rfc)-[:UPDATES]->(updatesrfc)
LOAD CSV WITH HEADERS FROM 'file:///obsoleted_by.csv' AS csvLine
MERGE (rfc:RFC {name: csvLine.rfc, title: csvLine.title})
MERGE (obsoletedbyrfc:Obsoletedbyrfc {name: csvLine.obsoletedby})
CREATE (rfc)-[:OBSOLETED_BY]->(obsoletedbyrfc)
LOAD CSV WITH HEADERS FROM 'file:///obsoletes.csv' AS csvLine
MERGE (rfc:RFC {name: csvLine.rfc, title: csvLine.title})
MERGE (obsoletesrfc:Obsoletesrfc {name: csvLine.obsoletes})
CREATE (rfc)-[:OBSOLETES]->(obsoletesrfc)
Man kann dann die verschiedenen Abfragen, wie im Whitepaper dokumentiert, verwenden, um die erforderlichen Informationen abzufragen und die gewünschten verbundenen Beziehungsgraphen zu erstellen.
Zugehöriger zusammenfassender Blogbeitrag: https://research.nccgroup.com/?p=6870