
Статья, данные и код исследования проявления потенциальных уязвимостей безопасности с помощью различных анализов и выводов об интернет-RFC
Оригинальная статья и вспомогательные скрипты для анализа аспектов безопасности интернет-RFC.
В этом репозитории представлен обзор безопасности RFC (написанный в стиле RFC), а также различные вспомогательные Python-скрипты, которые использовались для получения данных, необходимых для анализа, и для генерации кода Cypher (графовая база данных neo4j) с целью поддержки анализа корпуса RFC в графовой базе данных.
Скрипты в этом репозитории — это просто быстрые скрипты, которые извлекают информацию, необходимую для whitepaper, и сохраняют её в формате CSV, пригодном для импорта в графовую базу данных neo4j (в данном случае). Скрипты ни в коей мере не исчерпывают извлекаемые данные, поэтому они служат лишь примерами/шаблонами.
Чтобы извлечь отношения по электронной почте и устареванию между RFC, выполните следующие скрипты по корпусу RFC; они сгенерируют CSV-файлы отношений:
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
Затем импортируйте CSV-файлы в neo4j, например:
MERGE (rfc:RFC {name: csvLine.rfc})
MERGE (email:Email {name: csvLine.email})
CREATE (email)-[:CONTRIBUTED_TO]->(rfc)
Для отношений устаревания импортируйте их в 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)
Затем можно использовать различные запросы, описанные в whitepaper, чтобы получить необходимую информацию и создать желаемые связанные графы отношений.
Связанная сводная статья в блоге: https://research.nccgroup.com/?p=6870