https://www.informationsecurity.com.tw/Seminar/2024_PaloAlto/
https://www.informationsecurity.com.tw/Seminar/2024_PaloAlto/

觀點

因應個資法系列(1)資料庫安全-技術篇 資料庫威脅哪裡來?

2011 / 10 / 05
余俊賢
因應個資法系列(1)資料庫安全-技術篇 資料庫威脅哪裡來?

資料庫的安全可謂因應個資法最先須要面臨狀況。資料庫通常都會放在資訊網路環境中最深、最安全之處,因為資料庫的內容牽涉的機敏問題最高,想當然爾應該接受城堡般嚴密的保護,但現實狀況並非如此,我們面對客戶時,只要問一個問題就可以知道資料庫的保護程度,「貴公司是否有專職的資料庫管理人員(DBA)?」資料庫不就是一套軟體,為什麼需要專職的管理人員呢?這也是一般企業管理者心中的疑惑。

 

 

資料庫威脅來源眾多

 

資料庫因為裡面放的資料以及在資訊系統中的重要地位,面對的威脅與風險可能比一般系統還要多,從底下這一張圖可以看出,其威脅來源包含資料庫本身、資料庫所在的作業系統平台、資料庫所支援的應用系統包含網站以及管理人員的電腦端點安全。因為這樣多元的接觸面,反而使重要的資料庫面臨到更多的威脅。

 

 

 

 

合法權限通用、濫用

 

權限相關問題有過高權限濫用 (Excessive Privilege Abuse )、合法權限濫用 (Legitimate Privilege Abuse )、權限提升問題 (Privilege Elevation ),以往資料庫稽核時經常可以發現一個帳號走遍天下的狀況,全公司所有系統、人員都使用同一個管理者(SA)帳號。而這樣的狀況會造成資料庫過高的權限,帳號權限超過工作所需,開方便之門之後,問題就跟著進來。沒有對於資料庫與資料庫中的表格做區隔,對於不同的應用系統應該給予完成工作最小所需的權限即可,也可以達到區隔不同資料安全要求的目標。然而,最大的問題還是在於管理的人員及使用者,若是沒有做好權限管理與稽核,誰在資料庫中做了甚麼事情、動了甚麼資料便無從查起,這也是為什麼需要專責管理人員的原因之一。

 

另外則是合法權限下的濫用,即使權限有做好區分,還是可能有合法權限被濫用的問題,合法使用者未授權的濫用,容易發生的狀況是系統開發人員可接觸正式上線的資料庫,卻沒有對於系統測試做好資料庫的切割,導致正常資料與測試資料混用。另外則是使用合法權限透過其他未監視的管道連線到資料庫,例如資料庫的使用原本是應用程式才會進行存取,而得知此權限的人員卻可以在自己的電腦上利用資料庫管理工具連線到資料庫,這也是一種未限制資料庫連線方式時,合法權限的濫用案例。

 

 

攻擊資料庫弱點,造成權限奪取與資料外洩

 

資料庫也是一種軟體與平台的結合,從實際狀況可以知道,軟體存在弱點與脆弱之處並非空想,包含對於資料庫平台弱點、資料庫本身的問題與資料庫通訊協定的弱點等。對於這樣的問題,除了定期做更新之外,也可以透過入侵偵測或資料庫防火牆做偵測與阻擋。

以知名的資料庫管理系統為例,每年更新的弱點也不下兩位數,其中修正的項目不乏遠端攻擊與本地提權(從低權限提升到至高權限)以及阻斷服務的問題。資訊系統的問題與實務之間難免有落差,但這種情況在資料庫方面更加嚴重,許多管理人員甚至是資料庫原廠的工程人員,並非不能對資料庫做修補更新,而是不敢做更新,深怕資料庫更新之後的不穩定、錯誤,導致原本沒有問題的狀況,卻因為更新之後讓系統崩潰。所以經常會看到的是陳年資料庫完全沒有做任何的更新,因為沒有人敢或願意去背這個責任。這樣的問題也並非無解,通常在做重大更新之前,必須對於相同的環境先進行更新測試,確認運作無誤之後方可更新。建議在更新之前也要對系統做備份,多利用現在很夯的虛擬環境,可以協助減緩這方面再備份與還原的痛苦狀況指數。

 

 

外在的威脅來源

 

資料庫是提供網站、視窗應用程式、後台交易與資料交換的核心引擎,也因此讓資料庫與外界威脅的接觸面大大增加,以網站應用程式的弱點資料隱碼攻擊(SQL Injection)為例子,就是透過網站應用系統程式,將攻擊資料庫的SQL語法傳入到資料庫中,伺機獲取資料庫內容或資料庫主機的管理權限。對於這樣的攻擊來說,最後攻擊成功時,受駭的不是網站本身,而是資料庫。

如果網站與資料庫是放置於同一台主機上,就會發生兩者均被入侵的現象,因此經常被混淆,以為是網站被入侵,實則為資料庫才是苦主。另外,來自外界的攻擊威脅還有攻擊資料庫的服務能力,也就是稱為阻斷服務攻擊(Denial of Service )的手法,利用資料庫提供服務的功能,以大量的要求服務的行為,使用資料庫加上網站疲於處理沒有結果或無目的的服務要求,使得資源被浪費,阻斷了正常服務或網路頻寬的使用。這樣的攻擊威脅,建議可透過資料庫之外的網路防禦設施、網站應用程式防火牆來進行阻擋與防禦。

 

 

管理面的問題

 

除了權限的管理問題之外,對於資料庫維運時還會有其他面向的問題,像是身分鑑別脆弱,簡單的說就是帳號、密碼過於簡單或者是未更改預設的密碼,容易遭受猜測或是破解。如果是一個重要的資料庫系統,應該給予更強制的密碼管理與多重因素的身分驗證機制;另外則是對於資料庫稽核檔案的管理未做或是不足,資料庫本身其實有提供很多記錄使用者行為與命令的Log功能,但是預設狀況下並不會開啟,或者開啟之後會導致資料庫效能的下降,這也會使得管理者猶豫不決,在效能與安全上做出抉擇。因此會缺乏用戶的可歸責性(Accountability),一旦出現問題時,在追查與處理時,便會遇到船過水無痕的空虛無力感。

 

其次是備份資料暴露(Backup Data Exposure )的問題,正常來說資料庫都會有做備份的動作,而這些備份資料離開了嚴密防守的城堡後,便失去了防護罩,所以有些狀況下,資料庫本身都沒有問題,而是備份資料缺乏妥善的保護或者線上備份資料庫的安全性不足所導致。


以下提供一些常見的資料庫預設的帳號、密碼,如有雷同請儘速變更。現在新版本的資料庫均會要求與建議用戶立即變更密碼與符合密碼強度。(見下表)

 

 

●      Oracle Defaults

      -     User Account: internal / Password: oracle

      -          User Account: system / Password: manager

      -     User Account: sys / Password: change_on_install

      -     User Account: dbsnmp / Password: dbsnmp

      MySQL Defaults

      -     User Account: root / Password: null

      -     User Account: admin / Password: admin

      -     User Account: myusername / Password: mypassword

●      Sybase Defaults

      -     User Account: SA / Password: null

     Microsoft SQL Server      

      -     User Account: SA / Password: null

 

躲在資料庫系統中的後門

 

資料庫系統中的後門這是一個容易被忽略的檢查項目,一般發生資安事件時,頂多檢查資料庫權限、資料是否有異常,但是鮮少對於資料庫中隱藏的惡意程式碼做檢測。因此也助長了資料庫後門與Rootkit的孳生。而這樣的資料庫後門能做到與系統後門一樣的能力,包含遠端控制、檔案存取、傳輸資料等,而且是利用現有的資料庫管理工具便可以達成,另外則是隱藏有問題的資料庫連線與帳號,加深檢查上或是日常管理時的困難度與挑戰,此手法稱為資料庫的Rootkit,在特殊狀況下可以驅動一些系統功能,達到掩護異常帳號以及活動的狀況。而且技術上已經有好幾個世代的進步,包含使用Stored ProcedureTrigger等,進展到改變DBMS的程式邏輯與記憶體內容,均增加了發現或移除這種惡意手法的困難度。

 

另外一種手段,則是惡意使用者寫在資料庫中的定時炸彈,這樣的用戶原本是具有正常的資料庫權限,但是因為某些因素把資料庫中的程式(資料庫裡面也是可以寫程式的,通常容易被忽略),這樣的預存程序或觸發程序只要稍做更動便會導致資料庫運算內容錯誤等問題,就像是一顆定時炸彈在特定時機被引爆,屆時真的是怎麼被炸得都不知道,因此也更需要強化資料庫專責人員與管理的必要性。

 

 

技術面上的防禦

 

上述談了諸多威脅,接下來談談怎麼從技術面上防禦。在資料庫安全防禦上,可以從偵測、阻擋、預防的角度來看。例如,針對全線管理的監控上,可以透過Query LevelRow Level的存取控制,控制到selectupdate等動作,達到SQL query等級的權限控制與監控,但是這樣如同前述的狀況,採取Log Audit時要花時間去定義與維護,對於效能會有一定的影響。

另外在於監控的做法,包含嚴謹地允許資料庫存取來源與裝置、程式,像是用戶端僅能透過應用程式連上,限制可以存取的應用程式種類跟名稱,對資料庫工具(Utility)和連結(如ODBCJDBC)作管制。實務上,還可以限制資料庫可被存取的時間,避免下班時間資料被大量的搬走。

 

現今對資料庫安全也有許多相關的配套,尤其是個資法通過之後,各家對於資料安全的各種方案紛紛大賣,像是資料庫稽核管理、資料庫防火牆、資料庫弱點掃描與入侵偵測、資料加密等,配合防禦資料庫在各種面向上的管理配套,例如防禦應用程式面的網站應用系統防火牆與檢測服務、更新管理、資料庫活動管理與資安事件與稽核檔案管理等,依照不同場景與環境施以防護,切記應定期維運檢視,否則亦淪為被動的假安全。

 

 

應強化資料庫安全稽核事件處理

 

資料庫既然是一個運行的系統,就免不了天災人禍,像是資料遺失、資料復原失敗、資料遭竊、資料庫遭攻擊、人為或惡意程式的破壞、來自其他系統影響資料庫運行等問題。因此在資安事件處理與管理上,必須要加強對於資料庫這方面的考量配套,原因是,資安事件的處理人員不見得剛好就是資料庫高手,而資料庫又是重要的資訊資產,相衡之下,其狀況更加險峻。

 

所以一般可以透過常態性的資料庫稽核方法來強化安全,做定期的資料庫安全檢視,這其中應該要包含技術面上的驗證,例如資料庫弱點與環境的安全驗證、透過程序檢查稽核項目中關於權限、稽核檔案、資料庫後門的檢視。

 

重要的資產應該施予更高的安全確保投入,在實務上資料庫安全上尚有很大的改善空間待你我共同努力。