全部產品
Search
文件中心

Security Center:什麼是應用防護

更新時間:Dec 16, 2025

應用防護功能基於RASP(Runtime Application Self-Protection)技術,通過在應用運行時檢測攻擊並進行應用保護,為應用提供安全防禦。您無需修改代碼,只需在主機或容器環境的應用中部署RASP探針,即可為應用提供強大的安全防護能力,並抵禦絕大部分未知漏洞所使用的攻擊手法。

功能原理

應用防護使用RASP技術,在應用程式內部通過鉤子(Hook)關鍵函數,即時監測應用在運行時與其他系統的互動過程。當應用出現可疑行為時,應用防護會根據當前上下文環境識別並阻斷攻擊,有效地為您主機上的Web業務進程提供應用漏洞、0day漏洞和記憶體馬攻擊等防護能力。

應用情境和優勢

  • 保障應用內部安全:不關注流量來源,只關注應用行為,可防禦南北向+東西向的威脅;伴隨應用啟動而運行,作為應用資產最後一道防線實現應用預設安全。

  • 輕鬆應對花式編碼和多種加密流量:RASP能夠看到應用的上下文,不管請求怎麼變形,最終應用執行的動作保持不變,只要身份和行為不匹配,就可以檢測到異常;相對於網路邊界裝置無法審計加密流量的問題,RASP可以從應用程式內部擷取完整解密後的請求資料。

  • 低誤判漏報可防禦0day漏洞:RASP是從應用內部對關鍵函數操作的資料進行分析,可忽略無法真實執行的攻擊,減少大量的誤判和漏報;針對0day漏洞,無論攻擊入口如何變化、攻擊手段如何隱蔽,都無法繞開最終關鍵函數的執行過程,因此RASP可以有效攔截。

  • 攻擊溯源漏洞定位修複:RASP還能為安全人員和開發人員提供詳盡的攻擊鏈路,包括攻擊原始Payload、代碼呼叫堆疊等資訊,方便他們進行漏洞定位、複現以及修複。

  • 營運成本低:部署簡單,只需在控制台接入,無需維護和更新具體規則。

使用限制

僅支援防護Java和PHP應用。支援在安裝了Security Center用戶端的阿里雲伺服器、第三方廠商雲端服務器和線下IDC伺服器中使用。支援的作業系統如下:

作業系統類型

支援的作業系統

Windows(64位)

  • Windows Server 2022

  • Windows Server 2019

  • Windows Server 2016

  • Windows Server 2012

  • Windows Server 2008

  • Windows 11

  • Windows 10

Linux(64位)

  • Alibaba Cloud Linux

  • AlmaLinux

  • Anolis OS

  • CentOS 6、7、8

  • CentOS Stream

  • Debian 8及以上版本

  • Gentoo

  • OpenSUSE

  • RHEL 6、7、8、9

  • Rocky Linux

  • SUSE Linux Enterprise Server

  • Ubuntu 14.04及以上版本

  • 中標麒麟 V7、銀河麒麟V10

  • TencentOS

  • Oracle Linux 7、8、9

  • openEuler 20.03、22.03

  • EulerOS

  • Amazon Linux 2、2023

支援的能力

攻擊檢測(Java應用)

下表介紹應用防護可檢測並攔截的攻擊類型及相關防護建議。

攻擊類型

說明

防護建議

JNI注入

JNI注入是一種通用的RASP(Runtime Application Self-Protection)繞過手段。當攻擊者拿到代碼執行許可權後,可以通過Java Native函數去調用外部的惡意動態連結程式庫,從而繞過Java層的安全防護,並隱匿具體的惡意行為。

您的伺服器可能存在代碼執行漏洞,請檢查漏洞的位置並限制執行代碼的功能。

SQL注入

SQL注入手段通過把SQL命令插入到頁面請求或Web表單的查詢字串中,以達到欺騙伺服器執行指定SQL語句的目的。它可以通過在Web表單中輸入SQL語句,得到存在安全性漏洞的網站上的資料。

SQL注入是由拼接SQL語句引起的。請儘可能使用先行編譯來處理傳入的參數,或通過白名單和黑名單來限制參數的拼接。

XXE

指XML外部實體注入漏洞(XML External Entity Injection)。當XML檔案在引用外部實體時,通過構造惡意內容,可以導致任意檔案讀取,命令執行和內網攻擊等不良後果。

請檢查應用程式在解析XML時是否需要載入外部實體。如果不需要,請在XML解析配置中禁用外部實體。

惡意DNS查詢

惡意DNS查詢存在多種利用方式。攻擊者極有可能通過DNS協議來突破內網的網路限制,從而將敏感資訊帶出內網,也可能通過DNS協議去探測內網系統是否存在SSRF、JNDI注入等漏洞。

惡意DNS查詢是由伺服器向使用者控制的參數發送請求所引起的。請檢查參數並通過白名單進行限制。

惡意反射調用

RASP自保護模組,禁止攻擊者通過反射的方式去修改運行時RASP的相關資料。

您的伺服器可能存在代碼執行漏洞。請檢查漏洞的位置並限制執行代碼的功能。

惡意外連

SSRF(Server-side request forgery)伺服器端請求偽造漏洞指的是攻擊者通過構造由服務端發起的請求,對網站內部系統進行攻擊。

修複SSRF漏洞需要限制伺服器請求的目標位址範圍,通過白名單機制只允許訪問安全的內部資源,並禁用不必要的外部網路訪問。

惡意檔案讀寫

Java提供RandomAccessFile,用於檔案讀寫操作。當使用該Class進行檔案讀寫的時候,如果未對檔案路徑、檔案內容進行限制,攻擊者可能讀取到系統敏感檔案,也可能上傳木馬檔案。

請檢查檔案讀取和上傳是否正常。如果出現異常,請檢查函數代碼,並通過黑名單進行限制。

惡意檔案上傳

對於網站提供的檔案上傳功能,如果未對上傳檔案的類型進行限制,攻擊者可能通過上傳木馬檔案來擷取伺服器的更大許可權,從而造成嚴重危害。

請限制上傳檔案的類型,禁止上傳具有執行許可權的檔案,如JSP。

命令執行

命令執行漏洞是指伺服器沒有對執行的命令進行過濾,使用者可以隨意執行系統命令。

通常遠程命令執行是由Web Shell或伺服器的危險代碼引起的。請檢查命令執行的位置。如果是Web Shell,請及時刪除。如果是伺服器的正常功能,則可以通過白名單限制執行的命令。

目錄遍曆

網站自身的配置缺陷可能會使得網站目錄被任意瀏覽,導致隱私資訊泄露。攻擊者可以利用該資訊對網站進行攻擊。

請檢查目錄遍曆操作是否正常。如果異常,請檢查函數的代碼,並通過黑名單對相關命令(如“./”和“../”)進行限制。

記憶體馬注入

記憶體馬是一種新興的木馬技術,攻擊者通過一些特殊的技術手段將木馬注入到記憶體中,可以有效繞過WAF和主機防禦的檢測。

您的伺服器可能存在代碼執行漏洞。請檢查漏洞的位置並限制執行代碼的功能。

任意檔案讀取

對於網站提供的檔案下載和讀取功能,如果是直接通過絕對路徑或目錄穿越符對檔案進行讀取和下載,沒有相關檔案路徑的限制,那麼攻擊者就可以利用這種方式擷取敏感資訊,並對伺服器進行攻擊。

請檢查檔案讀取操作是否正常。如果異常,請檢查函數的代碼,並使用黑名單對傳入參數(如“./”和“../”)進行限制。

線程注入

線程注入是一種通用的RASP繞過手段。當攻擊者獲得代碼執行許可權後,可以通過建立線程的方式使RASP丟失運行環境的上下文,從而影響RASP的防禦能力。

您的伺服器可能存在代碼執行漏洞。請檢查漏洞的位置並限制執行代碼的功能。

惡意Attach

Attach API是Java提供的動態修改位元組碼技術,該功能可以實現動態修改運行時應用的位元組碼。很多攻擊者通過該手法進行Agent型記憶體馬的注入,具有較高的欺騙性。

您的伺服器可能存在代碼執行漏洞。請檢查漏洞的位置並限制執行代碼的功能。

JNDI注入

當應用進行JNDI查詢的時候,若查詢的URL可以由攻擊者控制,則攻擊者可以使用伺服器去查詢惡意的連結,使得伺服器載入一些惡意Class類,實現任意代碼執行。

  • 若該漏洞源於第三方組件,請及時進行組件版本升級。

  • 若為自寫JNDI查詢代碼,請對查詢的URL進行限制,禁止一些危險協議的查詢。

危險協議使用

若服務端進行訪問的URL使用者端可控,而應用本身又未對該URL的協議進行限制,那麼攻擊者可能通過file、netdoc等危險協議對伺服器上的敏感檔案進行讀取。

請對URL可以訪問的協議進行限制。

還原序列化攻擊

Java反序列是指把字元序列恢複為Java對象的過程,在對象產生過程中,若該對象包含一些危險度較高的代碼,則攻擊者可能通過控制產生對象的成員變數在對象進行還原序列化的時候實現一些惡意攻擊。

  • 及時升級存在漏洞的組件版本。

  • 若官方還未提供漏洞修複的組件版本,請暫時關閉該功能。

任意檔案刪除

對於網站提供的檔案刪除功能,檔案刪除的介面如果沒有對檔案路徑進行限制,攻擊者就可以通過絕對路徑或目錄穿越符對任意檔案進行刪除操作,從而對伺服器進行攻擊。

請檢查檔案刪除操作是否正常。如果異常,請檢查函數的代碼,並使用黑名單對傳入參數(如“./”和“../”)進行限制。

運算式注入

運算式組件提供了十分豐富的功能,支援在運行時查詢和處理資料等,但很多運算式組件也提供了函數調用等許可權較高的功能,如果未對這些功能做限制,而攻擊者又能夠控製表達式執行的內容,那麼攻擊者將很有可能通過運算式執行任意代碼。

請對進入運算式的內容進行嚴格限制,禁止大部分Java函數的調用。若是第三方組件漏洞導致,請及時升級組件版本。

引擎注入

Java提供了較多的第三方引擎組件(如Rhino、Nashorn等JS引擎,Velocity、FreeMarker等模板引擎),這些引擎通常提供了函數調用等許可權較高的功能,如果對這些功能未作限制,而攻擊者又能夠控制引擎執行的內容,那麼攻擊者將很有可能通過引擎執行任意代碼。

請對進入引擎檔案的內容進行嚴格限制,禁止大部分Java函數的調用。若是第三方組件漏洞導致,請及時升級組件版本。

惡意Beans綁定

Java存在一些架構支援對應用運行時Beans的參數綁定,如果未對綁定Beans的類型進行限制,攻擊者就可以通過對一些敏感Beans值的修改,破壞應用的運行,甚至造成執行任意代碼。

請對可以綁定的Beans的類型進行限制,禁止對類似於Class、Classloader類型的Beans值進行修改。若是第三方組件漏洞導致,請及時升級組件版本。

惡意類載入

現階段,很多0day、WebShell的利用均依賴於惡意類的載入,一旦惡意類載入成功,攻擊者便可以通過惡意類的初始化來取得代碼執行許可權,從而進行一系列的惡意操作。

  • 若惡意類的載入是通過WebShell控制,請及時刪除WebShell。

  • 如果惡意類的載入是架構導致,請及時升級架構版本。

JSTL任意檔案包含

JSP標準標籤庫(JSTL)是一個JSP標籤集合,它封裝了JSP應用的通用核心功能。當使用者可控參數被直接拼接到JSTL標籤中而未對該參數進行任何限制的情況下,攻擊者可以構造特殊的攻擊指令碼造成任意檔案讀取、SSRF攻擊。

儘可能不要將使用者可控參數直接拼接到JSTL標籤上,如果必須這樣做,請對該參數的內容進行嚴格的白名單控制。

攻擊檢測(PHP應用)

攻擊類型

說明

防護建議

惡意檔案包含

PHP中的檔案包含漏洞是一種常見的安全性漏洞,它允許攻擊者通過操縱輸入來包含和執行任意檔案。這種漏洞通常發生在使用include()require()include_once()require_once()函數時,這些函數用於在指令碼中包含其他檔案。

建議驗證和限制使用者輸入的檔案路徑,僅允許包含應用程式目錄中的預定義檔案,以防止攻擊者插入惡意路徑。

惡意外連

SSRF(Server-side request forgery)伺服器端請求偽造漏洞指的是攻擊者通過構造由服務端發起的請求,對網站內部系統進行攻擊。

修複SSRF漏洞需要限制伺服器請求的目標位址範圍,通過白名單機制只允許訪問安全的內部資源,並禁用不必要的外部網路訪問。

還原序列化

PHP中的還原序列化漏洞是一種嚴重的安全問題,它允許攻擊者通過操縱序列化資料來執行任意函數,這種漏洞通常發生在使用unserialize()函數時。

避免直接還原序列化不可信資料,使用json_decode()或其他安全的替代方法,或者在必要時嚴格驗證和過濾還原序列化的資料來源。

回呼函數執行

回呼函數是指PHP中的array_map()array_filter()等函數,當它的參數外部可控,潛在的攻擊者就擁有了執行任意函數,乃至控制整個系統的能力。

為防止PHP中的回呼函數被濫用,確保傳遞給array_map()array_filter()等函數的回呼函數名不受使用者輸入控制,並且所有允許使用的回呼函數都應當通過白名單機制進行驗證。

惡意檔案讀寫

當調用檔案讀寫函數的時候,如果未對檔案路徑、檔案內容進行限制,攻擊者可能讀取到系統敏感檔案,也可能上傳木馬檔案。

為防止檔案讀寫相關的安全性漏洞,嚴格驗證和限制檔案路徑,只允許訪問預定義的目錄,並對檔案內容進行安全性檢查以防止惡意代碼上傳。

任意代碼執行

任意代碼執行漏洞是一種嚴重的安全性漏洞,攻擊者可以通過這一漏洞在伺服器上執行任意的程式碼片段,從而擷取伺服器的控制許可權或讀取、修改敏感性資料。這種漏洞通常源於程式未對使用者輸入進行充分驗證,導致攻擊者能夠注入惡意代碼。如果攻擊者成功利用此漏洞,可能導致資料泄露、網站被篡改或植入惡意軟體等。

建議使用嚴格的輸入驗證和輸出編碼,避免使用eval()include()等函數直接處理使用者輸入,並保持所有庫和架構的安全更新。

任意檔案讀取

如果沒有對檔案讀取介面進行過濾和限制,攻擊者就可以利用絕對路徑或目錄穿越符對檔案進行讀取和下載,從而擷取敏感資訊,對伺服器進行攻擊。

對檔案讀取介面實施嚴格的輸入驗證和路徑限制,確保僅允許訪問經過白名單驗證的檔案,並使用黑名單對傳入參數(如“./”和“../”)進行限制。

任意檔案刪除

檔案刪除的介面如果沒有相關檔案路徑的限制,攻擊者就可以通過絕對路徑或目錄穿越符對檔案進行任意刪除,對伺服器進行攻擊。

對檔案刪除介面實施嚴格的輸入驗證和路徑限制,確保僅允許刪除經過驗證的檔案,並使用黑名單對傳入參數(如“./”和“../”)進行限制。

命令執行

命令執行漏洞可以讓攻擊者直接向後台伺服器遠程注入作業系統命令或者代碼,從而控制後台系統。

對所有使用者輸入進行嚴格的驗證和過濾,避免直接使用未經處理的輸入構建作業系統命令,並儘可能使用安全的API替代系統命令執行。

目錄遍曆

網站自身的配置缺陷可能會使得網站目錄被任意瀏覽,導致隱私資訊泄露。攻擊者可以利用該資訊對網站進行攻擊。

通過配置適當的伺服器使用權限設定和使用.htaccess等檔案限制目錄訪問,確保敏感目錄不可被未經授權的使用者瀏覽。

惡意檔案上傳

檔案上傳功能如果未對上傳檔案的類型進行限制,攻擊者可能通過上傳木馬檔案來擷取伺服器的更大許可權,從而造成嚴重危害。

對上傳檔案的類型進行嚴格限制和驗證,只允許安全的檔案類型,禁止上傳具有執行許可權的檔案尾碼,如php等,並在伺服器端重新檢查檔案內容以確保其安全。

應用漏洞防禦

應用防護功能可以有效防禦應用漏洞、0day漏洞和記憶體馬等攻擊行為,防禦漏洞的原理如下圖所示。在應用漏洞應急響應過程中,藉助RASP的攻擊防護能力,可以快速阻斷攻擊,為修複應用漏洞爭取更多時間。應用防護功能還可以協助您快速定位風險來源與影響範圍。關於應用漏洞的更多資訊,請參見查看和處理漏洞image

如果您暫時無法修複應用漏洞,可先將應用進程接入RASP進行防護。您可以參考下述操作步驟為檢測出應用漏洞的應用添加RASP防護。

  1. 登入Security Center控制台

  2. 在左側導覽列,選擇風險治理 > 漏洞管理。在控制台左上方,選擇需防護資產所在的地區:中國內地非中國內地

  3. 應用漏洞頁簽,存在RASP支援即時防護標籤的漏洞為應用防護支援防護的漏洞,單擊對應漏洞操作列的立即防護

    image.png

  4. 應用防護接入面板,應用分組名稱的下拉式清單中選擇需資產需接入的應用分組,並選擇對應資產,然後單擊确定

    如果不存在所需的應用分組,您可以在下拉式清單中單擊建立應用分組,輸入應用分組名稱,並單擊確定,實現快速建立應用分組。此處建立的應用分組的防護模式防護防護策略組日常運行組

    檢測出漏洞的應用接入應用防護後,只有在應用漏洞完成了一次漏洞掃描時,在漏洞詳情頁的待處理漏洞列表中該伺服器的操作列才會顯示為已防護

應用行為分析

應用分析功能通過對接入的應用程式進行即時監測、收集和分析應用程式的行為資料,並產生報告和可視化展示,可以協助您瞭解應用的攻防詳情,進行系統安全強化。更多資訊,請參見應用行為分析

記憶體馬防禦(僅支援Java應用)

應用防護的RASP技術通過分析記憶體資料可以即時檢測記憶體馬,並支援對記憶體馬注入和記憶體馬執行過程進行攔截。更多資訊,請參見記憶體馬防禦

弱點檢測(僅支援Java應用)

下表介紹應用防護可檢測的應用弱點類型及相關修複建議。

弱點類型

風險等級

說明

修複建議

不安全的Fastjson配置

高危

應用的Fastjson開啟了還原序列化功能,該功能可能被攻擊者利用,造成遠程命令執行。如非必要,請關閉該功能。

請將Fastjson的safemode設定為true,或將autotype設定為false。

不安全的log4j配置

高危

您的log4j組件開啟了lookup功能,攻擊者可能通過該功能進行JNDI注入,從而造成遠程代碼執行漏洞。

請升級log4j到最新版本,或刪除Jar包中的org/apache/logging/log4j/core/lookup/JndiLookup.class檔案。

不安全的啟動參數

高危

當攻擊者可以訪問到JDWP調試連接埠的時候,可以通過該功能執行任意代碼,造成遠程代碼執行。

如無特殊情境,請及時關閉JDWP連接埠或者避免將JDWP連接埠暴露在公網,謹防長期啟動並執行應用開啟了JDWP連接埠。

Shiro弱密鑰

高危

Shiro應用使用了較弱的加密金鑰,攻擊者可能通過破解密鑰,進一步進行還原序列化攻擊,從而造成遠程代碼執行。

請及時修改應用中的Shiro加密金鑰。

不安全的JMX配置

中危

開啟了JMX的遠程連結,且在認證方面存在風險,攻擊者可能會遠端連線應用的JMX服務並造成命令執行風險。

請關閉JMX服務的遠端連線,或者請使用較為安全的認證口令。

不安全的Rhino配置

中危

Rhino架構中包含了危險的properties,攻擊者可能通過這些properties進行遠程代碼執行攻擊。

先升級rhnio到最新版本,然後使用SafeStandardObjects定義rhino的上下文,防止JavaScript引擎調用Java代碼。

下面是使用SafeStandardObjects定義Rhino內容相關的樣本:

 package com.aliyun.sample;

   import org.mozilla.javascript.Context;
   import org.mozilla.javascript.Scriptable;

   public class RhinoSecurityExample {
       public static void main(String[] args) {
           Context ctx = Context.enter();
           // Scriptable scope = ctx.initStandardObjects(); // 不安全的寫法
           Scriptable scope = ctx.initSafeStandardObjects(); // 安全寫法
           ctx.setOptimizationLevel(-1);
           String str = "var test={};";
           str += "test.call=function(){return 'Successful!';};";
           str += "test.call()";  // 修改:只返回JavaScript結果,不調用Java
           try {
               //傳入並執行javascript代碼
               Object result = ctx.evaluateString(scope, str, "", 1, null);
               System.out.println("JavaScript執行結果: " + result);
           } catch (Exception e) {
               e.printStackTrace();
           } finally {
               Context.exit();
           }
       }
   }

不安全的Spring配置

中危

Spring Actuator模組開啟了部分端點:heapDump、env、restart、refresh、trace、jolokia、h2-console等,可能造成敏感資訊泄露或者遠程代碼執行漏洞。

如無特殊情境,請關閉對應功能。

脆弱的登入憑證

中危

應用在登入口令安全性較弱,攻擊者可能通過爆破弱口令登入您的系統,從而擷取敏感資訊甚至伺服器許可權。

請及時修改該應用的密碼為複雜密碼。

不安全的JNDI配置

低危

您的應用存在不安全的useCodebaseOnly/rmi-trustURLCodebase/ldap-trustURLCodebase參數設定,可能存在JNDI注入風險。

請將JDK升級到最新版本,如果無法升級,在應用啟動時候添加啟動參數:

-Djava.rmi.server.useCodebaseOnly=true -Dcom.sun.jndi.rmi.object.trustURLCodebase=false -Dcom.sun.jndi.ldap.object.trustURLCodebase=false

不安全的XML實體配置

低危

XML解析外部實體功能已開啟,這可能導致您的應用遭受XXE攻擊。

如果無特殊情境,請勿使用外部實體。

資料庫弱口令

低危

應用串連資料庫時使用弱口令,攻擊者可能通過該弱口令串連您的資料庫造成敏感資訊泄露或遠程命令執行。

請及時更改應用串連資料庫的密碼為複雜密碼。

相關文檔