
ورقة بحثية وبيانات وشفرة برمجية من استقصاء ظهور الثغرات الأمنية المحتملة عبر تحليلات واستدلالات متنوعة بشأن RFC للإنترنت
ورقة بحثية أصلية ونصوص مساعدة للمساعدة في تحليل الجوانب الأمنية لمعايير الإنترنت RFC.
يستضيف هذا المستودع مراجعة لأمان RFC (مكتوبة بأسلوب RFC)، بالإضافة إلى العديد من النصوص البرمجية المساعدة بلغة بايثون التي استُخدمت للحصول على البيانات اللازمة للتحليل الأساسي، وتوليد كود Cypher (قاعدة بيانات الرسم البياني neo4j) الضروري لدعم تحليل قاعدة البيانات الرسومية لمجموعة مستندات RFC.
النصوص البرمجية في هذا المستودع هي مجرد نصوص سريعة تستخرج المعلومات اللازمة للورقة البيضاء، وتضعها في صيغة CSV يمكن استخدامها للاستيراد إلى قاعدة بيانات رسومية neo4j (في هذه الحالة). هذه النصوص ليست شاملة بأي حال من الأحوال من حيث البيانات المستخرجة، لذا فهي تُستخدم كأمثلة/قوالب فقط.
لاستخراج علاقات البريد الإلكتروني والتقادم عبر RFCs، قم بتشغيل النصوص البرمجية التالية على مجموعة مستندات 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)
يمكن للمستخدم بعد ذلك استخدام الاستعلامات المختلفة الموثقة في الورقة البيضاء للاستعلام عن المعلومات اللازمة وإنشاء الرسوم البيانية المتصلة المطلوبة للعلاقات.
منشور مدونة مختصر ذو صلة: https://research.nccgroup.com/?p=6870