Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

SigGraph: Brute Force Scanning of Kernel Data Structure Instances Using Graph-based Signatures

论文下载

Abstract

  • 在许多计算机安全和取证应用中,识别内核数据结构是一个重要内容。
  • 以往的方法是用数据结构中的“不变量”作为“签名”。
  • 这里提出基于指针指向关系产生结构化的图作为“签名”。

Introduction && Overview

  1. 观察到Linux内核中大概40%的数据结构存在指针。
  2. 需要解决同构问题。

Data Structure Definition Extraction

  • 从源码中提取数据结构定义。
  • 闪烁其词的一节,不管从个人理解还是从文章之前的示例中,都表示这篇文章处理的数据结构都是struct或者union,既然是从源码提取,直接可以静态解决,和AST关系不大。

Signature Generation

主要就是处理同构的问题。

  1. 把数据结构都用f1t1(f2-f1)t2…的顺序字符串表示;
  2. 有可能出现一个子串问题,那就用广搜的方法展开定义,直到不重复;
  3. 大概12%的数据结构同构,无法区分;从后来的文章看,可以污点分析,对type进行约束。

Scanner Generation

范式匹配,同时需要对非指针区域进行检测。

Handling Practical Issues

处理空指针、void等问题,鸵鸟策略。

Evaluation

分析23个样例,有FP,归结于动态检测没有发现NULL或者内存free没有覆盖等。