散記
打算早上先看一個視頻,具體瞭解一下抽象解釋的相關概念,下午把 Tracer: Signature-based Static Analysis for Detecting Recurring Vulnerabilities 看了
SIG-程序分析 技术沙龙 数值程序分析—陈立前(国防科技大学)
不變式(值)生成
抽象解釋:對程序語義進行抽象(近似)的通用理論
Galois 連接
抽象域
數值抽象域,在其上的析取,合取
多面躰域(綫性不等式域),八邊形域(刻畫+1,-1,0,兩個變量之間的關係)
上近似:無漏報但是可能存在誤報
凸抽象域(綫性抽象域),凸抽象域(區間綫性抽象域,絕對值綫性抽象域)
數值程式分析
結合抽象域與SMT的程式分析
軟件中資源使用量上界分析
神經網絡架構中的數值缺陷檢測
他人提問:
應該選擇什麽樣的抽象域
怎麽去自動化地檢測抽象域的精度
…
静态分析相关综述笔记
磕磕绊绊的读了一篇讲静态分析框架的论文,发现自己没有提炼自己的知识,有一种 “哦,原来是这样” 的似懂非懂的傲慢。
读了一些综述,打算把这些东西再梳理一遍。
以下的内容非常散,如果对文章感兴趣又不想看文字,看图片部分就够了。
二进制代码安全分析综述(部分)作者主要来自复旦大学的软件学院与上海市数据科学重点实验室
引言-摘软件安全分析笼统的说可归类两种
源代码级别
二进制级别
作者讲了二者的区别,
二进制级别的代码分析上存在着一定的挑战,首 先软件程序需要从源代码经过编译、优化之后生成二 进制可执行程序,二进制代码可读性降低,且在程序的
编译过程中往往会丢失掉上层的结构和类型等信息 (例如将变量和数据结构存到通用寄存器或者内存中1, 从而导致分析任务更严峻,难度更大;
有一点点疑问🤔。关于优化后失掉上层的结构和类型等信息。虽然可能失掉了源码级别的符号,但是如果能够还原出部分符号,这个符号是最贴近实际运行的,而且信息量也是非常大的,比如编译期的反射在二进制眼前就是非常直白的存在。再另一个综述中了解到有一篇说可以追踪变量的使用自动的还原出结构体,可能这一篇不够详细。
二进制安全分析 ...
论文阅读笔记
今天分享一来自 ISSTA 2023 的静态分析文章。Tai-e: A Developer-Friendly Static Analysis Framework for Java by Harnessing the Good Designs of Classics
Tian Tan and Yue Li. 2023. Tai-e: A Developer-Friendly Static Analysis Framework for Java by Harnessing the Good Designs of Classics. In Proceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2023). Association for Computing Machinery, New York, NY, USA, 1093–1105. https://doi.org/10.1145/3597926.3598120
b站上有一个静态分析课程,作 ...
论文阅读笔记
論文閲讀
Ruiguo Yang, Jiajin Cai, and Xinhui Han. 2022. Poster: TaintGrep: A Static Analysis Tool for Detecting Vulnerabilities of Android Apps Supporting User-defined Rules. In Proceedings of the 2022 ACM SIGSAC Conference on Computer and Communications Security (CCS ‘22). Association for Computing Machinery, New York, NY, USA, 3507–3509. https://doi.org/10.1145/3548606.3563527
Introduction作者描述說大部分的安卓漏洞都屬於邏輯漏洞(指的應該是應用層的漏洞),可以大部分分爲兩部分,第一部分數據,第二部分是對數據的處理。第一部分的不可靠的數據我們可以通過數據流分析得到,而對不可靠的數據進行操作則需要語義分析。 ...
论文阅读笔记
論文閲讀
Jubi Taneja, Zhengyang Liu, and John Regehr. 2020. Testing static analyses for precision and soundness. In Proceedings of the 18th ACM/IEEE International Symposium on Code Generation and Optimization (CGO 2020). Association for Computing Machinery, New York, NY, USA, 81–93. https://doi.org/10.1145/3368826.3377927
Introduction作者的目的是開發 formal-method-based(基於形式化的) 算法,靜態分析中的 imprecisions 和 unsoundnesses 。
作者的貢獻是設計並評估了數種算法來分析編譯器靜態分析結果的 soundnesses 和 precisions,他們在 LLVM 並上沒有找到新 soundness bu ...
LLVM 摸鱼笔记
LLVM 學習
There are multiple reasons why pieces of GCC cannot be reused as libraries, including rampant use of global variables, weakly enforced invariants, poorly-designed data structures, sprawling code base, and the use of macros that prevent the codebase from being compiled to support more than one front-end/target pair at a time. The hardest problems to fix, though, are the inherent architectural problems that stem from its early design and age. Specifically, GCC suffers from layering pr ...
LLVM 摸鱼笔记
LLVM 學習昨天太累,今天繼續休息。但是 LLVM 在編譯了。
該補課了,發現自己編譯的 LLVM 少了一些頭文件,可能是編譯選項沒配置好的原因,這次加上 -DLLVM_ENABLE_PROJECTS=all 希望能正常。
clang++ -I /home/rt/llvm-project/llvm/include/ -g -O3 Keleidoscope.cpp $(llvm-config --cxxflags --ldflags --system-libs --libs core) -o mytest.o
/home/rt/llvm-project/llvm/include/llvm/Support/Compiler.h:18:10: fatal error: 'llvm/Config/llvm-config.h' file not found
18 | #include "llvm/Config/llvm-config.h&qu ...
LLVM 摸鱼笔记
LLVM 學習今天只稍微看了部分 LLVM IR JIT 的那一章,摸了
《奧本海默》有點好看的,但是我根本記不住人名,錯過太多心理活動,導致了電影的錯綜複雜的感覺。深夜晚上又被拉出去吃了海底撈。
啥也沒學,負罪感滿滿。
LLVM 學習笔记
LLVM 學習終於來到激動人心的第三章 LLVM IR(今天是周日,有點擺了
Function *PrototypeAST::codegen() {
// Make the function type: double(double,double) etc.
std::vector<Type*> Doubles(Args.size(),
Type::getDoubleTy(*TheContext));
FunctionType *FT =
FunctionType::get(Type::getDoubleTy(*TheContext), Doubles, false);
Function *F =
Function::Create(FT, Function::ExternalLinkage, Name, TheModule.get());
The call to FunctionType::get creates the Fun ...
补充笔记
About Sound & Precise?可能存在的名词
sound
能够获取所有的动态信息的分析称为 sound
soundy
想要获取完整的动态信息,对于一些不好处理的语言特性进行合理的处理
unsound
“开摆”,直接忽略一些不好处理的语言特性,以提高效率,精度等
precision
不会报错误信息的分析可以称之为 precision
现状静态分析在软件开发,编译器,安全研究等地方使用广泛,但是大部分的实际中的静态分析软件不能做到 sound。他们很有可能忽略了类似反射等一些复杂的语言特性。
之所以这么做是因为软件开发者妥协了,如果为了 soundly 适配各种语言特性,静态分析器就很有可能失去 imprecision,或者难以移植,甚至根本用不了。
参考
南大的静态分析课程 https://tai-e.pascal-lab.net/lectures.html
Soundiness Home Page http://soundiness.org/