---
# System prepended metadata

title: '[Vulnerability Detection Algorithm of Lightweight Linux Internet of Things Application with Symbolic Execution Method](https://ieeexplore.ieee.org/abstract/document/9603596?casa_token=K_GBC8-V-eUAAAAA:L5GsIkSIHhHrwjs1VrZBctwLafoZckgqIKPDllrCDRcFSNmgLTfprnlwfFIZHrm-GI1w_3gk)'
tags: [paper]

---

# [Vulnerability Detection Algorithm of Lightweight Linux Internet of Things Application with Symbolic Execution Method](https://ieeexplore.ieee.org/abstract/document/9603596?casa_token=K_GBC8-V-eUAAAAA:L5GsIkSIHhHrwjs1VrZBctwLafoZckgqIKPDllrCDRcFSNmgLTfprnlwfFIZHrm-GI1w_3gk)

## Abstract

* 漏洞檢測靠人工分析效率低，準確度難以保證
* 本文提出基於符號執行的自動化漏洞檢測技術
* 用於小型 IoT 裝置的輕量應用
* 實現三種功能
    * buffer overflow detection
    * encryption reliability detection
    * protection state detection
* 實驗檢測演算法的 robustness
    * buffer overflow 可在 2.75 秒內檢測
    * encryption reliability 可在 1.79 秒內檢測
    * 多個資料重複測試，誤差時間不超過 6.4 毫秒

## Introduction

* 為了提前檢測和修復漏洞，有幾種測試方法
    * 靜態分析
    * 動態分析
    * 汙點分析
    * 符號執行
    * 模糊測試
* 隨著黑箱 fuzzing 的出現，自動檢測逐漸取代手動檢測
* 本文設計了針對 lightweight applications 的檢測演算法，利用符號執行進行漏洞檢測。
* 實驗證明了有效性和準確度

## Symbolic Execution Detection Algorithm Construction

* 用於 Linux 環境
* 提出三種功能
    * buffer overflow detection
    * encryption reliability detection
    * protection state detection
* ![](https://i.imgur.com/hvXXGKa.png)
* 使用 angr，利用約束器限制符號變數的執行路徑，進而得到期望的結果

### Overflow Vulnerability Detection Design

* 32-bits 和 64-bits 的都能夠使用
* 檢測方式是觀察是否存在無約束狀態的路徑
* 設計原則是適當分配系統資源，當執行時記憶體空間分配錯誤，就容易出現不受約束的狀態，觸發 buffer overflow 漏洞

### Program Encryption Vulnerability Detection Design

* 使用加密演算法來驗證輸入的密碼是最常見的加密保護形式之一
* 將符號變數當作參數去跑 function，約束變數到驗證成功的路徑後，求解約束條件
* 如果解得出來，代表該驗證方式不可靠

### Protection Opening Verification Design

* 可以辨識 ELF 文件的保護狀態
    * aslr
    * arch
    * canary
    * got
    * nx
    * pie
    * plt
    * relro
* 如有發現漏洞會進行修復

## Test and Result Analysis

* 為了測試符號執行的有效性和穩健性(robustness)，用 C 寫了幾個易受攻擊的程式，並用 GCC 編譯成 ELF

### Automated Overflow Vulnerability Detection

* 程式中有兩個漏洞函數，會因空間分配錯誤觸發漏洞
* 實驗結果有成功找出漏洞
* ![](https://i.imgur.com/R2YWcqR.png)

### Encryption Vulnerability Detection

* 需要先透過靜態分析(應該是手動)找出目標地址，如果符號執行能遍歷到該 function，就嘗試反解出密鑰

### Program Robustness Tests

* 為了測試 robustness，測試包含兩種不同類型的程式，分析十組連續檢測的時間
* ![](https://i.imgur.com/SjwExWE.png)
* 基礎測試上，波動不超過 2.9 豪秒(藍線)
* 多參數檢測上，波動不超過 6.4 毫秒(橘線)
* 兩組不同程式分析時間都呈線性，表示檢測能力穩定
* ![](https://i.imgur.com/4mNzf4p.png)
* 在 32-bit 和 64-bit 上檢測花費的時間也都在 0.7~0.8 秒左右，差異很小，表示該檢測方式的通用性強

## Conclusion

* 本文設計了一個基於符號執行的漏洞檢測方式，可用於輕量物聯網應用程式
* 實驗證明有良好的準確性和 robustness
* 複雜的程式可能會遇到路徑爆炸的問題是後續的研究方向

###### tags: `paper`