我需要尋找哪此類型的安全漏洞呢?
傳統的數據庫安全系統只側重於以下幾項:用戶帳戶、作用和對特定數據庫目標的操作許可。例如,對表單和存儲步驟的訪問。必須對數據庫系統做范圍更廣的徹底安全分析,找出所有可能領域內的潛在漏洞,包括以下提到的各項內容。
與銷售商提供的軟件相關的風險-軟件的BUG、缺少操作系統補丁、脆弱的服務和選擇不安全的默認配置。
與管理有關的風險 -可用的但並未正確使用的安全選項、危險的默認設置、給用戶更多的不適當的權限,對系統配置的未經授權的改動。
與用戶活動有關的風險-密碼長度不夠、對重要數據的非法訪問以及竊取數據庫內容等惡意行動。
以上各類危險都可能發生在網絡設備、操作系統或數據庫自身當中。對數據庫服務器進行安全保護時,都應將這些因素考慮在內。
數據庫安全-漏洞區域及示例
在重要數據庫服務器中,還存在著多種數據庫服務器的漏洞和錯誤配置。下面列出了幾個實例。
安全特征不夠成熟-絕大多數常用的關系數據庫系統已經存在了十多年之久,並且具有強大的特性,產品非常成熟。但不幸的是,IT及安全專業人士認為理所當然應該具有的許多特征,在操作系統和現在普遍使用的數據庫系統中,並沒有提供。
非內建式數據庫標准安全性能
MS SQL Server Sybase Oracle 7 Oracle 8
帳戶鎖定設備 no no no yes
重命名管理帳戶 no no no no
要求嚴密的口令 no no no yes
陳舊的帳戶 no no no no
密碼失效 no yes no yes
登錄時間限制 no no no no
例如,上表列出了大多數IT專業人士期望或要求操作系統所應具備的特性,但在數據庫服務器的標准安全設施中並未出現。由於這些數據庫都可進行端口尋址的,操作系統的核心安全機制並未應用到與網絡直接聯接的數據庫中。一些產品,例如Microsoft SQL Server, 都可利用功能更加強大的Windows NT安全機制去發現上面提到的安全漏洞。但是,考慮到兼容性問題(運行環境並不全是Windows NT),所以大多數依然執行MS SQL Server的安全標准。而實施則是另外一回事了。如果公司實用的是Oracle 8,管理員如何能知道是否真地實施了安全特性?是否一直在全公司中得到實施?
這幾項特性相結合,使得與之相關的問題更加嚴峻。由於系統管理員的帳號是不能重命名的(SQL和Sybase是“sa”,對於Oracle是“System”和“sys”),如果沒有密碼封鎖可用或已配置完畢,入侵者就可以對數據庫服務器發動強大字典式登錄進攻,最終能破解密碼,有什麼能夠擋住他們對服務器耐心,持久的高水平攻擊呢?
數據庫密碼的管理-在多數數據庫系統提供的安全標准中,沒有任何機制能夠保證某個用戶正在選擇有力的-或任意的-密碼。這一基本的安全問題需要細心的監督。此外還需要對全部密碼列表進行管理和安全檢查。例如,Oracle數據庫系統具有十個以上地特定地默認用戶帳號和密碼,此外還有用於管理重要數據庫操作的唯一密碼,如對Oracle數據庫開機程序的管理、訪問網絡的聽眾過程以及遠程訪問數據庫的權限等。如果安全出現了問題,這些系統的許多密碼都可讓入侵者對數據庫進行完全訪問,這些密碼甚至還被存儲在操作系統的普通文本文件裡。下面有幾個示例:
Oracle Internal 密碼-Oracle內部密碼存放在文件名為“strXXX.cmd”的文本文件中,XXX是Oracle系統的ID或SID,默認值為“ORCL”。用在Oracle數據庫的啟動過程中,要用到Oracle Internet密碼,具有隨意訪問數據庫資源的權力。這個文件應妥善保管,以用於基於Windows NT的Oracle程序。
Oracle監聽程序過程密碼-用於起動並停止Oracle監聽程序過程的密碼,該過程可將所有的新業務路由到系統上合適的Oracle例子中,需選擇一個保密性強的密碼替換系統的默認值,使用許可必須在“listener.ora”文件中得到保護,該文件存貯了Oracle所有的使用密碼。對密碼的不當訪問可能會使入侵者對基於Oracle的電子交易站點進行拒絕服務攻擊。
Oracle內部密碼 -“orapw”文件許可控制-Oracle內部密碼和由SYSDBA授權的帳號密碼存貯在“Orapw”文本文件中。盡管文件已被加密,但在Oracle的UNIX和Windows NT的程序中,還是要限制該文件的使用權限。如果該文件被訪問,那麼遭解密的文件很容易遭到強有力的攻擊。
這些例子說明了管理員、系統密碼和帳號是何等的重要,它們都可能會遭到意想不到的攻擊方法的攻擊。注意密碼管理問題決不僅限於Oracle數據庫,幾乎所有主要數據庫提供商的產品都有這種問題。
操作系統的後門-許多數據庫系統的特征參數盡管方便了DBA,但也為數據庫服務器主機操作系統留下了後門。
如上所述,對Sybase或SQL服務器的“sa”密碼造成危害的入侵者有可能利用“擴展入駐程序”,得到基本操作系統的使用權限。以“sa”的身份登錄,入侵者使用擴展入駐程序xp?cmdshell,該程序允許Sybase或SQL服務器的用戶運行系統指令,就象該用戶在服務器控制台上運行指令一樣。例如,可實用下列SQL指令添加一個Windows NT帳號,帳號名為“hacker1”,密碼為“nopassoWord”,並把“hacker1”添加到“Administrators”組:
xp-cmdshell ‘net user hacker1 nopassWord/ADD’ go xp-comdshell ’net localgroup/ADD Administrators hacker1’ go
現在這個非法入侵者就成了Windows NT的管理員了(我們只能祈禱這個SQL服務器不是域控制器)。這個簡單的攻擊之所以成功,是因為命令被提交給實用Windows NT帳號的操作系統,而MSSQLServer的服務就運行在這個帳號下。在默認情況下,這個帳號就是“LocalSystem”帳號---本地Windows NT系統中最有效力的帳號。另一個途徑是黑客可能使用SQL服務器,利用入駐程序xp-regread從注冊表中讀出加密的Windows NT SAM密碼,對操作系統的安全造成威脅。由於有幾種免費的Windows NT密碼攻擊器軟件,因此保管好加密的Windows NT密碼的安全變得格外重要。以下例子說明了入侵者是怎樣得到信息的:
xp-regread’HKEY?LOCAL?MacHINE’,’SECURITYSAMDomainsAccount’,’F’
注意,從注冊表中讀出加密密碼是一件本地Windows NT管理員帳號都無法做到的事。SQL服務器之所以能夠做到,是因為默認方式運行的SQL服務使用的恰恰就是“LocalSystem”帳號。
Oracle數據庫系統還具有很多有用的特征,可用於對操作系統自帶文件系統的直接訪問。例如在合法訪問時,UTL_FILE軟件包允許用戶向主機操作系統進行讀寫文件的操作。UTL_FILE_DIR簡檔變量很容易配置錯誤,或被故意設置為允許Oracle用戶用UTL_FILE軟件包在文件系統的任何地方進行寫入操作,這樣也對主機操作系統構成了潛在的威脅。
校驗-關系數據庫系統的校驗系統可以記錄下信息和事件,從基本情況到任一細節,無一遺漏。但是校驗系統只在合理使用和配置的前提下,才能提供有用的安全防范和警告信息。當入侵者正在試圖侵入特定的數據庫服務器時,這些特征可及早給出警告信息,為檢測和彌補損失提供了寶貴的線索。
特洛伊木馬程序-盡管人們知道操作系統中的特洛伊木馬程序已經有好幾年了,但是數據庫管理員還需注意到木馬程序帶給系統入駐程序的威脅。一個著名的特洛伊木馬程序修改了入駐程序的密碼,並且當更新密碼時,入侵者能得到新的密碼。例如,某個個人可以在sp?passWord系統入駐程序中添加幾行命令,就可在表單中增加新的密碼,用e-mail傳遞密碼或將密碼寫入外部文件以備日後使用。這一辦法可連續獲取密碼,直到入侵者得到的“sa”密碼被更換-使得更深層的入侵未被察覺。一個入侵者或心懷不滿的雇員只需進入系統一次,放置好特洛伊木馬後就可得到以後的一系列密碼。
總結
安全專業人士、校驗員、DBA和電子商務的規劃人員在部署重要商業系統時,都需注意到數據庫的安全問題。要想了解的系統的安全狀態和發展方向,您就得部署系統,以對數據庫服務器做出最徹底的評估,並進行常規的安全評估。所有系統都應該采用信息風險管理原則,以進行監督、檢測,對安全漏洞做出響應。