RASP:實現應用運行時的自我保護

過去十年來,最有可能實現的應用安全解決方案之一可能要屬應用運行時的自我防護機制(runtime application self-protection, RASP)。今年,RASP進入了NIST800-53的最新版本中,作為關鍵控制的項目列表中的一員。
什么是RASP?
根據Gartner的定義,RASP是“一種建立在應用中,或者連接在應用運行環境中的安全技術;該技術可以控制應用執行情況,并且檢測和組織實時的攻擊”。該概念在2012年被當時的Gartner副總裁Joseph Feiman(現WhiteHat Security首席戰略官)提出。
一般而言,WAF會防止攻擊者接觸到墻后的脆弱應用;而RASP的理念是讓應用自己能夠防御實時的攻擊。
RASP如何實現?
RASP會在應用附近部署代理,從而在安全事件發生時可以進行控制。RASP會觀測并分析應用進程,以及運行時進入的數據。理論上,使用RASP的應用可以識別SQL注入、跨站點腳本攻擊,并防止威脅直達其攻擊目標。
RASP技術的挑戰
盡管說RASP的理念很美好,但是Feiman認為,這項技術還未完全演化成為一項獨立的技術。因此,它暫時在企業的應用中還極其有限,原因有四:
RASP需要插樁,從而可能無意中導致應用崩潰,但企業顯然不想看到在運行時的應用環境里有代理。
RASP和編程語言有關聯——每個代理都需要基于應用本身使用的語言。而幾十種應用語言,以及各種語言形成的框架,使得RASP代理很難適配。
RASP同時很消耗CPU。代理消耗的CPU性能和應用差不多,從而會導致應用的運行速度降低。
RASP還可能將正常的接入誤認為是攻擊,從而阻斷。
Feiman看來,這四點阻礙了RASP的使用。而應用安全廠商Sqreen的CTO,JB Aviat,贊同了這些觀點:“這些問題確實引發了人們對RASP使用的擔憂。但是,我們認為這些問題源自RASP不成熟的技術和使用方式,而不是RASP自身的理念。”
Aviat認為,安全人員應該只使用RASP檢測和阻斷真正成功的攻擊,從而降低誤報率,并且多種語言進行結合,減少對性能和部署的影響。
RASP前景
Feiman認為,像RASP和WAF這樣的解決方案是基于不顧一切要保護應用數據的思想出現的,但這樣的效率是不足的。市場需要的是能夠檢測,而非防范的解決方案。為了解決RASP帶來的一系列的問題,他和他在WhiteHat的團隊正在測試一種應用安全的技術,在不使用插樁的情況下進行應用測試。
Feiman同樣預言,RASP不會成為單獨的技術,而最終會被像Amazon AWS和Microsoft Azure云平臺這樣的應用運行時平臺所吸收。這些云廠商可能會通過收購的方式將RASP能力結合進自身的平臺。
不過,Aviat則持相反觀點,他認為RASP就是一項獨立的技術。
他希望RASP成為任何一種應用安全策略中的關鍵元素——就像WAF和SCA一樣。他提到,RASP已經被NIST認可,成為降低應用風險的一項關鍵技術。在未來,RASP只會越來越容易部署,涵蓋的安全范圍越來越廣,會以越來越高效的方式覆蓋大部分脆弱點。