读《白帽子讲Web安全》之安全意识篇(一)
2019獨角獸企業重金招聘Python工程師標準>>>
寫在開始:
這是一本以建設者的角度去解決安全問題的書。
一直以來安全行業都不缺少所謂的技術和毫無思想的說明書式文字,缺少的是對于安全本質的分析,關于如何更好地結合實際情況解決問題的思考,以及對這些思考的分享。吳翰清正在嘗試做這個事情,而且做到了。
? ? ---烏云漏洞平臺創始人 ?方小頓(劍心)0
其他章節見“Web安全”系列筆記。
【序言,前言】
1、互聯網公司安全,與傳統的網絡安全、信息安全技術的區別。
就如同開發者會遇到的挑戰一樣,有很多問題,不放到一個海量用戶的環境下,是難以暴露出來的。由于量變引起質變,所以管理10臺服務器,和管理1萬臺服務器的方法肯定會有所區別;同樣的,評估10名工程師的代碼安全,和評估1000名工程師的代碼安全,方法肯定也要有所不同。
互聯網公司安全還有一些鮮明的特色,比如注重用戶體驗、注重性能、注重產品發布時間,因此傳統的安全方案在這樣的環境下可能完全行不通。
2、互聯網公司安全可能會成為一門新的學科,或者說應該把安全技術變得更加工業化。
現在市面上安全類目的書,要么是極為“學術化”的,一般人看不懂的教科書,要么是極為“娛樂化”的,比如一些黑客工具說明書。
這本書,是一本闡述安全技術在企業級應用中實踐的書,是一本大型互聯網公司的工程師能夠真正用得上的安全參考書。
3、掌握了以正確的思路去看待安全問題,在解決他們時,都將無往而不利。
4、安全工程師的核心競爭力不在于他能擁有多少個0day,掌握多少種安全技術,而是在于他對安全理解的深度,以及由此引申的看待安全問題的角度和高度。
5、最可貴的不是那一個個工業化的解決方案,而是在解決這些問題時,背后的思考過程。我們不是要做一個能夠解決問題的方案,而是要做一個能夠“漂亮地”解決問題的方案。
6、2011年底的暴庫事件,網站只是在為以前的不作為買單。
7、要解決“拖庫”的問題,其實是要解決整個互聯網公司的安全問題,遠非保證一個數據庫的安全那么簡單。
8、當網站的安全做到一定程度后,黑客可能難以再找到類似注入攻擊、腳本執行等高風險的漏洞,從而可能將注意力轉移到客戶端腳本上。
9、如果一個網站的安全剛剛從0開始,那么“服務器應用安全”是優先級更高的安全問題,相比于客戶端安全。
10、黑帽子是指那些造成破壞的黑客,而白帽子則是研究安全,但不造成破壞的黑客。白帽子均已建設更安全的互聯網為己任。
11、Web是互聯網的核心,是未來云計算和移動互聯網的最佳載體,因為Web安全也是互聯網公司安全業務中最重要的組成部分。
【第一篇 ?世界觀安全】
【第一章 ?我的安全世界觀】
1、互聯網本來是安全的,自從有了研究安全的人之后,互聯網就變得不安全了。
2、現在的計算機系統,在用戶態的最高權限就是root(administrator)。“root”對黑客的吸引,就像大米對老鼠的吸引,美女對色狼的吸引。
3、黑客使用的漏洞利用代碼,被稱為“exploit”。
4、在黑客的世界里,有的黑客,精通計算機技術并且能自己挖掘漏洞,然后編寫exploit;而有的黑客,則只對攻擊本身感興趣,對計算機原理和各種編程技術的了解比較粗淺,因此只懂得編譯別人的代碼,自己并沒有動手能力,這種黑客被稱為“Script Kids”,即“腳本小子”。
而現實中,真正造成破壞的,往往是腳本小子。在今天已經形成產業的計算機犯罪、網絡犯罪中主要的也是腳本小子們。
5、【中國黑客簡史】可分為啟蒙時代(20世紀90年代)、黃金時代(2000年中美黑客大戰)、黑暗時代(前幾年到現在,可能會一直持續)
黑客精神:崇尚分享、自由、免費的互聯網精神,并熱衷于分享自己的最新研究成果。
也許黑客精神所代表的Open、Free、Share真的一去不復返了。
伴隨著安全產業的發展,黑客的功利性越來越強。黑色產業鏈開始成熟。上一個時期技術還不成熟的黑客們,凡是堅持下來的,都已經成長為安全領域的高級人才,有的在安全公司貢獻自己的專業技能,有的則帶著非常強的技術進入了黑色產業。
此時期的黑客群體因為互相之間缺乏信任已經不再具有開放和分享的精神,最為純粹的黑客精神實質上已經死亡。
6、早期互聯網中,Web并非互聯網的主流應用,相對來說,基于SMTP、POP3、FTP、IRC等協議的服務擁有者絕大多數的用戶。因此黑客們主要的攻擊目標是網絡、操作系統以及軟件等領域,Web安全領域的攻擊與防御技術均處于非常原始的階段。
? ? 相對于那些系統軟件的exploit 而言,基于Web的攻擊,一般只能讓黑客獲得一個比較低權限的賬戶,對黑客的吸引力遠遠不如直接攻擊系統軟件。
但是時代在發展,運營商、防火墻對于網絡的封鎖,使得暴露在互聯網上的非Web服務越來越少,且Web技術的成熟使得Web應用的功能越來越強大,最終成為了互聯網的主流。黑客們的目光,也漸漸轉移到了Web這塊大蛋糕上。
7、桌面軟件安全(或者叫客戶端軟件安全)也是一個重要的分支。
? ? 代表是瀏覽器攻擊,還有微軟的Office系列軟件,Adobe,多媒體播放軟件,壓縮軟件等裝機量大的流行軟件。
? ? 這種攻擊和Web安全有著本質的區別。
8、早期,比如在web1.0 時代,人們更多的是關注服務器端動態腳本的安全問題,對Web安全的認知不足導致很多學血案,同時也遺留下很多歷史問題,比如PHP語言至今仍然只能靠較好的代碼規范來保證沒有文件包含漏洞。
9、SQL注入(大概1999年出現)的出現是Web安全史的一個里程碑。
10、XSS也是另一個里程碑。(99年出現,在經歷MySpace的XSS蠕蟲事件之后才引起重視)
11、Web攻擊的思路從服務器端轉向了客戶端。
12、Web技術催生了很多新興腳本語言,比如Python、Ruby、NodeJS等敏捷開發成為互聯網的主旋律。
13、白帽子一般為企業或安全公司服務,工作的出發點就是要解決所有的安全問題,因此所看所想必然更加全面、宏觀;
? 黑帽子的主要目的是入侵系統,找到有價值的數據,要以點突破,因此思考問題的出發點往往是有選擇性的、微觀的。
? ?“破壞永遠比建設容易”
? ? 黑帽子為了完成一次入侵,需要利用各種不同漏洞的組合來達到目的,是在不斷地組合問題。
? ? 白帽子在設計解決方案時,如果只看到各種問題組合后產生的效果,就會把事情變復雜,難以細致入微地解決根本問題。所以白帽子必然是在不斷地分解問題,再對分解后的問題逐個解決。
? ? 一般來說,白帽子選擇的方法,是克服某種攻擊方法,而并非抵御單次的攻擊。
14、No Patch For Stupid! ? ?最大的漏洞是人。
patch ?英[p?t?] 美[p?t?]
n. 眼罩;斑點;碎片;小塊土地
vt. 修補;解決;掩飾
vi. 打補丁
15、現狀是,如果新技術不在一開始就考慮安全設計的話,防御技術就必然會落后于攻擊技術,導致歷史不斷地重復。
16、在武俠小說中,一個真正的高手,對武功有著最透徹、最本質的理解,達到了返璞歸真的境界。
17、安全的本質是信任的問題。
? 一切的安全方案設計的基礎,都是建立在信任關系上的。我們必須相信一些東西,必須有一些最基本的假設,安全方案才能得以建立;如果我們否定一切,安全方案就會如無源之水,無根之木,無法設計,也無法完成。
18、現實中,登機前要進行安檢。因為飛機是一個高度敏感和重要的區域,任何有危害的物品都不應該進入這一區域。
19、通過一個安全檢查(過濾、凈化)的過程,可以梳理未知的人或物,使其變得可信任。
? ?被劃分出來的具有不同信任級別的區域,我們稱為信任域,劃分兩個不同信任域之間的邊界,我們稱為信任邊界。
20、現實生活中,我們很少設想最極端的前提條件,因為極端條件意味著小概率和高成本。因為成本有限,我們會根據成本將一些可能性較大的條件作為決策的主要依據。
? ? 另一個角度,一旦我們作為決策依據的條件被打破、被繞過,那么就會導致安全假設的前提條件不再可靠,變成一個偽命題。
? ? 因此,把握住信任條件的度,使其恰到好處,正是設計安全方案的難點所在,也是安全這門學問的藝術魅力所在。
21、安全是一個持續的過程。
22、攻擊和防御技術在不斷碰撞與對抗的過程中得到發展。
? ? 微觀上,在某一時期可能某一方占據了上風;但宏觀上,某一時期的攻擊或防御技術都不可能永遠有效。因為兩者是相互促進的辯證關系。
23、產品本身需要一個新陳代謝的過程,否則就會被淘汰,自動升級功能是必須。
24、安全三要素:機密性(Confidentiality)、完整性(Integrity)、可用性(Availability)
更多:可審計性,不可抵賴性等。
25、實施安全評估4個階段:資產等級劃分、威脅分析、風險分析、確認解決方案。
26、互聯網安全的核心問題,是數據安全的問題。
? ? 在互聯網基礎設施已經比較完善的今天,互聯網的核心其實是由用戶數據驅動的--用戶產生業務,業務產生數據。互聯網公司最核心的價值就是其擁有的用戶數據。
27、完成資產等級劃分后,接下來要劃分信任域和信任邊界。一種最簡單的劃分方式,從網絡邏輯劃分。
? 比如,最重要的數據放在數據庫里,然后把數據庫的服務器圈起來,是最里邊的一個信任域;Web應用可以讀寫數據庫,并對外提供服務,那么把Web服務器圈起來;最外邊是不可信任的Internet。
28、威脅(Threat)和風險(Risk):我們把可能造成危害的來源稱為威脅,而把可能會出現的損失稱為風險。
29、一種威脅建模方法,微軟提出:STRIDE模型。
威脅建模和 STRIDE
30、漏洞定義:系統中可能被威脅利用以造成危害的地方。
31、風險分析的一個模型:DREAD模型。
32、沒有不安全的業務,只有不安全的實現方式。產品需求,尤其是商業需求,是用戶真正想要的東西,是業務的意義所在,在設計安全方案時應該盡可能不改變商業需求的初衷。
33、通過簡單而有效的方案解決遇到的安全問題。
34、好的安全方案對用戶應該是透明的,盡可能不要改變用戶的使用習慣。
比如微軟的UAC,每次都彈出來問用戶。如果用戶能夠分辨什么樣的行為是安全的,那么還要安全軟件做什么?
35、一個優秀的安全方案應具備一下特點:
1)能夠有效解決問題
2)用戶體驗好
3)高性能
4)低耦合
5)易于擴展與升級
36、白帽子兵法:Secure By Default原則
1)黑名單、白名單
2)最小權限原則
3)縱深防御原則
4)數據與代碼分離原則
5)不可預測性原則
37、如果更多地使用白名單,系統就會變得更安全。
38、在Linux系統中,一種良好的操作習慣是使用普通賬戶登錄,在執行需要root權限的操作時,再通過 sudo 命令完成。
39、Defense in Depth(縱深防御)包含兩層含義:
? ? 首先,在各個不同層面、不同方面實施安全方案,避免出現疏漏,不同方案之間相互配合,形成一個整體。(解決方案有必要將風險分散到系統的各個層面)
? ? 其次,要在正確的地方做正確的事情,即:在解決根本問題的地方實施針對性的方案。它要求我們理解威脅的本質,從而做出正確的應對措施。
40、UTM(Unified Threat Management)統一威脅管理,只是近幾年安全廠商為了迎合市場的需要推出的產品。
41、數據與代碼分離原則:緩沖區溢出也可以認為是程序違背了這一原則的后果。
? ? Web安全中,XSS、SQL Injection、CRLF Injection、X-Path Injection等,均可以根據此原則設計出真正安全的解決方案。因為這個原則抓住了漏洞形成的根本原因。
42、不可預測性原則,是從克服攻擊方法的角度看問題。比如,網站問斬是按1,2,3順序編號的,就很容易被遍歷,如果是隨機序列,就比較安全,防止簡單猜測。
43、安全是一門樸素的學問,也是一種平衡的藝術。
無論是傳統安全,還是互聯網安全,其內在的原理都是一樣的。我們只需抓住安全問題的本質,之后無論遇到任何安全問題,都會無往而不利,因為我們已經真正地懂得了如何用安全的眼光來看待這個世界。
【(附)誰來為漏洞買單?】
1、所有的程序本來也沒有漏洞,只有功能,但當一些功能被用于破壞,造成損失時,也就成了漏洞。
2、我們定義一個功能是否是漏洞,只看后果,而不應該看過程。
3、一個業務安全設計得好的網站,往往loginID和nickname(昵稱)是分開的。登錄ID使用戶的私有信息,而nickname不能用于登錄,但可以公開給所有人看,這是一個設計的細節,是積極防御的一種表現。
4、漏洞只是對破壞性功能的一個統稱而已。
5、任何漏洞,可以在不同層面解決,但只有在源頭解決,才是善莫大焉。
轉載于:https://my.oschina.net/bluefly/blog/310709
總結
以上是生活随笔為你收集整理的读《白帽子讲Web安全》之安全意识篇(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SecureCRT提示----数据库里没
- 下一篇: MonoDevelop笔记