顛覆傳統(tǒng)安全方式,AI重新定義Web安全
從 2006 年 Amazon 發(fā)布 EC2 服務(wù)至今,已經(jīng)過(guò)去了 11 年。在這 11 年里,AWS 收入從幾十萬(wàn)美金上漲到 100 多億美金,讓云計(jì)算走進(jìn)每一家企業(yè)。
根據(jù)信通院發(fā)布的“2016 云計(jì)算白皮書(shū)”,目前近 90% 的企業(yè)已經(jīng)開(kāi)始使用云計(jì)算(包括公有云、私有云等),這說(shuō)明大規(guī)模云化對(duì)于企業(yè)而言已經(jīng)不只是趨勢(shì),更是確鑿的既成事實(shí)。
云化普及的同時(shí)也給安全帶來(lái)很多挑戰(zhàn),主要包括:
01云化導(dǎo)致以硬件設(shè)備為主的傳統(tǒng)安全方式失效
在跟企業(yè)交流時(shí),不止一家企業(yè)提出了這樣的擔(dān)心:在上公有云的過(guò)程中,因?yàn)闊o(wú)法把已購(gòu)買(mǎi)的硬件防護(hù)搬到云上,所以非常擔(dān)心業(yè)務(wù)安全性。
有趣的是,他們對(duì)于上云后的流量層攻擊反倒不擔(dān)心,因?yàn)樗麄冋J(rèn)為云上的高防 IP 等產(chǎn)品可以解決大部分問(wèn)題。云化導(dǎo)致了業(yè)務(wù)層的安全空白,這不僅發(fā)生在公有云環(huán)境,在私有云環(huán)境也時(shí)有發(fā)生。
02云化導(dǎo)致攻擊/作惡成本大大降低
云是 IT 領(lǐng)域里“共享經(jīng)濟(jì)”的再升級(jí),從最早的 IDC 租用升級(jí)進(jìn)化到 Linux kernel namespace 租用,但這種“共享經(jīng)濟(jì)”在給企業(yè)帶來(lái)成本降低、使用便利等益處的同時(shí),也給攻擊者帶來(lái)了同樣的好處。
按目前市場(chǎng)行情,攻擊者租用一個(gè)公網(wǎng)彈性 IP 的成本可低至 1 元/天,租用一個(gè) IaaS 平臺(tái)的 hypervisor 層的計(jì)算環(huán)境,每日成本也只有幾元,如果是 container 層的計(jì)算環(huán)境,成本還要更低。
在如此低的成本下,致使攻擊者不再像過(guò)去那樣花大力氣挖掘培養(yǎng)肉機(jī),而是可以在瞬間輕松擁有用于攻擊的計(jì)算網(wǎng)絡(luò)資源。
以某著名互聯(lián)網(wǎng)招聘領(lǐng)域網(wǎng)站為例,攻擊者最多可以在一天內(nèi)動(dòng)用上萬(wàn)個(gè) IP 以極低的頻率爬取核心用戶(hù)簡(jiǎn)歷。
03云化導(dǎo)致業(yè)務(wù)可控性降低,遭遇攻擊的風(fēng)險(xiǎn)大大提高
云客觀造成了業(yè)務(wù)的復(fù)雜性和不可控性:大量自身或合作方的業(yè)務(wù)都跑在同一個(gè)云上,其中任何一個(gè)業(yè)務(wù)被攻擊,都有可能對(duì)其他部分造成影響。
不可否認(rèn)的是,現(xiàn)有的 hypervisor 隔離技術(shù)很成熟,以 CPU 為例,通過(guò)計(jì)算時(shí)間片分配進(jìn)而在執(zhí)行指令間插入各種自旋鎖,可以精確控制執(zhí)行體的 CPU 分配,其他資源包括內(nèi)存、IO 也都可以恰當(dāng)?shù)目刂啤?/p>
但在所有資源里,隔離性最脆弱的就是網(wǎng)絡(luò),尤其是公網(wǎng),畢竟 NAT 出口、域名等很難被隔離。
所以,我們不得不面對(duì)這樣的現(xiàn)實(shí):在享受云計(jì)算時(shí)代紅利的同時(shí),面臨的業(yè)務(wù)層安全問(wèn)題也越來(lái)越嚴(yán)重。
機(jī)器學(xué)習(xí)是解決安全問(wèn)題的金鑰匙
機(jī)器學(xué)習(xí)發(fā)展史
由上圖可以看出,目前大紅大紫的深度學(xué)習(xí),其源頭-神經(jīng)網(wǎng)絡(luò),早在上世紀(jì) 70 年代就已經(jīng)被提出。
從上世紀(jì) 80 年代到本世紀(jì),機(jī)器學(xué)習(xí)經(jīng)歷了幾次平淡期和爆發(fā)期,隨著大數(shù)據(jù)的發(fā)展和一些熱點(diǎn)事件(如 AlphaGo 戰(zhàn)勝李世石),機(jī)器學(xué)習(xí)又一次進(jìn)入爆發(fā)期。
那么,大數(shù)據(jù)和機(jī)器學(xué)習(xí)有什么關(guān)系呢?這還要和深度學(xué)習(xí)掛鉤,從理論上講,深度學(xué)習(xí)本質(zhì)上是利用多層的神經(jīng)網(wǎng)絡(luò)計(jì)算,代替?zhèn)鹘y(tǒng)特征工程的特征選取,從而達(dá)到媲美甚至超越傳統(tǒng)特征工程進(jìn)行分類(lèi)算法的效果。
基于這個(gè)邏輯,當(dāng)標(biāo)注樣本足夠多時(shí)(即所謂“大數(shù)據(jù)”),通過(guò)深度學(xué)習(xí)就可以構(gòu)造出非常強(qiáng)大的分類(lèi)器,如判斷一個(gè)圍棋的棋局對(duì)哪方有利。
AI 隨著深度學(xué)習(xí)的火爆看似非常強(qiáng)大,但不幸的是,目前 AI 的發(fā)展成熟度遠(yuǎn)沒(méi)有達(dá)到可以取代人腦抑或接近人腦的水平。根據(jù)圖靈測(cè)試?yán)碚?,AI 本身要解決的問(wèn)題有:識(shí)別、理解、反饋。
這三個(gè)問(wèn)題逐步遞進(jìn),真正智能的機(jī)器人最終可以跟人腦一樣反饋,從而在圖靈測(cè)試中無(wú)法區(qū)分它是人還是機(jī)器。
按當(dāng)前 AI 發(fā)展情況,“識(shí)別”的進(jìn)展目前效果最好,無(wú)論是圖像、語(yǔ)音還是視頻,很多廠商都可以做到很高的識(shí)別率;但“理解”就差強(qiáng)人意了,大家都用過(guò)蘋(píng)果的 Siri,它還未能達(dá)到與人真正對(duì)話(huà)的程度。
而反饋就更難了,這要求在理解的基礎(chǔ)上不斷地應(yīng)變,同一個(gè)問(wèn)題可能因?qū)Ψ缴矸?、心情、交流?chǎng)合不同,以不同的語(yǔ)氣語(yǔ)調(diào)做出不同反應(yīng)。
所以,目前應(yīng)用機(jī)器學(xué)習(xí)效果非常好的領(lǐng)域,幾乎都是某個(gè)特定領(lǐng)域內(nèi)的識(shí)別問(wèn)題,并非通用領(lǐng)域,如人臉識(shí)別、人機(jī)對(duì)弈(人機(jī)對(duì)弈本質(zhì)上也是某個(gè)棋種領(lǐng)域的識(shí)別問(wèn)題:機(jī)器通過(guò)學(xué)習(xí)成千上萬(wàn)的棋局后,就可以自動(dòng)識(shí)別某一棋局在一方走的情況下對(duì)誰(shuí)有利。)
非常幸運(yùn)的是,安全領(lǐng)域中的問(wèn)題大多是特定場(chǎng)景下的識(shí)別問(wèn)題,而非通用場(chǎng)景,也并未涉及理解和反饋,你只需要把相關(guān)數(shù)據(jù)交給機(jī)器學(xué)習(xí)系統(tǒng),讓它做出識(shí)別判斷即可:安全或者不安全,不安全的原因。
正因?yàn)榘踩珕?wèn)題本質(zhì)是特定領(lǐng)域內(nèi)的識(shí)別問(wèn)題,所以從理論上講,機(jī)器學(xué)習(xí)非常適合應(yīng)用在安全領(lǐng)域,是解決安全問(wèn)題的金鑰匙。
機(jī)器學(xué)習(xí)在安全領(lǐng)域的應(yīng)用難點(diǎn)
雖然機(jī)器學(xué)習(xí)早已存在,但是長(zhǎng)久以來(lái)并未改變安全市場(chǎng),究其原因,主要有以下幾點(diǎn):
01安全領(lǐng)域的樣本標(biāo)注成本較高
對(duì)于機(jī)器學(xué)習(xí)而言,擁有海量、完整、客觀、準(zhǔn)確的標(biāo)注樣本異常重要,標(biāo)注樣本越多、越全面,訓(xùn)練出來(lái)的分類(lèi)器才可能越準(zhǔn)確。
對(duì)于所有行業(yè)來(lái)講,獲取樣本(標(biāo)注樣本)都不容易,而安全領(lǐng)域尤為困難。如對(duì)人臉識(shí)別的標(biāo)注,初中生甚至小學(xué)生就可以完成,但對(duì)于一次安全的威脅事件,就需要極具經(jīng)驗(yàn)的安全人員才可以完成,兩者的成本差距十分巨大。
某個(gè)注入攻擊
如上圖所示,這個(gè)注入攻擊經(jīng)多次復(fù)雜編碼,非專(zhuān)業(yè)人事很難進(jìn)行樣本標(biāo)注。所以目前在通用場(chǎng)景下,安全領(lǐng)域的深度學(xué)習(xí)落地并不多,主要原因也是很難獲取海量的標(biāo)注數(shù)據(jù)。
02安全領(lǐng)域的場(chǎng)景特點(diǎn)更加明顯
判斷攻擊的標(biāo)準(zhǔn)會(huì)隨著業(yè)務(wù)特點(diǎn)的不同而不同。以最簡(jiǎn)單的 CC 攻擊為例,600 次/ 分鐘的訪(fǎng)問(wèn)對(duì)于某些企業(yè)可能意味著破壞性攻擊,但對(duì)其他企業(yè)則屬于正常訪(fǎng)問(wèn)范圍。
所以,即便有大量的標(biāo)注樣本,某一企業(yè)的標(biāo)注樣本可能對(duì)于其他企業(yè)毫無(wú)用處,這也是導(dǎo)致安全領(lǐng)域應(yīng)用機(jī)器學(xué)習(xí)較為困難的另一個(gè)重要原因。
03針對(duì)傳統(tǒng)的文本型攻擊,傳統(tǒng)思維認(rèn)為簡(jiǎn)單的特征工程,甚至直接的正則匹配更有效
我們把 Web 攻擊分為行為型攻擊和文本型攻擊兩類(lèi):
- 行為型攻擊。每個(gè)請(qǐng)求看起來(lái)都是正常的,但將其連接成請(qǐng)求走勢(shì)圖時(shí),就會(huì)發(fā)現(xiàn)問(wèn)題,如爬蟲(chóng)、撞庫(kù)、刷單、薅羊毛等。
以刷粉行為為例:每個(gè)請(qǐng)求看起來(lái)都是正常的,但攻擊者可能動(dòng)用大量 IP 在短時(shí)間內(nèi)注冊(cè)大量賬號(hào),并關(guān)注同一個(gè)用戶(hù)。只有我們把這些行為連接起來(lái)一起分析時(shí),才能發(fā)現(xiàn)問(wèn)題。
- 文本型攻擊。傳統(tǒng)的漏洞類(lèi)攻擊,如 SQL 注入、命令注入、XSS 攻擊等,單純的把一個(gè)請(qǐng)求看成是一段文本,通過(guò)文本的特征即可識(shí)別其是否為攻擊。
當(dāng)特征的維度空間較低,且有些維度的區(qū)分度很高時(shí),通過(guò)簡(jiǎn)單的線(xiàn)性分類(lèi)器,就可以實(shí)現(xiàn)不錯(cuò)的準(zhǔn)確率。
例如我們簡(jiǎn)單的制定一些 SQL 注入的正則規(guī)則,也可以適用于很多場(chǎng)景。但是,這樣的傳統(tǒng)思維卻忽略了召回率問(wèn)題,實(shí)際上也很少有人知道,通過(guò) SQL 注入的正則規(guī)則,可以達(dá)到多少的召回率。
同時(shí),在某些場(chǎng)景,假如業(yè)務(wù)的正常接口通過(guò) JSON 傳遞 SQL 語(yǔ)句,那么這種基于正則規(guī)則的分類(lèi)器就會(huì)產(chǎn)生極高的誤判。
04傳統(tǒng)安全人員并不了解機(jī)器學(xué)習(xí)
大量傳統(tǒng)安全公司的安全人員精于構(gòu)造各種漏洞探測(cè)、挖掘各種邊界條件繞過(guò),善于制定一個(gè)又一個(gè)的補(bǔ)丁策略,卻并不擅長(zhǎng) AI 機(jī)器學(xué)習(xí)方面的內(nèi)容,這也說(shuō)明了這種跨界人才的稀缺和重要。
機(jī)器學(xué)習(xí)重新定義 Web 安全
如何解決安全領(lǐng)域的樣本標(biāo)注問(wèn)題呢?機(jī)器學(xué)習(xí)分為兩大類(lèi):
監(jiān)督學(xué)習(xí)。要求有精準(zhǔn)的標(biāo)注樣本。
無(wú)監(jiān)督學(xué)習(xí)。無(wú)需標(biāo)注樣本,即可以針對(duì)特征空間進(jìn)行聚類(lèi)計(jì)算。在標(biāo)注困難的安全領(lǐng)域,顯然無(wú)監(jiān)督學(xué)習(xí)是一把利器。
01無(wú)監(jiān)督學(xué)習(xí)
無(wú)監(jiān)督學(xué)習(xí)無(wú)需事先準(zhǔn)備大量標(biāo)注樣本,通過(guò)特征聚類(lèi)就可以將正常用戶(hù)和異常用戶(hù)區(qū)分開(kāi),從而避免大量樣本標(biāo)注的難題。
聚類(lèi)的方式有很多,如距離聚類(lèi)、密度聚類(lèi)等,但其核心仍是計(jì)算兩個(gè)特征向量的距離。
在 Web 安全領(lǐng)域,我們獲得的數(shù)據(jù)往往是用戶(hù)的 HTTP 流量或 HTTP 日志,在做距離計(jì)算時(shí),可能會(huì)遇到如下問(wèn)題。
例如:每個(gè)維度的計(jì)算粒度不一樣,如兩個(gè)用戶(hù)的向量空間里 HTTP 200 返回碼比例的距離是兩個(gè) float 值的計(jì)算,而 request length 的距離則是兩個(gè) int 值的計(jì)算,這就涉及粒度統(tǒng)一歸一化的問(wèn)題。
在這方面有很多技巧,比如可以使用 Mahalanobis 距離來(lái)代替?zhèn)鹘y(tǒng)的歐式距離,Mahalanobis 距離的本質(zhì)是通過(guò)標(biāo)準(zhǔn)差來(lái)約束數(shù)值,當(dāng)標(biāo)準(zhǔn)差大時(shí),說(shuō)明樣本的隨機(jī)性大,則降低數(shù)值的權(quán)值。
反之,當(dāng)標(biāo)準(zhǔn)差小的時(shí)候,說(shuō)明樣本具有相當(dāng)?shù)囊?guī)律性,則提高數(shù)值的權(quán)值。
無(wú)監(jiān)督的聚類(lèi)可以利用 EM 計(jì)算模型,可以把類(lèi)別、簇?cái)?shù)或者輪廓系數(shù)(Silhouette Coefficient)看成 EM 計(jì)算模型中的隱變量,然后不斷迭代計(jì)算來(lái)逼近最佳結(jié)果。
最終我們會(huì)發(fā)現(xiàn),正常用戶(hù)和異常聚成不同的簇,之后就可以進(jìn)行后續(xù)處理了。當(dāng)然,這只是理想情況,更多情況下是正常行為與異常行為分別聚成了很多簇,甚至還有一些簇混雜著正常和異常行為,那么這時(shí)就還需要額外的技巧處理。
02學(xué)習(xí)無(wú)監(jiān)督聚類(lèi)的規(guī)律
無(wú)監(jiān)督聚類(lèi)的前提是基于用戶(hù)的訪(fǎng)問(wèn)行為構(gòu)建的向量空間,向量空間類(lèi)似:
- [key1:value1,key2:value2,key3:value3...]
這里就涉及兩個(gè)問(wèn)題:“如何找到 key”以及“如何確定 value”。
找到合適 key 的本質(zhì)是特征選擇問(wèn)題,如何從眾多的特征維度中,選擇最具有區(qū)分度和代表性的維度。
為什么不像某些 Deep Learning 一樣,將所有特征一起計(jì)算?這主要是考慮到計(jì)算的復(fù)雜度。請(qǐng)注意:特征選擇并不等同于特征降維,我們常用的 PCA 主成分和 SVD 分解只是特征降維,本質(zhì)上 Deep Learning 的前幾層某種意義上也是一種特征降維。
特征選擇的方法可以根據(jù)實(shí)際情況進(jìn)行。實(shí)驗(yàn)表明在有正反標(biāo)注樣本的情況下,隨機(jī)森林是一個(gè)不錯(cuò)的選擇。如果標(biāo)注樣本較少或本身樣本有問(wèn)題,也可以使用 Pearson 距離來(lái)挑選特征。
最終,用戶(hù)的訪(fǎng)問(wèn)行為會(huì)變成一組特征,那特征的 value 如何確定?以最重要的特征——訪(fǎng)問(wèn)頻率為例,多高的訪(fǎng)問(wèn)頻率值得我們關(guān)注?這需要我們對(duì)于每個(gè)業(yè)務(wù)場(chǎng)景進(jìn)行學(xué)習(xí),才能確定這些 key 的 value。
學(xué)習(xí)的規(guī)律主要包括兩大類(lèi):
- 行為規(guī)律。自動(dòng)找出路徑的關(guān)鍵點(diǎn),根據(jù)狀態(tài)轉(zhuǎn)移概率矩陣,基于 PageRank 的 power method 計(jì)算原理,網(wǎng)站路徑的狀態(tài)轉(zhuǎn)移矩陣的最大特征值就代表其關(guān)鍵路徑(關(guān)鍵匯聚點(diǎn)和關(guān)鍵發(fā)散點(diǎn)),然后順著關(guān)鍵點(diǎn),就可以學(xué)習(xí)到用戶(hù)的路徑訪(fǎng)問(wèn)規(guī)律。
- 文本規(guī)律。對(duì)于 API,可以通過(guò)學(xué)習(xí)得出其輸入輸出規(guī)律,如輸入?yún)?shù)數(shù)量、每個(gè)參數(shù)的類(lèi)型(字符串 or 數(shù)字 or 郵箱地址等)、參數(shù)長(zhǎng)度分布情況,任何一個(gè)維度都會(huì)被學(xué)習(xí)出其概率分布函數(shù)。
然后就可以根據(jù)該函數(shù)計(jì)算其在群體中的比例。即便是最不確定的隨機(jī)分布,利用切比雪夫理論也可以告訴我們這些值異常。
假如 GET /login.php?username = 中的 username 參數(shù),經(jīng)過(guò)統(tǒng)計(jì)計(jì)算得出平均長(zhǎng)度是 10,標(biāo)準(zhǔn)差是 2,如果有一個(gè)用戶(hù)輸入的 username 長(zhǎng)度是 20,那么該用戶(hù)的輸入在整體里就屬于占比小于 5% 群體的小眾行為。
通過(guò)特征選擇和行為、文本規(guī)律學(xué)習(xí),我們就可以構(gòu)建出一套完整且準(zhǔn)確的特征空間將用戶(hù)的訪(fǎng)問(wèn)向量化,進(jìn)而進(jìn)行無(wú)監(jiān)督學(xué)習(xí)。
03讓系統(tǒng)越來(lái)越聰明
如果一個(gè)系統(tǒng)沒(méi)有人的參與,是無(wú)法變得越來(lái)越聰明的,如 AlphaGo 也需要在同人類(lèi)高手對(duì)弈中不斷強(qiáng)化自己。
在安全領(lǐng)域,雖然完全的樣本標(biāo)注不可能,但是我們可以利用半監(jiān)督學(xué)習(xí)的原理,挑選具有代表性的行為交給專(zhuān)業(yè)的安全人員判斷,經(jīng)過(guò)評(píng)定校正,整個(gè)系統(tǒng)會(huì)越發(fā)聰明。
安全人員的校正可以與強(qiáng)化學(xué)習(xí)和集成學(xué)習(xí)結(jié)合實(shí)現(xiàn),對(duì)于算法判斷準(zhǔn)確的情況,可以加大參數(shù)權(quán)重,反之則可以適當(dāng)減少。
類(lèi)似的想法出現(xiàn)于國(guó)際人工智能頂級(jí)會(huì)議 CVPR 2016 的最佳論文之一,“AI2: Training a big data machine to defend”,MIT 的 startup 團(tuán)隊(duì),提出了基于半監(jiān)督學(xué)習(xí)的 AI2 系統(tǒng),可以在有限人工參與的情況下,讓安全系統(tǒng)更安全更智能。
04重新定義 Web 安全
基于上述幾點(diǎn),我們基本可以勾勒出基于 AI 的 Web 安全的基本要素:
AI Web 安全技術(shù)棧
從上圖可以看到,所有算法均包含在實(shí)時(shí)計(jì)算框架內(nèi)。實(shí)時(shí)計(jì)算框架要求數(shù)據(jù)流的輸入、計(jì)算、輸出都是實(shí)時(shí)的,這樣才可以保證在威脅事件發(fā)生時(shí),系統(tǒng)可以迅速做出反應(yīng)。
但是,實(shí)時(shí)計(jì)算的要求也增加了很多挑戰(zhàn)和難點(diǎn),一些傳統(tǒng)離線(xiàn)模式下不是問(wèn)題的問(wèn)題,在實(shí)時(shí)計(jì)算下會(huì)突然變成難題。
比如最簡(jiǎn)單的中位數(shù)計(jì)算,要設(shè)計(jì)一套在實(shí)時(shí)流輸入的情況下,同時(shí)還能保證準(zhǔn)確性的中位數(shù)算法并不容易,T-digest 是一個(gè)不錯(cuò)的選擇,可以限定在 O(K)的內(nèi)存使用空間。還有一些算法可以實(shí)現(xiàn)在 O(1)內(nèi)存占用的情況下計(jì)算相對(duì)準(zhǔn)確的中位數(shù)。
綜上所述,我們可以看出利用 AI 實(shí)現(xiàn) Web 安全是一個(gè)必然的趨勢(shì),它可以顛覆傳統(tǒng)基于 policy 配置模式的安全產(chǎn)品,實(shí)現(xiàn)準(zhǔn)確全面的威脅識(shí)別。
但是,構(gòu)造基于 AI 的安全產(chǎn)品本身也是一個(gè)復(fù)雜的工程,它涉及特征工程、算法設(shè)計(jì)和驗(yàn)證,以及穩(wěn)定可靠的工程實(shí)現(xiàn)。
總之,基于 AI 的 Web 安全是新興的技術(shù)領(lǐng)域,雖然目前還處于發(fā)展期,但最終一定會(huì)取代以 policy 為驅(qū)動(dòng)的傳統(tǒng)安全產(chǎn)品,成為保證企業(yè) Web 安全的基石。
叢磊
白山云科技合伙人兼工程副總裁
2006 年至 2015 年就職于新浪,原 SAE(SinaAppEngine)創(chuàng)始人,曾任總負(fù)責(zé)人兼首席架構(gòu)師。2010 年起,帶領(lǐng)新浪云計(jì)算團(tuán)隊(duì)從事云相關(guān)領(lǐng)域的技術(shù)研發(fā)工作。他擁有 10 項(xiàng)發(fā)明專(zhuān)利,現(xiàn)任工信部可信云服務(wù)認(rèn)證評(píng)委。2016 年加入白山云,主要負(fù)責(zé)云聚合產(chǎn)品的研發(fā)管理和云鏈產(chǎn)品體系構(gòu)建等。