危及系統安全的途徑
法則七:妥善管理的網路就是最安全的網路。 - 安全性管理 10 大定律
在發生嚴重入侵事件的組織中,其評估通常會顯示組織對於 IT 基礎結構實際狀態的可見度有限,實際狀態可能與「記錄」的狀態相去甚遠。 這些差異會形成弱點而使環境可能遭到入侵,且往往難以發現,直到入侵發展到攻擊者有效地「擁有」環境的地步。
詳細評估這些組織的 AD DS 設定、公開金鑰基礎結構 (PKI)、伺服器、工作站、應用程式、存取控制清單 (ACL) 和其他技術,可揭露設定錯誤和弱點並設法補救,進而阻止初始入侵。
分析 IT 文件、流程和程序,可識別有哪些系統管理實務缺口形成的弱點遭到攻擊者的利用,最終取得據以全面侵害 Active Directory 樹系的權限。 在完全遭入侵的樹系中,攻擊者不僅入侵了個別系統、應用程式或使用者帳戶,而且也提升了其存取權,而獲得了一定程度的權限可據以修改或破壞樹系的所有層面。 當 Active Directory 安裝遭到這種程度的入侵時,攻擊者將可藉由變更而得以持續存在於整個環境中,甚或破壞目錄及其管理的系統和帳戶。
雖然後續說明的一些經常遭到惡意探索的弱點並非針對 Active Directory 的攻擊,但攻擊者得以藉此在環境中建立據點,用以執行權限提升 (也稱為權限升級) 攻擊,且最終將 AD DS 視為目標予以入侵。
本文件的這一節著主要說明攻擊者通常採用哪些機制取得基礎結構的存取權,且最終發動權限升級攻擊。 另請參閱以下幾節:
減少 Active Directory 的受攻擊面:Active Directory 安全設定的詳細建議。
監視 Active Directory 是否有遭入侵的跡象:協助偵測入侵的建議
規劃入侵因應措施:協助從 IT 和商務觀點防禦基礎結構攻擊的概略方法
注意
雖然本文件主要討論屬於 AD DS 網域的 Active Directory 和 Windows 系統,但攻擊者鮮少僅關注 Active Directory 和 Windows。 在作業系統、目錄、應用程式和資料存放庫並存的環境中,往往會發現非 Windows 系統也遭到入侵。 系統若在 Windows 和非 Windows 環境之間提供「橋接器」,更是如此,例如 Windows 和 UNIX 或 Linux 用戶端存取的檔案伺服器、為多個作業系統提供驗證服務的目錄,或在不同目錄間同步處理資料的中繼目錄。
AD DS 因不僅為 Windows 系統提供集中式存取和組態管理功能,也為其他用戶端提供,而被視為目標。 任何其他提供驗證和組態管理服務的目錄或應用程式,都可以 (也將會) 被下定決心的攻擊者視為目標。 雖然本文件主要討論有哪些保護機制可降低 Active Directory 安裝遭入侵的可能性,但每個包含非 Windows 電腦、目錄、應用程式或資料存放庫的組織,也都應該做好準備防禦對這些系統發動的攻擊。
初始缺口目標
沒有人會刻意建置讓組織易受入侵的 IT 基礎結構。 首次建構的 Active Directory 樹系通常是原始而嶄新的。 一段時間後,組織會取得新的作業系統和應用程式,並將其新增至樹系。 隨著 Active Directory 提供的管理性優勢得到認可,會有越來越多內容新增至目錄、更多人將其電腦或應用程式與 AD DS 整合,且網域也會升級以支援最新版的 Windows 作業系統提供的新功能。 但另一方面,在經過一段時間後,即使新增了基礎結構,基礎結構的其他部分也可能無法像最初那樣妥善維護,系統與應用程式皆運作正常,因此不會受到關注,而組織會逐漸忘記他們尚未消除其舊有的基礎結構。 根據我們在評估遭入侵的基礎結構時觀察到的情況,環境越舊、越大和越複雜,就越可能有許多常遭惡意探索的弱點。
無論攻擊者的動機為何,大部分的資訊安全性缺口都是從一次入侵一或兩個系統開始的。 這些初始事件 (或網路進入點) 通常會利用原本可修復、但實際上未修復的漏洞。 2012 年資料外洩調查報告 (DBIR) 是 Verizon RISK Team 與一些國家安全機構和其他公司合作進行的年度研究,報告指出 96% 的攻擊「並非高難度」,且「97% 的資料外洩可透過簡單或中介控制來避免」。這些發現可能是後續常遭惡意探索的弱點直接造成的後果。
防毒和反惡意程式碼部署的缺口
法則八:過時的惡意程式碼掃描器只比完全沒有掃描器略好一些。 - 安全性十大定律 (2.0 版)
分析組織的防毒軟體和反惡意程式碼部署,通常可揭露一個環境是否為大部分的工作站設定了已啟用且最新的防毒軟體。 例外狀況通常是不常連線至公司環境或員工裝置的工作站,因此其防毒軟體和反惡意程式碼軟體可能難以部署、設定和更新。
不過,在許多遭入侵的環境中,伺服器母體往往得不到一致的保護。 如 2012 年資料外洩調查所報告,有 94% 的資料入侵涉及伺服器 (比前一年增加了 18%),而有 69% 的攻擊涉及惡意程式碼。 在伺服器母體中,不時會出現防毒軟體和反惡意程式碼安裝的設定不一致、過時、設定錯誤,甚至停用的情況。 在某些情況下,防毒軟體和反惡意程式碼軟體是由管理人員停用的,但在其他情況下,則是攻擊者在透過其他弱點入侵伺服器之後停用了軟體。 當防毒軟體和反惡意程式碼軟體停用後,攻擊者會在伺服器上植入惡意程式碼,並傾全力在整個伺服器母體傳播入侵。
重要的是,不僅要確保系統受到最新的全方位惡意程式碼防護的保護,同時也要監視系統是否停用或移除了防毒軟體和反惡意程式碼軟體,並在保護手動停用時自動將其重新啟動。 雖然沒有任何防毒軟體和反惡意程式碼軟體可保證能夠防止及偵測所有感染,但正確設定和部署的防毒軟體和反惡意程式碼實作,可以降低感染的可能性。
修補不完整
法則三:若未及時採用安全性修正程式,就無法長期掌控您的網路。 - 安全性管理 10 大定律
Microsoft 會在每個月的第二個星期二發佈安全性公告,但在少數情況下,若確認弱點會對客戶系統造成緊急風險,安全性更新也可能在每月安全性更新 (也稱為「頻外」更新) 之間發佈。 無論是小型企業將 Windows 電腦設定為使用 Windows Update 來管理系統和應用程式修補,還是大型組織使用 Microsoft Endpoint Configuration Manager 等管理軟體,根據詳細的階層式計劃來部署修補程式,許多客戶都會以相對及時的方式修補其 Windows 基礎結構。
不過,很少有基礎結構僅包含 Windows 電腦和 Microsoft 應用程式,且在遭到入侵的環境中,組織的修補程式管理策略往往會出現缺口。 在這些環境中,Windows 系統的修補方式並不一致。 非 Windows 作業系統頂多只是偶爾修補。 商用現貨 (TS) 應用程式包含已有相關修補程式、但尚未套用的弱點。 網路裝置往往設定了原廠預設認證,但在安裝多年後仍沒有更新韌體。 不再受廠商支援的應用程式和作業系統儘管無法再針對弱點進行修補,但通常會持續執行。 每個未修補的系統都代表攻擊者另一個潛在的進入點。
IT 消費化帶來了其他挑戰,因為員工擁有的裝置用來存取公司擁有的資料,而組織卻可能幾乎無法控制員工個人裝置的修補和設定。 企業級硬體通常隨附可供企業現用的設定選項和管理功能,但代價是個別自訂和裝置選項的選擇較少。 以員工為中心的硬體提供範圍更廣的製造商、廠商、硬體安全性功能、軟體安全性功能、管理功能和設定選項,而許多企業功能可能完全付之闕如。
修補程式和弱點管理軟體
如果 Windows 系統和 Microsoft 應用程式已具備有效的修補程式管理系統,則未修補的弱點所產生的部分受攻擊面即獲得解決。 不過,除非非 Windows 系統、非 Microsoft 應用程式、網路基礎結構和員工裝置也保有最新的修補程式和其他修正程式,否則基礎結構仍然容易受到攻擊。 在某些情況下,應用程式的廠商可能會提供自動更新功能;在其他情況下,可能需要擬定相關方法,定期擷取並套用修補程式和其他修正程式。
過時的應用程式和作業系統
「您無法預期一個已使用六年的作業系統,可保護您免於遭受問世僅六個月的攻擊。 - 用有 10 年企業安裝保護經驗的資訊安全專業人員
雖然「及時更新,保持最新」聽起來像是行銷用語,但過時的作業系統和應用程式卻會在許多組織的 IT 基礎結構中造成風險。 在 2003 年發行的作業系統可能仍受廠商支援,並提供可解決弱點的更新,但該作業系統不一定會包含較新版作業系統中新增的安全性功能。 過時的系統甚至可能要削弱特定 AD DS 安全性設定,才能支援這些電腦的次要功能。
由不再支援應用程式的廠商所撰寫而使用舊版驗證通訊協定的應用程式,通常無法重新設計為支援更強大的驗證機制。 不過,組織的 Active Directory 網域仍可設定為儲存 LAN Manager 雜湊或可逆向加密的密碼,以支援這類應用程式。 在較新的作業系統導入前撰寫的應用程式,可能無法在目前的作業系統上正常運作,甚或完全無法運作,因此組織必須維護越來越舊的系統,在某些情況下,甚至需維護完全不受支援的硬體與軟體。
即使在組織已將其網域控制站更新為 Windows Server 2012、Windows Server 2008 R2 或 Windows Server 2008 的情況下,成員伺服器母體中往往仍會有很大一部分在執行 Windows Server 2003、Windows 2000 Server 或 Windows NT Server 4.0 (完全不受支援)。 組織維持老化系統的時間越長,功能集之間的差距就越大,生產系統因而不受支援的可能性也就越高。 此外,維護 Active Directory 樹系的時間越長,我們就越有可能在升級計劃中發現遺漏的舊版系統和應用程式。 這可能意味著執行單一應用程式的單一電腦可能會形成全網域或全樹系的弱點,因為 Active Directory 已設定為支援其舊版通訊協定和驗證機制。
若要消除舊版系統和應用程式,您應先全力將其找出並編目,然後再確認是否要升級或取代應用程式或主機。 對於既沒有支援也沒有升級路徑的高度特殊化應用程式,儘管可能很難找到其替代品,但您可以利用名為「創造性破壞」的概念,將舊版應用程式取代為提供必要功能的新應用程式。 本文件稍後的「規劃入侵因應措施」會更深入地說明規劃入侵因應措施。
設定錯誤
法則四:在未曾受到保護的電腦上安裝安全性修正程式,並沒有太多好處。 - 安全性管理 10 大定律
即使是在系統大致上保持最新狀態且定期修補的環境中,我們也常會發現作業系統、電腦上執行的應用程式和 Active Directory 的缺口或設定錯誤。 某些設定錯誤只會致使本機電腦遭到入侵,但在電腦遭到「掌控」後,攻擊者通常會極力設法將入侵進一步傳播到其他系統,且最終傳播到 Active Directory。 以下是我們常會發現設定帶有風險的一些領域。
在 Active Directory 中
Active Directory 中最常被攻擊者視為目標的帳戶,是屬於最高特殊權限群組成員的帳戶,例如 Active Directory 中的 Domain Admins (DA)、Enterprise Admins (EA) 或內建系統管理員 (BA) 群組的成員。 這些群組的成員資格應盡可能縮減為最少量的帳戶,以限定這些群組的受攻擊面。 您甚至可以消除這些特殊權限群組中的「永久」成員資格;也就是說,您可以實作設定,讓您只有在需要這些群組的全網域和全樹系權限時,才暫時填入這些群組。 使用高特殊權限帳戶時,應僅在指定的安全系統上使用,例如網域控制站或安全系統管理主機。 如需實作前述所有設定的詳細輔助資訊,請參閱減少 Active Directory 的受攻擊面。
我們在評估 Active Directory 中最高特殊權限群組的成員資格時,常會發現三個最高特殊權限群組的成員資格全都過多。 在某些情況下,組織在 DA 群組中會有數十個、甚至數百個帳戶。 在其他情況下,組織會將帳戶直接放入內建系統管理員群組中,認為該群組的「特殊權限低於」DA 群組。 事實並非如此。 我們常會在樹系根網域中發現少許 EA 群組的永久成員,儘管需要 EA 權限的情況不僅少見,也只是暫時性的。 在這三個群組中尋找 IT 使用者的日常系統管理帳戶也是常見的,即使這實際上是冗餘的設定。 如減少 Active Directory 的受攻擊面中所述,一個帳戶無論是其中一個群組還是所有群組的永久成員,該帳戶都可用來入侵、甚至破壞 AD DS 環境及其管理的系統與帳戶。 減少 Active Directory 的受攻擊面中提供了在 Active Directory 中安全設定和使用特殊權限帳戶的建議。
在網域控制站上
在評估網域控制站時,我們常會發現其設定和管理方式與成員伺服器並無不同。 網域控制站有時會執行在成員伺服器上安裝的相同應用程式和公用程式,其原因並非網域控制站有需要,而是因為應用程式是標準組建的一部分。 這些應用程式可能會在網域控制站上提供最少的功能,但卻因為所需的組態設定會開放連接埠、建立高特殊權限的服務帳戶,或是為不應基於驗證和群組原則應用程式以外的任何用途連線至網域控制站的使用者授與系統存取權,而使其受攻擊面明顯增大。 在某些入侵行為中,攻擊者使用了已安裝在網域控制站上的工具,不僅是為了獲取網域控制站的存取權,還會修改或損害 AD DS 資料庫。
在擷取網域控制站上的 Internet Explorer 組態設定時,我們發現使用者是使用在 Active Directory 中具有高權限層級的帳戶登入的,並使用這些帳戶從網域控制站存取網際網路和內部網路。 在某些情況下,帳戶已在網域控制站上設定 Internet Explorer 設定以允許下載網際網路內容,且已從網際網路網站下載免費軟體公用程式,並安裝在網域控制站上。 依預設會為使用者和系統管理員啟用 Internet Explorer 增強式安全性設定,但我們常發現系統管理員的部分會停用。 當高特殊權限帳戶存取網際網路,並將內容下載到任何電腦時,該電腦將面臨重大風險。 若該電腦是網域控制站,整個 AD DS 安裝都會面臨風險。
保護網域控制站
網域控制站應被視為關鍵基礎結構元件,相較於檔案、列印和應用程式伺服器,應有更嚴格的安全性和設定。 網域控制站只應執行其運作所需,或保護網域控制站免受攻擊所需的軟體。 網域控制站不應獲准存取網際網路,且應由群組原則物件 (GPO) 設定並強制執行安全性設定。 保護網域控制站不受攻擊中提供了安全地安裝、設定和管理網域控制站的詳細建議。
在作業系統內
法則二:若不法人士可對您的電腦更改作業系統,那就不再是您的電腦了。 - 安全性十大定律 (2.0 版)
雖然某些組織會為不同類型的伺服器建立基準設定,且僅允許在作業系統安裝後進行有限的自訂,但我們在分析遭入侵的環境時,常會發現許多伺服器是以臨機操作方式部署的,並且以手動方式單獨設定。 執行相同功能的兩部伺服器之間的設定可能完全不同,且兩部伺服器都未安全地設定。 相反地,伺服器設定基準可能會一致地強制執行,但也一致地設定錯誤;也就是說,伺服器的設定方式會在指定類型的所有伺服器上形成相同的弱點。 設定錯誤包括多種實務操作,像是停用安全性功能、授與過多的帳戶權利與權限 (特別是服務帳戶)、在不同系統使用相同的本機認證,以及允許安裝未經授權的應用程式和公用程式而自行構成弱點。
停用安全性功能
組織有時會停用具有進階安全性的 Windows 防火牆 (WFAS),因其認定 WFAS 難以設定,或在設定時需要大量工作。 不過,自 Windows Server 2008 起,任何角色或功能安裝於伺服器上時,都會預設該角色或功能運作所需的最低權限,且 Windows 防火牆會自動設定為支援該角色或功能。 若停用 WFAS (且不使用既有的另一個主機型防火牆),組織會增加整個 Windows 環境的受攻擊面。 周邊防火牆可以防禦直接從網際網路對環境發動的攻擊,但無法抵禦攻擊利用其他攻擊媒介的攻擊 (例如偷渡式下載攻擊),或來自內部網路上其他遭入侵系統的攻擊。
伺服器上的使用者帳戶控制 (UAC) 設定有時會因為管理人員認為提示造成困擾而停用。 雖然 Microsoft 支援服務文章 2526083 說明了可在 Windows Server 上停用 UAC 的案例,但除非您執行伺服器核心安裝 (依設計會停用 UAC),否則即不應直接在伺服器上停用 UAC,而未先審慎考量和研究。
在其他情況下,伺服器設定會設定為較不安全的值,因為組織將過時的伺服器組態設定套用至新的作業系統,例如,將 Windows Server 2003 基準套用至執行 Windows Server 2012、Windows Server 2008 R2 或 Windows Server 2008 的電腦,而不變更基準以反映作業系統中的變更。 部署新的作業系統時,請檢閱安全性變更和組態設定以確保實作的設定適用於新的作業系統,而不是將舊的伺服器基準沿用到新的作業系統。
授與過高的權限
在我們評估的絕大多數環境中,都為 Windows 系統上的本機和網域型帳戶授與了過高的權限。 使用者在其工作站上被授與本機系統管理員權限,成員伺服器所執行的服務設定了超出其運作所需的權限,而伺服器母體中的本機系統管理員群組包含數十個、甚或數百個本機和網域帳戶。 電腦上只要有一個特殊權限帳戶遭到入侵,就可讓攻擊者入侵每個登入電腦的使用者和服務帳戶,並獲取及利用認證將入侵傳播至其他系統。
儘管傳遞雜湊 (PTH) 和其他認證竊取攻擊現今無處不在,但這是因為有免費的工具讓攻擊者在取得電腦系統管理員或系統層級存取權時,能夠輕鬆擷取其他特殊權限帳戶的認證。 即使沒有工具可用來從登入工作階段獲取認證,有特殊權限可存取電腦的攻擊者,也可輕鬆安裝按鍵輸入記錄器以擷取按鍵輸入、螢幕擷取畫面和剪貼簿內容。 對電腦具有特殊權限存取權的攻擊者,可以停用反惡意程式碼軟體、安裝 rootkit、修改受保護的檔案,或在電腦上安裝惡意程式碼,以自動執行攻擊或將伺服器轉變為偷渡式下載主機。
用來將入侵行為擴及單一電腦外的策略不盡相同,但傳播入侵的關鍵,是取得對其他系統的高特殊權限存取權。 減少對任何系統具有特殊權限存取權的帳戶數目,不僅可減少該電腦的受攻擊面,還能降低攻擊者從電腦獲取重要認證的可能性。
標準化本機系統管理員認證
長期以來,安全專家持續爭論將 Windows 電腦上的本機系統管理員帳戶重新命名是否有價值。 就本機系統管理員帳戶而言,真正重要的是,在多部電腦間是否為帳戶設定了相同的使用者名稱和密碼。
如果本機系統管理員帳戶在不同伺服器命名為相同的值,且指派給帳戶的密碼也設定為相同的值,攻擊者即可在已取得系統管理員或系統層級存取權的一部電腦上擷取帳戶的認證。 攻擊者無須在攻擊之初入侵系統管理員帳戶;他們只需入侵屬於本機系統管理員群組的使用者帳戶,或是設定為以 LocalSystem 執行或具有系統管理員權限的服務帳戶。 然後,攻擊者可以擷取系統管理員帳戶的認證,並在網路登入中對網路上的其他電腦重新執行這些認證。
只要有另一部電腦的本機帳戶具有與呈現的帳戶認證相同的使用者名稱和密碼 (或密碼雜湊),登入嘗試就會成功,且攻擊者會取得目標電腦的特殊權限存取權。 在目前的 Windows 版本中,依預設會停用內建系統管理員帳戶,但在舊版作業系統中,該帳戶仍會預設為啟用。
注意
某些組織刻意將本機系統管理員帳戶設定為啟用,認為這樣可以在所有其他特殊權限帳戶都鎖定在系統之外時提供「保障」。 不過,即使本機系統管理員帳戶停用,且沒有其他帳戶可以啟用該帳戶或以系統管理員權限登入系統,系統仍可在開機時進入安全模式,且內建的本機系統管理員帳戶也可重新啟用,如 Microsoft 支援服務文章 814777 中所述。 此外,如果系統仍可成功套用 GPO,則可以修改 GPO 以 (暫時) 重新啟用系統管理員帳戶,或設定「受限群組」以將網域型帳戶新增至本機系統管理員群組。 可以執行修復,且系統管理員帳戶可以再次停用。 若要有效防止使用內建本機系統管理員帳戶認證的橫向入侵,必須為本機系統管理員帳戶設定唯一的使用者名稱和密碼。 若要透過 GPO 部署本機系統管理員帳戶的唯一密碼,請參閱 Technet 上的透過 GPO 管理內建系統管理員帳戶密碼的解決方案。
允許安裝未經授權的應用程式
法則一:如果不法人士可誘使您在電腦上執行他的程式,那就不再是您一個人的電腦了。 - 安全性十大定律 (2.0 版)
無論組織是否在不同伺服器間部署一致的基準設定,都不應允許安裝不屬於伺服器已定義角色的應用程式。 若允許安裝不屬於伺服器指定功能的軟體,伺服器就有可能不慎安裝會擴大伺服器受攻擊面的軟體 (或遭惡意安裝)、形成應用程式弱點,或造成系統不穩定。
應用程式
如前所述,應用程式在安裝時設定使用的帳戶,常會被授與比應用程式實際需要還要多的權限。 在某些情況下,應用程式的文件會指定服務帳戶必須是伺服器的本機系統管理員群組成員,或必須設定為在 LocalSystem 的內容中執行。 這通常不是因為應用程式需要這些權限,而是因為判斷應用程式服務帳戶需要哪些權限,需投入額外的時間和精力。 如果應用程式未以應用程式及其設定的功能運作所需的最低權限安裝,不法人士只需利用應用程式權限就能攻擊系統,而無須對作業系統本身進行任何攻擊。
缺乏安全的應用程式開發做法
基礎結構是為了支援商業工作負載而存在的。 在自訂應用程式中實作這些工作負載時,請務必確定應用程式是使用安全最佳做法開發的。 在分析企業範圍事件的根本原因時常會發現,最初的入侵是透過自訂應用程式 (特別是面向網際網路的應用程式) 發動的。 這類入侵大多藉由眾所周知的攻擊來完成,例如 SQL 插入 (SQLi) 和跨網站指令碼 (XSS) 攻擊。
SQL 插入是一項應用程式弱點,會允許使用者定義的輸入修改傳至資料庫執行的 SQL 陳述式。 此輸入可透過應用程式中的欄位、參數 (例如查詢字串或 Cookie) 或其他方法提供。 此插入的結果是,提供給資料庫的 SQL 陳述式會與開發人員所預期的完全不同。 以評估使用者名稱/密碼組合時所使用的常見查詢為例:
SELECT userID FROM users WHERE username = 'sUserName' AND password = 'sPassword'
資料庫伺服器在收到此查詢時,會指示伺服器查看使用者資料表,並傳回使用者名稱和密碼與使用者所提供的內容 (假設是透過某種登入形式提供的) 相符的任何 userID 記錄。 在此情況下,開發人員的意圖自然是只有在使用者可提供正確的使用者名稱和密碼時,才傳回有效的記錄。 若其中一項不正確,資料庫伺服器即無法找到相符的記錄,而會傳回空的結果。
當攻擊者執行非預期的動作時 (例如,提供自己的 SQL 來取代有效的資料),就會發生此問題。 由於資料庫伺服器會即時解譯 SQL,插入的程式碼會像是由開發人員親自輸入一樣進行處理。 例如,如果攻擊者輸入 administrator 作為使用者識別碼,並輸入 xyz OR 1=1 作為密碼,則資料庫處理的結果陳述式將是:
SELECT userID FROM users WHERE username = 'administrator' AND password = 'xyz' OR 1=1
當資料庫伺服器處理此查詢時,將會在查詢中傳回資料表中的所有資料列,因為 1=1 一律會評估為 True,因此是否已知或提供正確的使用者名稱和密碼,並不重要。 在大部分情況下,最終結果是使用者會以使用者資料庫中第一個使用者的身分登入;這通常是系統管理使用者。
除了登入以外,這類格式不正確的 SQL 陳述式也可以用來新增、刪除或變更資料,甚至從資料庫中卸除 (刪除) 整個資料表。 在 SQLi 與過度權限結合的極端情況下,可以執行作業系統命令來建立新使用者、下載攻擊工具,或執行攻擊者選擇的任何其他動作。
在跨網站指令碼中,會在應用程式的輸出形成弱點。 攻擊始於攻擊者向應用程式提供格式不正確的資料,但在此情況下,格式不正確的資料採用指令碼程式碼的形式 (例如 JavaScript),由受害者的瀏覽器執行。 惡意探索 XSS 弱點,可讓攻擊者在使用者已啟動瀏覽器的內容中執行目標應用程式的任何功能。 XSS 攻擊通常是由網路釣魚電子郵件發動,做法是誘導使用者選取特定連結,以連線至應用程式並執行攻擊程式碼。
在網路銀行和電子商務案例中常會利用 XSS;攻擊者可在遭利用使用者的內容中購物或轉帳。 在對自訂 Web 型身分識別管理應用程式發動針對性攻擊的案例中,攻擊者可利用 XSS 建立自己的身分識別、修改權限和權利,並實行系統性入侵。
本文件不提供跨網站指令碼和 SQL 插入的完整討論,但開放式 Web 應用程式安全性專案 (OWASP) 發佈了十大排名清單,其中深入討論了弱點和對策。
無論對基礎結構安全性做了多少投資,如果在基礎結構內部署了設計和撰寫不當的應用程式,環境就會容易受到攻擊。 即使是安全性良好的基礎結構,也往往無法對這些應用程式攻擊提供有效的對策。 使問題更為複雜的是,設計不良的應用程式可能需要為服務帳戶授與過多權限,才能正常運作。
Microsoft 安全性開發生命週期 (SDL) 是一組旨在提高安全性的結構化程序控制;始於需求收集之初,延伸到應用程式生命週期,直到應用程式除役為止。 這種有效安全性控制的整合不僅具有安全方面的重要性,對於確保應用程式安全性符合成本和排程效益,也至關重要。 在程式碼實際完成時評估應用程式的安全性問題需要組織僅在部署應用程式之前甚至之後做出有關應用程式安全性的決策。 組織可以選擇在將應用程式部署至生產環境之前解決應用程式缺陷 (這會產生成本和延遲),或者,可以將應用程式部署至具有已知安全性缺陷的生產環境中 (這會使組織面臨入侵風險)。
有些組織將修正生產程式碼安全性問題的整體成本設為每個問題 10,000 美元以上,在沒有有效 SDL 的情況下開發的應用程式,每 100,000 行程式碼平均可能會有超過 10 個高嚴重性問題。 在大型應用程式中,成本會迅速上升。 相較之下,許多公司會在 SDL 的最終程式碼檢閱階段設定每 100,000 行程式碼設定少於一個問題的基準,並致力於杜絕生產環境中的高風險應用程式出現問題。
實作 SDL 可藉由在收集及設計應用程式的需求之初納入安全性需求來改善安全性,進而為高風險應用程式提供威脅模型化:需要對開發人員進行有效的訓練和監視;且需要清楚、一致的程式碼標準和做法。 SDL 的最終效果是應用程式安全性顯著提升,同時降低應用程式的開發、部署、維護和除役成本。 本文件不詳細討論 SDL 設計和實作,如需詳細的指引和資訊,請參閱 Microsoft 安全性開發生命週期。