程序污点分析实例研究 A Case Study on Taint Analysis 郭 耀
软件安全越来越重要 程序分析与编译技术 在系统与网络安全方面起到了重要作用。
什么是污点? Taint(污点):所有来自不可靠数据源的数据 例如 用户输入 网络 etc. 所有常量(字符串)都是 untainted data 所有变量都有可能是 tainted data 来自网络,写入硬盘,之后再重新读入的数据依然是 tainted data
如何找到所有的Taints? 数据流分析 Def-Use chain 识别可能被污染的数据来源 从来源开始找到所有可能受影响的数据 注意:包含tainted data的变量可能会重新变为untainted
Taint Analysis 的用途 查找源码/系统漏洞,提高系统安全性 可分为 C/Java Web应用(比如:JavaScript) 二进制程序(无源码) 可分为 Static Taint Analysis Dynamic Taint Analysis
具体做什么? 利用已有的编译框架(e.g., Soot)实现静态的Taint Analysis算法 实例研究 期望结果 具体要求 针对具体的程序示例查找其中潜在的漏洞 期望结果 一篇研究报告(技术报告或者投稿论文) 具体要求 1-2人,对编译分析和优化有足够的兴趣 时间要求:每周5-10小时。
另一个可选题目 面向GPU集群的CUDA程序自动转换
GPGPU & CUDA GPGPU CUDA是什么? 目标:如果自动把写好的单机CUDA程序转换到GPU集群上? General Purpose computing on Graphics Processing Units (GPU) CUDA是什么? nVidia 公司的一种GPGPU编程语言 用来处理 目标:如果自动把写好的单机CUDA程序转换到GPU集群上?
现有条件 16个节点的GPU集群 已经手动对快速傅里叶变换(FFT)进行了GPU cluster上的调优工作。 每个节点包括两块GPU nVidia Tesla C1060 nVidia GTX 285 利用 Infini Band高速网络连接 已经手动对快速傅里叶变换(FFT)进行了GPU cluster上的调优工作。 (陈一峯老师的研究小组)
基本流程 GPU集群 CUDA程序 中间形式 (编译处理之后) 单机 CUDA程序 分析 转换
面向GPU集群的CUDA程序转换 问题难点: GPU集群的性能瓶颈在什么地方? 自动性能调优 vs 手动性能调优 数据大小 vs. 内存大小 各有利弊 目标是使自动调优的性能尽量接近手动调优!
联系方式 郭耀 电话:62753496 Email: yaoguo@pku.edu.cn 办公室:理科楼1428