Полное название: Предварительная оценка вероятности наличия уязвимостей в программах в двоичном представлении с учетом семантики средствами нейронных сетей.
Предварительная оценка вероятности наличия уязвимостей (vulnerability prediction, VP) в бинарных программах с использованием статического анализа является популярной темой исследований. Традиционные методы VP основаны на применении шаблонов уязвимостей, которые требуют трудоемкой разработки шаблонов уязвимостей силами экспертами по безопасности. Развитие искусственного интеллекта (ИИ) открыло новые возможности для VP.
Нейронные сети позволяют обучать шаблоны уязвимостей автоматически. Тем не менее, в современных исследованиях рассматриваются только один или два типа функций и используются традиционные модели, например, word2vec, которые не учитывают большое количество информации на уровне инструкций. В этой статье предлагается модель SAViP для VP в бинарных программах.
4 Оценка
4.1 Набор данных
Почти во всех исследованиях по обнаружению уязвимостей используются наборы данных, подготовленные авторами этих работ, а исходный код не публикуется. Тем не менее, чтобы лучше оценить данную работу, авторы данного исследования попытались воспроизвести весь проект V-Fuzz и провести с ним сравнение. Поэтому для обучения и тестирования данной модели использовался набор тестов Juliet (v1.3) [18], который широко применяется в других исследованиях, связанных с уязвимостями [5,12,41]. Этот набор данных опубликован Национальным институтом стандартов и технологий (NIST) в 2017 году и включает в себя 118 различных типов уязвимостей (Common Weakness Enumeration, CWE) и 64 099 тестовых примеров. Все тестовые сценарии написаны на C/C++, и каждая функция помечена как «хорошая» или «плохая», где «хорошая» означает «безопасная», а «плохая» означает «уязвимую». Среди 118 объектов CWE в наборе тестов Juliet отбираются 12 объектов, связанных с памятью, чтобы лучше сравнить предлагаемую модель с V-Fuzz, которая использует те же самые CWE. В наборе тестов Juliet функции подразделяются на «источники» и «приемники». Функции-источники генерируют данные, а функции-приемники, которые более тесно связаны со программными сбоями, используют эти данные. Таким образом, выбираются функции-приемники и создается нужный набор данных. Конкретные типы CWE и количество помеченных функций представлены в таблице 3.
Таблица 3 – Виды CWE
Тип идентификатора | CWE | #Secure | #Vulnerable | Всего |
121 | Stack Based Buffer Overflow | 7947 | 9553 | 17,300 |
122 | Heap Based Buffer Overflow | 10,090 | 11,049 | 21,139 |
124 | Buffer Under Write | 3524 | 3894 | 7418 |
126 | Buffer Over Read | 2678 | 2672 | 5350 |
127 | Buffer Under Read | 3524 | 3894 | 7418 |
134 | Uncontrolled Format String | 11,120 | 8100 | 19,220 |
190 | Integer Overflow | 9300 | 5324 | 14,624 |
401 | Memory Leak | 5100 | 1884 | 6984 |
415 | Double Free | 2810 | 1786 | 4596 |
416 | Use After Free | 1432 | 544 | 1976 |
590 | Free Memory Not On The Heap | 3819 | 5058 | 8877 |
761 | Free Pointer Not At Start | 1104 | 910 | 2014 |
Итого | 62,448 | 54,468 | 116,916 |
Чтобы одинаково обучить модель данному типу уязвимостей, в каждую CWE включено одинаковое количество положительных и отрицательных примеров. Если их общее число меньше заданного, то для завершения формирования набора данных добавляются примеры из общих устаревших данных. В таблице 4 представлен объем каждого набора данных. В общей сложности имеется по 22 000 положительных и отрицательных примеров; в обучающем наборе (TRAIN-DATA) содержится по 18 000 примеров каждого типа, а наборы для тестирования (TEST-DATA) и разработки (DEV-DATA) – по 2 000.
Таблица 4 – Статистика набора данных
Набор данных | #Secure | #Vulnerable | Всего |
ALL-DATA | 62,448 | 54,468 | 116,916 |
TRAIN-DATA | 18,000 | 18,000 | 36,000 |
DEV-DATA | 2000 | 2000 | 4000 |
TEST-DATA | 2000 | 2000 | 4000 |
4.2 Оборудование
Предлагаемая модель реализована на фреймворке PyTorch, который широко используется в задачах глубокого обучения. Обучение модели выполняется на сервере, оснащенным процессором Intel Xeon E5-2680v3 с частотой 2,50 ГГц и одним графическим процессором GeForce GTX 2080Ti с памятью 94 ГБ.
4.3 Метрики оценки
Поскольку одной из наиболее важных особенностей предлагаемой модели является использование динамического анализа, то предполагается получение более высокой достоверности. Для этого нужно убедиться в правильности выбора направления динамического анализа (например, мутация начальных чисел при фаззинге), основанного на показателях. Поэтому для оценки модели, применяемой в V-Fuzz, используются две метрики: достоверность (accuracy) и полнота (recall), которые позволяют проверить эффективность предлагаемого решения и обеспечить объективность сравнения с V-Fuzz.
Смысл этих метрик заключается в следующем. Пусть имеется L примеров, в которых количество «уязвимых» примеров равно A, а количество «безопасных» случаев равно L-A. Передача L примеров в модель генерирует оценку (VP) L оценок. Оценки сортируются в обратном порядке, и отбираются первые N оценок. Если число примеров с истинной меткой «уязвимый» среди этих N примеров равно n, то K-N (например, K-100 или K-200) равна ?/?. Если N будет равным A, то достоверность K-A составит ?′/?. Т.к. A – это количество «уязвимых» примеров из общего количества, то K-A к тому же характеризует и полноту.
4.4 Производительность модели
Оценка производительности предлагаемой модели на тестовом наборе в соответствии с рассмотренными выше метриками представлена на рисунке 7.
На рисунке 7(a) показаны значения достоверности при различных значениях K. Достоверность быстро улучшается между эпохами 0 и 20 и фактически достигает максимума к 40-й эпохе, а затем колеблется вокруг максимума. Очевидно, что чем меньше значение K, тем выше достоверность. Это показывает, что предложенные показатели информативны: чем выше значение, тем выше надежность прогноза и больше вероятность наличия уязвимостей. Кроме того, все кривые для K = 100~1000 в конце превышают 90%, а кривые для K = 100~600 достигают значения выше 95%. Т.к. открытый исходный код V-Fuzz отсутствует, то модель прогнозирования V-Fuzz реализуется в соответствии с параметрами, указанными в этой статье, а эксперименты проводятся на том же наборе данных, который используется для SAViP. На рисунке 7(b) показаны лучшие значения достоверности для V-Fuzz. Достоверность при K = 100 ~ 600 превышает 82%, это означает, что SAViP на 13% лучше, чем V-Fuzz. На рисунке 7(c) показано сравнение полноты двух моделей: значение полноты V-Fuzz достигает 0,6775, это чуть лучше, чем в оригинальном исследовании из-за несовпадения стандартов маркировки наборов данных для сравниваемых моделей. На рисунке 7(c) ясно видно, что повышение полноты предлагаемой модели и модели V-Fuzz происходит аналогичным образом, и их максимальные значения достигаются примерно к 40-й эпохе. Значение полноты SAViP увеличивается с 50% до 78%, это на 11% выше, чем у V-Fuzz. Эти сравнения показывают, что предлагаемая модель лучше наиболее передовой в настоящее время модели V-Fuzz.
Кроме того, проведена оценка производительности по каждой CWE. Для определения значения достоверности данных с наивысшей оценкой для каждой CWE принимается достоверность K-10. На рисунке 8 показаны значения достоверности при K-10 и полноты SAViP и V-Fuzz для каждого CWE. Две пунктирные линии на рисунке показывают базовые уровни достоверности 95% и 78%. На рисунке видно, что для первых 10 значений достоверности только для CWE134 и CWE401 значения достоверности составляют 95% и 90% соответственно, а остальные – 100%. Это значит, что предлагаемая модель демонстрирует высокую надежность оценки, и что функция с высокой оценкой имеет высокую вероятность наличия уязвимости. С точки зрения полноты SAViP работает лучше, чем V-Fuzz для всех CWE. Строго говоря, для SAViP 6 CWE обладают полнотой выше базового уровня (т. е. полнотой в целом), а полнота остальных 6 CWE ниже. Это показывает, что производительность нашей модели сбалансирована; то есть общее улучшение производительности по сравнению с V-Fuzz не связано с экстремальными признаками отдельных CWE.
4.5 Абляционное исследование
Несмотря на очевидную эффективность предлагаемой модели, также важно определить функцию, которая вносит в результат наибольший положительный вклад. С этой целью проведено абляционное исследование и проанализированы роли каждого типа признаков. Результаты оцениваются с двух точек зрения: полнота и среднее время обучения за эпоху. На рисунке 9 показаны графики обучения при различных настройках, а в таблице 5 более представлены прямые различия между ними при различных метриках оценки. В столбце GAP показано влияние каждой отсутствующей функции на полноту при тестировании модели в процентном соотношении для увеличения наглядности.
Таблица 5 – Исследование абляции
Model | DEV | Полнота TEST | GAP | Время (с) |
SAViP | 0,782 | 0,7785 | 0 | 18,04 |
Без SM-F | 0,701 | 0,6905 | -8,8% | 11,86 |
Без STA-F | 0,7515 | 0,7445 | -3,4% | 16,56 |
Без STR-F | 0,745 | 0,7325 | -4,6% | 13,015 |
Судя по результатам, удаление семантических признаков (SM-F) снижает полноту на 8,8%, поэтому эта часть модели увеличивает полноту больше остальных. Тем не менее, это и самая длительная часть, так как разница во времени обучения за эпоху достигает 6,18 с. Добавление статистических (STA-F) и структурных признаков (STR-F) оказывает одинаковое влияние на производительность, при этом разница в полноте составляет менее 5%. Однако для получения структурных признаков используется GNN, поэтому требуется больше времени (5 с), чем для статистических.
Как упоминалось выше, абляционное исследование показывает, что семантические признаки вносят наибольший вклад в предлагаемую модель VP. Это доказывает, что семантическое обучение может глубоко проникать в базовые блоки и извлекать более сложные элементы, чем статистическая информация.
4.6 Параметрический анализ
В данном исследовании самой важной метрикой оценки наилучших настроек параметров считается полнота. Для параметров с одинаковыми значениями полноты время обучения используется в качестве второго показателя оценки. Для расчета длительности одной эпохи усредняется общее время для 150 эпох.
4.6.1 Семантические признаки
Для извлечения семантики и получения эмбедингов ассемблерных инструкций, а затем эмбедингов семантики базовых блоков применяется задача предварительного обучения из RoBERTa. Эмбединги инструкций аналогичны эмбедингам предложений в естественном языке; они обычно получаются путем выбора вектора, соответствующего первому специальному токену «<?>» как в эмбединге предложения. Учитывая важность опкодов в языке ассемблера, «<?>» объединяется с вектором опкодов. Правильность этой процедуры подтверждается сравнением несколько различных настроек RoBERTa. В таблице 6 и на рисунке 10(а) показаны различия конкретных настроек и окончательные результаты эксперимента. Также тестируется влияние различных размерностей эмбединга (32, 64, 128 и 128), а также сравниваются полученные результаты при прочих равных условиях.
Таблица 6 – Эксперименты с языковой моделью
Модель | Семантическое содержание | Размер эмбединга слова | Полнота DEV | Полнота TEST | Время (с) |
RoBERTa-s | <s> | 64 | 0,7655 | 0,7585 | 16,145 |
RoBERTa-o | опкод | 64 | 0,7515 | 0,751 | 16,12 |
RoBERTa-32 | <s> + опкод | 32 | 0,763 | 0,7575 | 13,41 |
RoBERTa-64(SAViP) | <s> + опкод | 64 | 0,782 | 0,7785 | 18,04 |
RoBERTa-128 | <s> + опкод | 128 | 0,791 | 0,7845 | 22,685 |
RoBERTa-256 | <s> + опкод | 256 | 0,813 | 0,8065 | 36,415 |
Результат показывает, что если размерность эмбединга слова составляет 64 измерения, то результат совместного использования «<?>» и опкода лучше, чем по отдельности. При их раздельном использовании полнота и затраты времени практически совпадают. Этот факт указывает на то, что в обоих случаях неявные характеристики очень похожи, дополняют друг друга и демонстрирует превосходство предлагаемого решения. При тестировании измерения эмбедингов видно, что чем больше размерность, тем выше полнота и временны́е затраты. Баланс полноты и временны́х затрат обеспечивает 64-мерный эмбединг слов.
4.6.2 Статистические признаки
Информация о 56-мерных векторах признаков подробно изложена в разделе «Модель VP». Также представлено сравнение предлагаемого решения с моделью V-Fuzz, в которой используются все инструкции. Согласно Руководству разработчика программного обеспечения [15], выпущенному Intel в марте 2020 года, для V-Fuzz установлены 280-мерные векторы. В таблице 7 (статистический размер) и на рисунке 10(b) показано сравнение полноты и соответствующего времени обучения для обоих случаев. Очевидно, что полнота V-Fuzz немного больше, при этом временны́е затраты больше значительно. Тратить на 50% больше времени, чтобы получить увеличение полноты менее 1%, не является целесообразным, поэтому используется 56-мерное решение.
Таблица 7 – Параметрические эксперименты
Параметр | Значение | Полнота DEV | Полнота TEST | Время (с) |
Статистический размер | 56 | 0,782 | 0,7785 | 18,04 |
Глубина | 0 | 0,743 | 0,7405 | 13,66 |
Итерация | 1 | 0,7425 | 0,74 | 14,895 |
Петля | Правда | 0,782 | 0,7785 | 18,04 |
4.6.3 Структурные признаки
● Глубина. В таблице 7 (Глубина) и на рисунке 10(c) показано влияние различной глубины d нейронной сети в предлагаемой модели. При изменении количества полносвязанных слоев d (d=0~5) полнота достигает своего максимального значения при d=2. Предполагаемая причина заключается в том, что слишком глубокая структура сети приведет к дисперсии признаков, а значит к худшим результатам. Поэтому выбранная конечная глубина сети в GNN составляет 2.
● Итерация. Для оптимизации параметров необходимо выполнить соответствующие итерации в GNN. Для выявления влияния итераций на сеть значение T установлено равным 1, 2, 3, 4 и 5. В таблице 7 (Итерация) и на рисунке 10(d) показаны значения полноты при разных значениях Т. Значения полноты при ?³3 очень близки, но при увеличении T увеличиваются и временны́е затраты. Для необходимости глубоких итераций величина разницы недостаточно велика, поэтому в данном случае достаточно трех прыжков, чтобы базовые блоки смогли собрать информацию о своих соседях. Поэтому T (количество итераций GNN) принимается равным 3.
● Петля. Чтобы гарантировать, что эмбединги блоков всегда фокусируются на себе при сборе сетевой информации, в ACFG добавляется петля до запуска GNN. В таблице 7 (Петля) и на рисунке 10(e) показано влияние этого действия на получаемые результаты. Результаты экспериментов показывают, что после добавления петли полнота увеличивается на 3,7%, т.е. добавление петли может улучшить способность GNN хорошо извлекать структурные признаки.
Таким образом, после многочисленных экспериментальных проверок размер вектора эмбединга слов принят равным 64, и эмбединг инструкции включает в себя «<?>» и опкод. для представления статистических признаков используется 56-мерный вектор. Глубина сети GNN принята равной 2, а количество итераций – 3. Кроме того, с точки зрения реализации размер пакета составляет 32, начальная скорость обучения – 0,01, а ослабление выполняется каждые 50 эпох.
5 Выводы
В этой статье представлена модель VP, которая извлекает три типа признаков — семантические, статистические и структурные — для представления признаков уязвимости. Для семантических функций применяется предварительное обучение MLM модели RoBERTa предлагаемой языковой модели языку ассемблера и последующая генерация с ее помощью эмбедингов инструкций. Для получения более полной семантики разработаны 56-мерный статистический и структурный признаки, предназначенные для интеграции счетчиков инструкций и структур CFG. Предлагаемая модель VP реализована в виде прототипа под названием SAViP. Эксперименты показывают, что SAViP превосходит наиболее современный метод V-Fuzz на 10% по прогнозированию наличия уязвимостей и 13% по полноте и достоверности соответственно. SAViP автоматически прогнозирует наличие уязвимостей без использования предварительно разработанных экспертами по безопасности шаблонов уязвимостей, поэтому обеспечивает эффективный метод обнаружения уязвимостей и снижает нагрузку на исследователей.
Список литературы
1. SonarQube. Available online: https://www.sonarqube.org/ (accessed on 7 January 2022).
2. DeepScan. Available online: https://deepscan.io/ (accessed on 7 January 2022).
3. Reshift Security. Available online: https://www.reshiftsecurity.com/ (accessed on 7 January 2022).
4. Wang, S.; Liu, T.; Tan, L. Automatically Learning Semantic Features for Defect Prediction. In Proceedings of the 2016 IEEE/ACM 38th International Conference on Software Engineering, Austin, TX, USA, 14–22 May 2016; pp. 297–308. [Google Scholar]
5. Li, Z.; Zou, D.; Xu, S.; Ou, X.; Jin, H.; Wang, S.; Deng, Z.; Zhong, Y. VulDeePecker: A deep learning-based system for vulnerability detection. In Proceedings of the 25th Network and Distributed System Security Symposium, San Diego, CA, USA, 18–21 February 2018; pp. 1–15. [Google Scholar]
6. Wang, S.; Liu, T.; Nam, J.; Tan, L. Deep Semantic Feature Learning for Software Defect Prediction. IEEE Trans. Softw. Eng. 2020, 46, 1267–1293. [Google Scholar] [CrossRef]
7. Luo, Z.; Wang, P.; Wang, B.; Tang, Y.; Xie, W.; Zhou, X.; Liu, D.; Lu, K. VulHawk: Cross-architecture Vulnerability Detection with Entropy-based Binary Code Search. In Proceedings of the 2023 Network and Distributed System Security Symposium, San Diego, CA, USA, February 2023. [Google Scholar]
8. Zheng, J.; Pang, J.; Zhang, X.; Zhou, X.; Li, M.; Wang, J. Recurrent Neural Network Based Binary Code Vulnerability Detection. In Proceedings of the 2019 2nd International Conference on Algorithms, Computing and Artificial Intelligence, Hong Kong, China, 20–22 December 2019; pp. 160–165. [Google Scholar]
9. Han, W.; Pang, J.; Zhou, X.; Zhu, D. Binary vulnerability mining technology based on neural network feature fusion. In Proceedings of the 2022 5th International Conference on Advanced Electronic Materials, Computers and Software Engineering (AEMCSE), Wuhan, China, 22–24 April 2022; pp. 257–261. [Google Scholar]
10. Duan, B.; Zhou, X.; Wu, X. Improve vulnerability prediction performance using self-attention mechanism and convolutional neural network. In Proceedings of the International Conference on Neural Networks, Information, and Communication Engineering (NNICE), Guangzhou, China, June 2022. [Google Scholar]
11. Tian, J.; Xing, W.; Li, Z. BVDetector: A program slice-based binary code vulnerability intelligent detection system. Inf. Softw. Technol. 2020, 123, 106289. [Google Scholar] [CrossRef]
12. Li, Y.; Ji, S.; Lyu, C.; Chen, Y.; Chen, J.; Gu, Q. V-Fuzz: Vulnerability-Oriented Evolutionary Fuzzing. arXiv 2019, arXiv:1901.01142. [Google Scholar]
13. Mikolov, T.; Chen, K.; Corrado, G.; Dean, J. Efficient estimation of word representations in vector space. arXiv 2013, arXiv:1301.3781. [Google Scholar]
14. Liu, Y.; Ott, M.; Goyal, N.; Du, J.; Joshi, M.; Chen, D. Roberta: A robustly optimized bert pretraining approach. arXiv 2019, arXiv:1907.11692. [Google Scholar]
15. Intel. Available online: https://software.intel.com/en-us/articles/intel-sdm (accessed on 7 January 2022).
16. Feng, Q.; Zhou, R.; Xu, C.; Cheng, Y.; Testa, B.; Yin, H. Scalable graph-based bug search for firmware images. In Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security, New York, NY, USA, 24–28 October 2016; pp. 480–491. [Google Scholar]
17. Dai, D.H.; Dai, B.; Song, L. Discriminative embeddings of latent variable models for structured data. In Proceedings of the International Conference on Machine Learning, New York, NY, USA, 19–24 June 2016; pp. 2702–2711. [Google Scholar]
18. Software Assurance Reference Dataset. Available online: https://samate.nist.gov/SRD/testsuite.php (accessed on 7 January 2022).
19. Zou, D.; Wang, S.; Xu, S.; Li, Z.; Jin, H. μVulDeePecker: A Deep Learning-Based System for Multiclass Vulnerability Detection. IEEE Trans. Dependable Secur. Comput. 2021, 18, 2224–2236. [Google Scholar] [CrossRef]
20. LLVM Compiler Infrastructure. Available online: https://llvm.org/docs/LangRef.html (accessed on 7 January 2022).
21. Zaremba, W.; Sutskever, I.; Vinyals, O. Recurrent neural network regularization. arXiv 2014, arXiv:1409.2329. [Google Scholar]
22. Cho, K.; Van Merriënboer, B.; Gulcehre, C.; Bahdanau, D.; Bougares, F.; Schwenk, H. Learning phrase representations using RNN encoder-decoder for statistical machine translation. arXiv 2014, arXiv:1406.1078. [Google Scholar]
23. Rawat, S.; Jain, V.; Kumar, A.; Cojocar, L.; Giuffrida, C.; Bos, H. VUzzer: Application-aware Evolutionary Fuzzing. In Proceedings of the 25th Network and Distributed System Security Symposium, San Diego, CA, USA, 26 February–1 March 2017; Volume 17, pp. 1–14. [Google Scholar]
24. Zhang, G.; Zhou, X.; Luo, Y.; Wu, X.; Min, E. Ptfuzz: Guided fuzzing with processor trace feedback. IEEE Access 2018, 6, 37302–37313. [Google Scholar] [CrossRef]
25. Song, C.; Zhou, X.; Yin, Q.; He, X.; Zhang, H.; Lu, K. P-fuzz: A parallel grey-box fuzzing framework. Appl. Sci. 2019, 9, 5100. [Google Scholar] [CrossRef][Green Version]
26. Xu, K.; Hu, W.; Leskovec, J.; Jegelka, S. How powerful are graph neural networks? arXiv 2018, arXiv:1810.00826. [Google Scholar]
27. Devlin, J.; Chang, M.W.; Lee, K.; Toutanova, K. Bert: Pre-training of deep bidirectional transformers for language understanding. arXiv 2018, arXiv:1810.04805. [Google Scholar]
28. Vaswani, A.; Shazeer, N.; Parmar, N.; Uszkoreit, J.; Jones, L.; Gomez, A.N. Attention is all you need. In Proceedings of the Advances in Neural Information Processing Systems, Long Beach, CA, USA, 4 December 2017; pp. 5998–6008. [Google Scholar]
29. Kumar, S.; Chaudhary, S.; Kumar, S.; Yadav, R.K. Node Classification in Complex Networks using Network Embedding Techniques. In Proceedings of the 2020 5th International Conference on Communication and Electronics Systems, Coimbatore, India, 10–12 June 2020; pp. 369–374. [Google Scholar]
30. Mithe, S.; Potika, K. A unified framework on node classification using graph convolutional networks. In Proceedings of the 2020 Second International Conference on Transdisciplinary AI, Irvine, CA, USA, 21–23 September 2020; pp. 67–74. [Google Scholar]
31. Deylami, H.A.; Asadpour, M. Link prediction in social networks using hierarchical community detection. In Proceedings of the 2015 7th Conference on Information and Knowledge Technology, Urmia, Iran, 26–28 May 2015; pp. 1–5. [Google Scholar]
32. Abbasi, F.; Talat, R.; Muzammal, M. An Ensemble Framework for Link Prediction in Signed Graph. In Proceedings of the 2019 22nd International Multitopic Conference, Islamabad, Pakistan, 29–30 November 2019; pp. 1–6. [Google Scholar]
33. Ting, Y.; Yan, C.; Xiang-wei, M. Personalized Recommendation System Based on Web Log Mining and Weighted Bipartite Graph. In Proceedings of the 2013 International Conference on Computational and Information Sciences, Shiyang, China, 21–23 June 2013; pp. 587–590. [Google Scholar]
34. Suzuki, T.; Oyama, S.; Kurihara, M. A Framework for Recommendation Algorithms Using Knowledge Graph and Random Walk Methods. In Proceedings of the 2020 IEEE International Conference on Big Data, Atlanta, GA, USA, 10–13 December 2020; pp. 3085–3087. [Google Scholar]
35. Perozzi, B.; Al-Rfou, R.; Skiena, S. Deepwalk: Online learning of social representations. In Proceedings of the 20th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, New York, NY, USA, 24–27 August 2014. [Google Scholar]
36. Grover, A.; Leskovec, J. node2vec: Scalable feature learning for networks. In Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, San Francisco, CA, USA, 13–17 August 2016. [Google Scholar]
37. Cao, S.; Lu, W.; Xu, Q. Grarep: Learning graph representations with global structural information. In Proceedings of the 24th ACM International on Conference on Information and Knowledge Management, Melbourne, Australia, 18–23 October 2015. [Google Scholar]
38. Hex-Rays. Available online: https://www.hex-rays.com/products/ida/ (accessed on 7 January 2022).
39. Networkx. Available online: https://networkx.org/ (accessed on 7 January 2022).
40. Xu, X.; Liu, C.; Feng, Q.; Yin, H.; Song, L.; Song, D. Neural network-based graph embedding for cross-platform binary code similarity detection. In Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security, Dallas, TX, USA, 30 October–3 November 2017; pp. 363–376. [Google Scholar]
41. Han, W.; Joe, B.; Lee, B.; Song, C.; Shin, I. Enhancing memory error detection for large-scale applications and fuzz testing. In Proceedings of the 25th Network and Distributed System Security Symposium, San Diego, CA, USA, 18–21 February 2018; pp. 1–47. [Google Scholar]