Publishing Service

Polishing & Checking

Frontiers of Information Technology & Electronic Engineering

ISSN 2095-9184 (print), ISSN 2095-9230 (online)

Automatic discovery of stateful variables in network protocol software based on replay analysis

Abstract: Network protocol software is usually characterized by complicated functions and a vast state space. In this type of program, a massive number of stateful variables that are used to represent the evolution of the states and store some information about the sessions are prone to potential flaws caused by violations of protocol specification requirements and program logic. Discovering such variables is significant in discovering and exploiting vulnerabilities in protocol software, and still needs massive manual verifications. In this paper, we propose a novel method that could automatically discover the use of stateful variables in network protocol software. The core idea is that a stateful variable features information of the communication entities and the software states, so it will exist in the form of a global or static variable during program execution. Based on recording and replaying a protocol program's execution, varieties of variables in the life cycle can be tracked with the technique of dynamic instrument. We draw up some rules from multiple dimensions by taking full advantage of the existing vulnerability knowledge to determine whether the data stored in critical memory areas have stateful characteristics. We also implement a prototype system that can discover stateful variables automatically and then perform it on nine programs in ProFuzzBench and two complex real-world software programs. With the help of available open-source code, the evaluation results show that the average true positive rate (TPR) can reach 82% and the average precision can be approximately up to 96%.

Key words: Stateful variables; Network protocol software; Program analysis technology; Network security

Chinese Summary  <21> 基于重放分析的网络协议软件状态变量自动化发现技术

黄见欣1,喻波1,刘润昊1,苏金树1,2
1国防科技大学计算机学院,中国长沙市,410073
2军事科学院,中国北京市,100091
摘要:网络协议软件通常具有程序路径复杂、状态空间庞大的特点。程序中往往存在着一些带有状态的关键变量,用于记录协议状态和会话信息。这些状态变量一旦处理不当,很可能违背协议规范,进而产生逻辑错误,导致协议软件出现潜在的缺陷或漏洞。本文针对现有程序分析技术难以发现网络协议软件中的状态变量,且自动化程度偏低的问题,提出一种基于重放分析的状态变量识别方法。考虑到状态变量主要反映着通信双方的参数和程序的状态,具有这些特征的变量通常会以全局变量或静态变量的形式,持续存在于进程之中,该方法通过记录和重放协议软件的执行轨迹,运用动态插桩技术,在协议状态和软件状态的变化过程中,分析内存关键区域的全局变量和静态变量的状态特征,并结合规则进行筛选判定。在此基础上,设计并实现了一套能够自动化发现状态变量的原型系统,在ProFuzzBench中的9个程序和2个现实中的复杂协议软件上进行了测试。实验结果显示,平均真正类率(TPR)可达82%,平均准确度可达96%左右。

关键词组:状态变量;网络协议软件;程序分析技术;网络安全


Share this article to: More

Go to Contents

References:

<Show All>

Open peer comments: Debate/Discuss/Question/Opinion

<1>

Please provide your name, email address and a comment





DOI:

10.1631/FITEE.2200275

CLC number:

TP311

Download Full Text:

Click Here

Downloaded:

1978

Download summary:

<Click Here> 

Downloaded:

249

Clicked:

18013

Cited:

0

On-line Access:

2023-03-25

Received:

2022-06-25

Revision Accepted:

2023-03-25

Crosschecked:

2022-11-09

Journal of Zhejiang University-SCIENCE, 38 Zheda Road, Hangzhou 310027, China
Tel: +86-571-87952276; Fax: +86-571-87952331; E-mail: jzus@zju.edu.cn
Copyright © 2000~ Journal of Zhejiang University-SCIENCE