Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
開源編譯器,如何實現系統安全最後一哩路
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Funny Systems
August 20, 2016
Technology
1.4k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
開源編譯器,如何實現系統安全最後一哩路
COSCUP Talk
Funny Systems
August 20, 2016
More Decks by Funny Systems
See All by Funny Systems
雲端 DHCP 安全問題
funnysystems
1
1.1k
雲端資料掉光光 - GCP 事件調查真實案例
funnysystems
2
1.7k
頑固吧!GCP Cloud SQL (Why Hardening GCP Cloud SQL)
funnysystems
0
510
SMB 捲土重來 (Turning SMB Server Side Bug to Client Side)
funnysystems
0
320
跟壞鄰居想的一樣,供應鏈安全與硬體後門
funnysystems
1
790
以安全工程角度,連結實務與設計
funnysystems
0
400
FunnyPot ‐ 改造 Windows 核心,強固化、蜜罐化
funnysystems
0
750
攻擊者的視角 - 兼談匿名識別度與可追蹤性
funnysystems
1
490
黑客技術,黑科技樹 II
funnysystems
1
870
Other Decks in Technology
See All in Technology
【セミナー資料】Claude Code をセキュアに使うための考え方と設定の勘どころ / Claude Code Webinar 20260616
masahirokawahara
2
430
螺旋型キャリアの生存戦略 / kinoko-conf2026
rakus_dev
0
150
AIはどのように 組織のアジリティを変えるのか?
junki
4
1.1k
ロボティクスの技術 / Robotics Technology
ks91
PRO
0
110
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
170
SteampipeとExcel Power QueryでAWS構成定義書の作成を自動化する
jhashimoto
0
160
20260619 私の日常業務での生成 AI 活用
masaruogura
1
230
スタートアップにAmazon EKSは早すぎる? マルチプロダクト戦略を加速する Platform Engineeringの実践 / Is Amazon EKS Too Soon for Startups? Practical Platform Engineering to Accelerate a Multi-Product Strategy
elmodev09
1
760
自宅LLMの話
jacopen
1
690
水を運ぶ人としてのリーダーシップ
izumii19
2
190
[チョークトーク資料]AWS DevOps Agent を使いこなす / AWS Dev Ops Agent Chalk Talk AWS Summit Japan 2026
kinunori
3
640
ACE-Step-1.5で見る 音楽生成AIのしくみと“破綻だけ直す”Retake機能の開発【zennfes spring 2026 登壇資料】
personabb
1
550
Featured
See All Featured
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
220
How STYLIGHT went responsive
nonsquared
100
6.2k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
220
GraphQLとの向き合い方2022年版
quramy
50
15k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
740
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
Git: the NoSQL Database
bkeepers
PRO
432
67k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Transcript
2016/08/20 COSCUP
起點 0
Hi COSCUP Kuon,喜歡學習,特別是「安全技術」 http://Funny.Systems/ • 編譯器安全計畫
貓捉老鼠 年,貓跑不動了! 1
不能用的劍 一.學術作法 1. 程式語言 • C 語言子集合 (C-Subset) » 沒人用
• 領域專用語言 (DSL) » 更沒人用 2. 程式方法 • 函數式程式設計 (FP) » 有潛力 – 舊有風格程式碼 (Legacy Code) !?
明朝的官 二.古代作法 (~2010) 1. 作業系統 • 記憶體隨機化 (ASLR) • 記憶體不可執行
(DEP/NX) 2. 編譯器 • 堆疊溢位檢測 (StackGuard)
清朝的劍, 砍→明朝的官 二.古代作法 (~2010) 1. 作業系統 • 記憶體隨機化 (ASLR) »
有條件繞過 • 記憶體不可執行 (DEP/NX) » 可成熟繞過 2. 編譯器 • 堆疊溢位檢測 (StackGuard) » 有條件繞過 • 靜態分析 » 堪用~可用 – 掃描完,修不完!
還在發 Paper 階段 三.其他作法 1. 軟體驗證 (Verification) » (軍)工業等級 •
But … 如果你還想加個新功能 (大驚!) 2. 執行檔二次處理 » 有時候需要 3. 虛擬化 » 看怎麼使用
軟體安全 系統安全 • OS – Kernel • TCB (Trust Computing
Base) – Hypervisor • Firmware – TrustZone
安全觀 2
聯網性、持續性
聯網性、持續性
聯網性、持續性
跨界 • 軟體缺陷,到底是不是安全問題? 1. Null Pointer 2. Undefined Behavior
跨界 • 軟體缺陷,到底是不是安全問題? 1. Null Pointer » OS 有關 2.
Undefined Behavior » 已經是了
思路 (Idea) 怎麼進去機場裡面? »
思路 (Idea) « 另一個切入點 »
http://www.appledaily.com.tw/appledaily/article/headline/20110708/3351 3284/
弱點 (Flaw) Uninitialized Memory、Dangling Pointer Use-After-Free、Double Free Use-After-Return、Use-After-Destructor Null Pointer
(Dereference) Type Confusion Race Condition、Data Race、TOCTOU
輔助 (Helper) Non-randomized Memory RWX Memory (ex:JIT) Info Leak、Memory Disclosure
利用 (Exploit) ROP、JOP、IOP、LOP、SOP、SROP、BROP Data Reuse、Non-Control-Data Attack DOP COOP CROP JIT
Spray、Heap Spray Stack Spray Stack Pivot 、Stack Hooking
未知攻、焉知防
未知攻、焉知防
建立好的防守 比攻擊更困難
編譯器 3
C 語言 • Integer 、Float • Pointer 、Array 、Vector 、Structure
、 Function
記憶體空間 • Stack • Heap • Global
編譯器 • Module • Function • Basic Block • Instruction
編譯器 + 安全 4
軟體安全 粒度 效能 相容性
相容性 • Architecture • OS • Kernel-mode vs. User-mode •
Compiler Extension • Toolchain
安全編譯階段 1. 建模 2. 解構 3. 轉換 4. 合成
None
C/C++ 語言 • Pointer – Code Pointer – Data Pointer
– Object Pointer
C/C++ 語言 • Pointer – Code Pointer • Return Address
• Function Pointer • Method Pointer • Virtual Function Pointer – Data Pointer – Object Pointer
C 語言 • Pointer – 完整性(效驗) • Return Address –
隔離性 • Return Address – 不可預測性 • Function Pointer、Method Pointer
C 語言 • Array、Global Data – 方向性 • Overflow •
Underflow – 隔離性 • 邊界防禦
記憶體空間 • Stack、Global – 讀寫模型 (Read-Write Model) – 順序性 •
依變數型態 – 不可預測性 • 變數間距
編譯器階段 • Function – 不可預測性 • 函數間距 – 完整性(效驗) •
函數依賴關係
編譯器階段 • Instruction – 不可預測性 • 指令位址隨機化 • 指令序列混淆 –
抑制 ROP 手法 • 指令序列黑名單
用老虎、抓老鼠 5
None
StackGuard • 1998 年提出,GCC & LLVM • 透過編譯器,在 Stack Frame
的 Return Address 前,插入 Canary/Cookie 。 – 用來抑制 Stack Overflow 問題 – Function Pointer on Stack – fork()
CFI – Control Flow Integrity • 2005 年提出,LLVM • 透過編譯器,針對
Direct/Indirect Control Flow 作完整性驗證 – Call Site & Call Target 互相配對 – 用來抑制 ROP 問題 – Mixing Function Chain & ROP Chain • 3rd Party • Legacy Code • Edge Case
SafeStack • 2005 年左右提出,LLVM • 透過編譯器,依照 Stack 內,變數的各種安 全屬性,重新分配到記憶體其他段落 –
一種 Dual Stack 策略 – Nested Function – Resize Stack at Runtime
VTV – Virtual Table Verification • 2014 年提出,GCC & LLVM
• 透過編譯器,針對 Virtual Table 結構,和 Virtual Function 呼叫,中間插入一層驗證 機制 – 主要用來抑制 Use-After-Free – Instantiated Template – tcmalloc
攻守同源 奇正相長
Q&A