新安全罩門:網路應用程式

轉載: 新安全罩門:網路應用程式
Foundstone亞太總監 陳彥銘  2004/02/02

資訊安全是全面的議題,而不是只有針對單一程式、通訊協定或是作業系統領域。資訊安全的攻擊目標也涵蓋了各種層次,大多IT人士都已熟知許多作業系統 (例如: Microsoft Windows)、系統服務 (例如:IIS),或是通訊協定 (例如:SNMP)等安全議題,也非常重視。但是,隨著此方面知識與研究的普及,攻擊者的焦點漸漸向上轉換至OSI層次較高的應用程式層面 (Application) ,或者是側面擴及不同的通訊系統 (無線網路)。
接下來一系列的文章將進一步探討應用程式安全問題。

應用程式通常是企業或軟體商針對特殊或一般使用需求不同的程式語言所撰寫,較常見的範例如網路應用程式 (Web Application) 即是使用 ASP、PHP、或是Java 所編寫。當然,其他一般性且不用借助網頁伺服器(Web Server)的網路應用程式,如網路遊戲程式也是其中一類。這類型應用程式共同特點就是會使用應用程式層的通訊協定 (例如:HTTP)。有些會借用 Web Server 或Middleware server 與後端伺服器(如資料庫)連結。

最近常見的安全問題,包括去年5月時,業界驚爆的微軟 Passport 使用者密碼重設問題、去年底花旗銀行信用卡申請網站洩漏個人資料、台積電求職網站洩漏求職者隱私,以及種種線上遊戲寶物偷竊與作弊等問題。若從軟體開發流程階段剖析,我們可從以下幾種歸納應用程式安全常見的安全弱點:

設計階段

設計階段經常出現的問題有:缺乏安全的使用者認證方式,沒有完善的存取控制系統、沒有資訊安全的要求,甚至於完全忽略可能產生的安全問題。

開發階段

開發階段的問題往往佔大多數,由於開發人員在設計階段,安全性顧慮通常較少,導致可能隱含的安全問題都在開發測試的階段陸續浮現。主要問題如:

  • 輸入驗證 (Input Validation) : 網路應用程式都會接收使用者輸入 (如投遞信用卡申請書、線上銀行),倘若應用程式本身接收使用者輸入資料之後,並未加以驗證,即有可能產生安全上的問題。例如,之前的SQL Injection攻擊與Cross-Site Scripting攻擊都歸屬於此範疇。
  • 身分驗證問題 (Authentication & Authorization): 許多應用程式允許多位使用者登入 (如線上銀行),但是在登入之後,使用者可能利用網路應用程式的漏洞,改變原有的權限橫向「變身」成為另一位使用者,例如,線上銀行使用者A可將B的帳號內容轉入自己的帳號,或是是縱向取得管理權限的使用者身分。
  • 應用程式邏輯問題: 在開發階段,應用程式通常會遵循一定的商業邏輯或規範,這些邏輯在設計時可能並不完整,如果開發時再度出錯,就有可能造成大問題。例如,去年微軟的passport使用者密碼重設問題,就屬於此類的問題。

部署與維護階段 (Deployment)

將應用程式從測試階段轉移部署至正式的運作環境 (Production Environment) 時,同樣可能造成很多問題。最主要的可能在於應用程式所依賴的作業系統與網路應用程式並不安全,包括使用尚未更新完整修補程式的Microsoft Windows 2000、IIS等,其次為一些開發者的注解 (comments),或是其他資料可能未經過淨化 (sanitization) 過程,因而導致於資料外洩 (如資料庫通聯使用者及密碼) 等。至於維護階段,則可能因為軟體版本更新時,未徹底完成檢查與測試,因而導致原本並不存在的漏洞出現。

這些安全問題可能造成的影響包括:

  • 敏感資料外洩: 從花旗銀行與台積電雙雙網站資料遭洩漏事件,可發現當網路應用程式出現差錯,內存的敏感資料即有隨之外洩的可能。這次可能外洩的資料雖然只是個人資料,如果假設應用程式連接的資料是其他敏感的商業機密,可能造成的影響層面將會更大。
  • 交易完整性遭破壞: 從線上遊戲的案例來看,一些線上寶物遭竊與相關問題可能影響遊戲公平性。此外,如果網路應用換成了線上銀行,倘若金錢交易爆發問題,其所影響之層面可能更為嚴重。其他諸如人事系統、財務系統,或是純粹的線上檔案系統,若遭受安全威脅,也可能造成人事資料外洩或遭受竄改等破壞,對於企業內部將造成較大的損失。
  • 服務中斷: 當然,應用程式的弱點也存在導入所提供之網路服務中斷的機會,而中斷服務的原因包括緩衝區溢位,或是其他應用程式漏洞所造成。對企業而言,服務中斷將影響日常重要的商業運作。
  • 系統控制: 應用程式的弱點也有可能成為攻擊者破壞內部其他機器的跳板,有心人士可利用程式控制、執行該弱點的伺服器,進而攻擊其他的內部網路機器。

總而言之,應用程式的問題可能比一般作業系統、網路與其他已知漏洞更為棘手。關鍵在於這類型的應用程式所隱藏的問題,往往無法透過一般的自動弱點掃描程式以進行偵測,多半需要依靠專家的經驗與知識才能找出問題點。

從軟體發展流程出發 (設計、開發、測試、佈置與維護) ,如果安全問題可以從著手設計的階段即已顧及,遠比走到開發與測試階段才發現、修補安全漏洞,得以節省更多開發經費。可惜的是,大多數的企業還停留在「抓一隻蟲、補一個洞」--這個治標不治本的方法。未來幾週的文章,將繼續討論如何將資訊安全加入你的軟體發展流程。

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料