涉及程序: Microsoft SQL 描述:
CERT 安全公告 CA-2002-22: Microsoft SQL的多個安全缺陷
詳細:
Microsoft SQL服務器存在多個嚴重的安全缺陷,允許遠程攻擊者取得數據庫的敏感信息、更改數據庫內容、破壞 SQL 服務器。雖然微軟過去曾發布 Security Bulletin 以解決各個問題,但仍須更加注意這些缺陷聚集的嚴重性。
自 2001年 12月,微軟一共發布了八個 Security Bulletin,至少有十多個關於 SQL Server的安全缺陷。本文將著重介紹其中的五個最嚴重的安全缺陷的相關信息。
個別地看,許多缺陷都要求攻擊者要想進行入侵,必須先達到一些顯著的先決條件,但是若聯合多個缺陷進行攻擊,則能使攻擊者擁有許多彈性並增加成功的機會。特別是在 VU#796313 中所描述的權限提升缺陷,允許攻擊者授予 SQL Server 與操作系統相同的權限以削弱 SQL server 的安全策略,擁有完整管理者權限的 SQL Server 可以用來控制該服務器主機。
CERT/CC 建議系統管理者借此機會仔細檢查一遍自己的SQL Server 並安裝微軟提供的相關修正程序。
VU#796313 - Microsoft SQL Server service account registry key has weak permissions that permit escalation of privileges (CAN-2002-0642)
Microsoft SQL Server 通常都是以專用的 "service account" 帳號執行,此帳號是由系統管理者在安裝時所定義的,儲存在 Windows registry 並有允許 SQL server 變更該 registry key 值的權限。其結果是能夠存取 "xp_regwirte" 擴展存儲進程的入侵者可以更改此 key 值並導致 SQL Server以 "LocalSystem" 帳號作為其提供服務的帳號。
在重新開機或重新激活 SQL service 後,SQL Server 會以具有完整系統管理權限的 "LocalSystem" 帳號執行。此能力允許遠程攻擊者通過發送 SQL queries 給 SQL server 而在系統上以系統管理員權限執行任意指令。
VU#225555 - pwdencrypt() 函數存在緩沖溢出 (CAN-2002-0624) 微軟 SQL Server 提供使用者多種數據庫的認證方法。當使用 SQL Server Authentication 時,每一個數據庫用戶的用戶名和口令都存儲在 SQL server 上的一個數據庫內。當用戶使用此認證方式並提供口令給服務器時,一個名為 pwdencrypt() 的函式負責將用戶提供的口令編碼以便與數據庫中加密過的口令對比。
在 pwdencrypt() 函式中存在一個緩沖溢出的缺陷。此缺陷允許遠程攻擊者通過發送一個假造的密碼而能在 SQL server 上執行任意程序代碼。但攻擊者必須先知道一個有效的用戶名才能運用此缺陷,而成功的攻擊能使攻擊者提供的程序代碼以 SQL service account 的權限被執行。
VU#627275 - Microsoft SQL Server 的擴展存儲進程存在緩沖溢出缺陷(CAN-2002-0154)
微軟 SQL Server 提供的擴展存儲進程能夠將一群 server 指令聚集在一起執行。數個微軟 SQL Server 提供的擴展存儲進程含有緩沖溢出的安全缺陷。這些進程提供數據庫應用程序較多的功能,允許存取操作系統或網絡資源。
參數透過 API 傳入擴展存儲進程並指定不同參數的實際長度與最大長度。有些擴展存儲進程不能有效地驗證所輸入的參數長度,會導致緩沖區溢出的情況。
由於有些具有缺陷的進程預設為允許公開存取,未被認證的攻擊者即可能利用這些緩沖區溢出缺陷進行攻擊。SQL Server 數據庫一般使用於web applications,因此這些具有缺陷的進程可能通過 Internet而被存取。微軟 Security Bulletin MS02-020中陳述:
攻擊者有兩中方式運用此弱點。第一種,攻擊者可以嘗試加載並執行數據庫查詢,呼叫其中一個有缺陷的函數。第二種,若一個 web-site 或其它資料庫前端軟件設定為存取及處理任意查詢,則攻擊者可提交畸形參數和查詢指令以調用有問題的函數。
VU#399260 - Microsoft SQL Server 2000 的解析服務存在堆溢出(heap buffer)缺陷(CAN-2002-0649)
微軟 SQL Server 2000 引入 SQL Server Resolution Service (SSRS) 以提供在一台機器上執行多個 server instance 的 referral services。這個 service監聽 UDP port 1434 並傳回提供服務的SQL server instance 的 IP 地址和端口號。
SSRS 含有一個堆溢出(heap buffer)缺陷,允許未被認證的遠程攻擊者利用此缺陷發送偽造的 request 到 UDP port 1434 而在系統上執行任意指令,這些包含在request 內的程序代碼會被 server 以 SQL Server service account 的權限執行。
VU#484891 - Microsoft SQL Server 2000的解析服務存在堆棧溢出(buffer overflow)缺陷(CAN-2002-0649)
SSRS 也存在一個堆棧溢出(buffer overflow)缺陷,允許未認證的遠程攻擊者利用此缺陷發送一個精心構建的 request 到 1434/udp 而在系統上執行任意指令,包含在此request 中的代碼會以 SQL Server service account 的權限被執行。
受影響系統
* Microsoft SQL Server 7.0 * Microsoft SQL Server 2000
* Microsoft SQL Server Desktop Engine 2000
影響結果
VU#796313 - Microsoft SQL Server service account registry key has weak permissions that permit escalation of privileges
要利用此缺陷的先決條件為攻擊者必須有能力修改 SQL service account的registry key (例如透過 "xp_regwrite" 擴展存儲進程)。
此缺陷允許攻擊者提升 SQL Server的權限使其以 LocalSystem 權限執行,,以削弱 SQL Server 的 security policy。此缺陷還會增加其它缺陷的嚴重性,並可允許攻擊者危害整部服務器主機。
VU#225555 - pwdencrypt() 函數存在緩沖溢出 (CAN-2002-0624)
此缺陷允許知道系統上有效帳號(username)的遠程攻擊者以 SQL service account的權限在系統上執行任意程序代碼。
VU#627275 - Microsoft SQL Server 的擴展存儲進程存在緩沖溢出缺陷
此缺陷允許未被認證的遠程攻擊者以 SQL service account 的權限在系統上執行任意指令。
VU#399260 - Microsoft SQL Server 2000 的解析服務存在堆溢出(heap buffer)缺陷
此缺陷允許遠程攻擊者以 SQL service account 的權限在系統上執行任意指令。
VU#484891 - Microsoft SQL Server 2000的解析服務存在堆棧溢出(buffer overflow)缺陷
此缺陷允許遠程攻擊者以 SQL service account 的權限在系統上執行任意指令。
攻擊方法:
暫無有效攻擊代碼
解決方案:
安裝微軟提供的修復程序和補丁
VU#796313 - Microsoft SQL Server 服務帳號registry key 缺陷允許用戶權限被非法提升
VU#225555 - pwdencrypt() 函數存在緩沖溢出 (CAN-2002-0624)
微軟發布的 Security Bulletin MS02-034 修復了以上兩個安全缺陷:
Microsoft SQL Server 2000:
?scid=kb;en-us;Q316333&sd=tech
VU#627275 - Microsoft SQL Server 的擴展存儲進程存在緩沖溢出缺陷
微軟發布的 Security Bulletin MS02-020修復了此安全缺陷:
Microsoft SQL Server 7.0:
?scid=kb;en-us;Q318268&sd=tech
Microsoft SQL Server 2000:
?scid=kb;en-us;Q316333&sd=tech
VU#399260 - Microsoft SQL Server 2000 的解析服務存在堆溢出(heap buffer)缺陷
VU#484891 - Microsoft SQL Server 2000的解析服務存在堆棧溢出(buffer overflow)缺陷
微軟發布 Security Bulletin MS02-039修復了這兩個安全缺陷:
Microsoft SQL Server 2000 and MSDE 2000:
?ReleaseID=40602
臨時解決方案:
阻塞外部對微軟 SQL Server 通訊端口的訪問
嚴格限制來自外部的對 SQL Server通訊端口(1433/tcp, 1433/udp, 1434/tcp,1434/udp)的訪問。VU#399260 和 VU#484891 可以利用偽造合法源地址的UDP數據包來進行攻擊,因此系統管理員應該限制所有發送到1434/udp的外來數據包。
附加信息:
CAN-2002-0624 ;CAN-2002-0642 ;CAN-2002-0154 ;CAN-2002-0649
相關站點: