
Paper, dati e codice relativi all'indagine sulla manifestazione di potenziali vulnerabilità di sicurezza attraverso varie analisi e inferenze riguardanti le RFC Internet.
Articolo originale e script di supporto per analizzare gli aspetti di sicurezza degli RFC Internet.
Questo repository contiene una revisione della sicurezza degli RFC (scritta nello stile di un RFC), oltre a vari script Python di supporto utilizzati per ottenere i dati necessari all'analisi sottostante e per generare il codice Cypher (database a grafi neo4j) necessario a supportare l'analisi del corpus degli RFC tramite database a grafi.
Gli script in questo repo sono semplici script rapidi che estraggono le informazioni necessarie per il whitepaper e le inseriscono in un formato CSV che può essere utilizzato per l'importazione in un database a grafi neo4j (in questo caso). Gli script non sono in alcun modo esaustivi in termini di dati estratti e quindi servono solo come esempi/modelli.
Per estrarre le relazioni di email e obsolescenza tra gli RFC, esegui i seguenti script sul corpus degli RFC, che genereranno file CSV delle relazioni:
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
Quindi importa i file CSV in neo4j, ad esempio:
MERGE (rfc:RFC {name: csvLine.rfc})
MERGE (email:Email {name: csvLine.email})
CREATE (email)-[:CONTRIBUTED_TO]->(rfc)
Per le relazioni di obsolescenza, importale in neo4j, ad esempio:
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)
Si possono quindi utilizzare le varie query come documentato nel whitepaper per interrogare le informazioni necessarie e creare i grafi connessi di relazioni desiderati.
Post di blog di riepilogo correlato: https://research.nccgroup.com/?p=6870