| CVE編號 | CVE-2018-7184 CVE-2018-7182 |
|---|---|
| 影響產品 | ntp 4.2.8p4 ~ 4.2.8p10 |
| 解決辦法 | 最新版ntp 4.2.8p11,可由二網站取得,參考http://support.ntp.org/bin/view/Main/SoftwareDownloads及http://www.ntp.org/downloads.html。 |
| 張貼日 | 2018-03-13 |
| 上稿單位 | TWCERT/CC |
●概述:
歷時24年的Network Time Protocol主從式架構,全球電腦均賴以同步化系統時間,經研究其程式碼,察覺部分瑕疵能造成校時功能DoS,受駭客特製mode 6封包影響,函數ctl_getitem()之變數sp2運算結果,將產生越界讀取buffer位址之後果;而針對interleaved模式設計偽造封包,附帶1個0值來源timestamp與1個非0收領timestamp,可破壞一對peer既有關聯性,持續發送假封包就會永遠中斷時間服務,NTP Developers已備妥升級版軟體。
●編註:
(1)Network Time Protocol概念
網絡時間協定(Network Time Protocol,簡稱NTP),自1985年迄今算是現役最資深的網際網路協定之一,使用64 bit時間戳記(timestamp),前32 bit表示秒整數,後32 bit表示秒的小數,為落實眾多計算機時間同步化,採封包交換方式,透過UDP通訊埠123傳送接收timestamp,儘量在異質網路架構中控制誤差於100毫秒內(1秒=1000毫秒)。NTP為主從式架構,亦可用於對等網路,雙方peer可將對端視作校時服務來源,運作中的NTP daemon既是需求方又是供應方。
(2)NTP程式弱點
(2-1)首先摘列Ntp_control.c內函數ctl_getitem( )局部原始碼:
ctl_getitem()
{...
while ((sp1 != tp) && (*sp1 == *sp2)) {
++sp1;
++sp2; //變數sp2造成越界讀取
}
...}
該函數用途為處理ntpd所獲mode 6封包,若是接收惡意加工之mode 6封包格式,將導致ctl_getitem( )運算時,變數sp2數值異常,指向超過buffer尾端之位址,此out-of-bounds read事件可能讓駭客不當接觸系統訊息,更易干擾Ntp_control.c正常運作。
(2-2)通常校時功能正常狀態下,peer使用交插模式(interleaved mode),收到封包內帶有非0時間戳記時,不會直接更新,除非鑑定來源timestamp與先前封包之收領timestamp能配對,按此機制能防杜任何peer送出錯誤時間戳記封包時還原狀態,阻止兩邊peer空等不會送出的response。
針對上述交插模式之對稱特性,攻擊者建構偽造式作為,對各端peer送出假封包,夾帶1個0值來源timestamp與1個非0收領timestamp,就能打破一對peer彼此既有的已驗證、交插對稱之關聯性,不停放送同一贗品封包,就能持續破壞peer間正常關聯互動,讓假時間戳記存入成為最新的收領timestamp,並迫使雙向關聯重新設定,所以受害端永遠在更新真正收領timestamp前,就因reset而丟棄掉封包,造成時間服務暫停,當然若駭客停止送出冒牌貨,NTP運作即恢復常態。
