
Artículo, datos y código de la investigación sobre la manifestación de posibles vulnerabilidades de seguridad mediante diversos análisis e inferencias en relación con los RFC de Internet
Documento original y scripts auxiliares para ayudar a analizar los aspectos de seguridad de los RFC de Internet.
Este repositorio alberga una revisión de la seguridad de los RFC (redactada al estilo de un RFC), además de varios scripts auxiliares de Python que se utilizaron para obtener los datos necesarios para el análisis subyacente y para generar el código Cypher (base de datos de grafos neo4j) necesario para respaldar el análisis de la base de datos de grafos del corpus de RFC.
Los scripts de este repositorio son meros scripts rápidos que extraen la información necesaria para el documento técnico y la colocan en un formato CSV que puede importarse en una base de datos de grafos neo4j (en este caso). Los scripts no son en absoluto exhaustivos en cuanto a los datos extraídos, por lo que sirven únicamente como ejemplos/plantillas.
Para extraer las relaciones de correo electrónico y obsolescencia entre los RFC, ejecute los siguientes scripts en el corpus de RFC, que generarán archivos CSV de las relaciones:
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
A continuación, importe los archivos CSV en neo4j, por ejemplo:
MERGE (rfc:RFC {name: csvLine.rfc})
MERGE (email:Email {name: csvLine.email})
CREATE (email)-[:CONTRIBUTED_TO]->(rfc)
Para las relaciones de obsolescencia, impórtelas en neo4j de la siguiente manera:
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)
A continuación, se pueden utilizar las distintas consultas documentadas en el documento técnico para obtener la información necesaria y crear los grafos de relaciones conectados deseados.
Publicación de blog de resumen relacionada: https://research.nccgroup.com/?p=6870