iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0
Security

資安的原罪系列 第 14

【14】資安的原罪 ch.3-2.a 零日攻擊

  • 分享至 

  • xImage
  •  

【14】資安的原罪 ch.3-2.a 零日攻擊

本章介紹頂尖駭客最熱衷的技術領域,弱點的發現與利用。


什麼是弱點?

資安中的弱點(vulnerability)是指系統、軟體、網路或流程中存在的缺陷或瑕疵,攻擊者可以利用這些弱點來取得未經授權的存取權,干擾服務,或竊取資料等非法行為。

什麼是弱點利用?

弱點只是系統的「缺陷或破口」;當攻擊者設計出一段程式或操作序列,能夠實際利用這個缺陷達成入侵、竊取或破壞,那段程式/方法就叫做 弱點利用(exploit)。換句話說:弱點 = 入口,弱點利用 = 開門的鑰匙或破門的方法。

弱點是問題的「存在」,弱點利用是把問題變成攻擊的「行為」

典型攻擊流程

  1. 發現(Discovery):研究人員或攻擊者發現漏洞。
  2. 武器化(Weaponization):編寫 exploit(程式、payload、exploit chain)。
  3. 利用(Exploitation):把 exploit 投放到目標系統並觸發弱點。
  4. 後續行動(Post‑exploitation):取得權限、橫向移動、蒐集機敏資料或持久化。

現實案例 - Heartbleed

2014年OpenSSL加密函式庫被發現一個重大弱點,攻擊者只要送出特製請求,就能從伺服器讀出最多 64KB 的記憶體資料,可能包含私鑰、帳號、密碼等敏感資訊,而且不會留下痕跡。


常見弱點效果

🌐 遠端程式碼執行(Remote Code Execution, RCE)

  • 攻擊者能在遠端機器上執行任意程式碼
  • 是最危險的攻擊之一,若有執行任意程式碼弱點,基本上等於完全操控了我們的電腦和手機
  • 常見於緩衝區溢位、反序列化漏洞或指令注入

「RCE就像有人寄來一個陷阱檔案,然後它開始執行指令,好像駭客坐在你的鍵盤前一樣。」

🔐 權限提升(Privilege Escalation)

  • 取得比原本允許更高的存取權限
  • 例如:弱點讓一般用戶升級成管理員或root
  • 常見於本機記憶體錯誤或權限設定不當

「就像拿著訪客證走進大樓,卻找到方法打開了主管辦公室的門。」

🕵️‍♂️ 資訊洩漏(Information Disclosure)

  • 敏感資料外洩:密碼、令牌、金鑰、內部程式碼
  • 例如Heartbleed洩漏了受影響伺服器的記憶體內容
  • 常見於跨站腳本(XSS)、設定錯誤或暴露的API

「即使沒有直接控制權,資料洩漏也同樣危險──駭客往往藉此規劃下一步行動。」

📦 阻斷服務(Denial of Service, DoS)

  • 弱點可讓攻擊者癱瘓或超載系統
  • 例如資源耗盡、無限迴圈或使系統崩潰的輸入
  • 透過中斷服務造成破壞和影響

「有時候,攻擊者不想闖入,他們只是想讓一切停止運作。」


常見弱點成因

1. 記憶體弱點

記憶體管理上的缺陷,在像 C 與 C++ 這類語言中特別危險。

例子包括:

  • 緩衝區溢位 / 緩衝區越界讀取
  • 使用已釋放記憶體
  • 空指標解引用

「這些漏洞讓攻擊者能夠存取或覆寫他們不該碰的記憶體區域——可能導致系統當機、資料外洩,甚至遠端代碼執行。」

對抗記憶體溢位較有效的語言有:JAVA、Rust、C#

2. 注入弱點

不受信任的資料被當作程式碼解讀 時,就會發生注入攻擊。

例子包括:

  • SQL 注入
  • 命令注入
  • LDAP/XML 注入
  • XSS

「可以想像成這樣——你問資料庫一個問題,但攻擊者偷渡惡意指令進來,變成執行惡意指令。結果不再是查某個使用者,而是讓資料庫把所有使用者資料全部洩漏出來。」

儘管這些弱點被廣泛知悉,但它們仍然是網路上被濫用最頻繁的漏洞之一。
防範方法包括:消毒輸入、固定格式,以及使用 PreparedStatement。

XSS(跨站腳本攻擊)

XSS(Cross‑Site Scripting) 是一種網頁應用程式漏洞,攻擊者把惡意 JavaScript 或 HTML 注入到網站中,使其他使用者的瀏覽器在不知情下執行這些程式碼,進而竊取資料、篡改頁面或劫持使用者會話。

常見類型

  • 儲存型(Stored XSS):惡意程式碼被儲存在伺服器(例如留言、用戶資料)中,所有讀取該內容的訪客都會被影響。
  • 反射型(Reflected XSS):惡意程式碼隨 URL 或表單送來,伺服器立刻回顯給使用者(常見於釣魚連結)。
  • DOM‑based XSS:惡意程式碼只在瀏覽器端改變 DOM(前端處理不當),伺服器不必參與。

可能的影響

  • 竊取 cookies、session token 或敏感資訊
  • 偽造使用者操作(如轉帳、發布內容)
  • 注入惡意腳本進行鍵盤記錄、蠕蟲式傳播或偽造 UI

弱點接露與零日攻擊

什麼是「弱點接露」?

弱點接露(Vulnerability Disclosure) 是指當安全研究人員、白帽駭客或使用者發現系統、軟體或服務中的安全缺陷時,將該發現通報給相關責任方(例如軟體開發者、服務提供者或資安協調單位)的過程。

接露的方式

  • 負責任揭露(Responsible / Coordinated Disclosure*:研究人員先私下通知廠商,提供修補時間,待修補或達成協議後再公開細節。
  • 公開揭露(Full Disclosure):在沒有協調或等待期的情況下直接公開漏洞細節(風險較高,可能加速被惡用)。
  • 漏洞獎勵計畫(Bug Bounty):公司提供獎勵以鼓勵研究者回報漏洞並提供修補資訊。

常見的相關單位

  • Google Project Zero:由 Google 支援的資安研究小組,專注於發現高風險漏洞並推動負責任揭露。
  • MITRE / CVE:MITRE 維護 CVE(Common Vulnerabilities and Exposures)編號系統,是全球通用的漏洞識別標準,便於追蹤與通報。
  • TWNCERT / 國家或區域 CERT:各國的電腦緊急應變中心(例如台灣的 TWNCERT/CC)提供協調與通報窗口,能協助跨單位溝通與事件處理。

什麼是「零日攻擊」?

當某個漏洞在被公開揭露或有補丁發布之前,已經被攻擊者發現並實際利用,這種情況稱為 零日攻擊(Zero‑day attack)。意思是防守方有「零天」時間去準備或修補,可以說是無法抵擋的攻擊。


原罪

1. 人會出錯

軟體是人寫的,只要有人參與,就無法完全避免錯誤。無論團隊多麼受過良好訓練、採用多先進的開發流程或工具,人在設計、撰寫與維護程式時仍可能犯錯,進而產生弱點。單從近期3個月內發生的思科^1、IBM^2、Chrome^3、Apple iOS^4、Adobe^6 到微軟^7 等案例可見:即便是由頂尖人才全球一流企業所打造的系統,也會頻繁出現安全缺陷。

2.自由度風險

系統軟體開發中,開發者只要想要擁有更高的控制(例如 C/C++ 記憶體和資源的直接存取),就必須面臨更大的程式出錯空間範圍與機率

3. 只是發現還不足以解決問題

漏洞懸賞(bug bounty)、通報機制等方式能幫助找出現有弱點,但「發現漏洞」本身並不等於「解決漏洞」。漏洞的發現能協助修補,但一處被找到並不代表相同類型的弱點在其他地方也能被發現;亦不代表未來的程式就能完全避免同類錯誤。想要解決弱點的成因需仰賴完全不同的技術

4.補丁修補

面對未發現的弱點,將面臨無法阻擋的零日攻擊;然即使是已發現的弱點,透過補丁修補時也會面臨兩大問題。一是這可能成為駭客的燈塔,駭客藉由對補釘內容的分析及逆向工程,可以快速定位弱點,藉此搶在組織修補前進攻。二是組織往往不願意或無法立即套用補丁,可能是因產品服務已終止維護,或是擔心補丁和軟體系統之間的相容性問題等。就連微軟也因為沒準時安裝自己發布的補丁而遭到利用,並坦言:「和業界其他廠商一樣,我們難以達成百分之百的補丁管理遵循率。」^8


上一篇
【13】資安的原罪 ch.3-1.d 物聯網
下一篇
【15】資安的原罪 ch.3-2.b 社交工程
系列文
資安的原罪15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言