5/21 C4 Lab的聚會請到的是資安界相當有名的 kuku 來跟我們介紹 OWASP 的東西, 對於資安具相當濃厚興趣的我是當然要去的。
|
畫面中舉手的是小畢學長 (Crboy) |
|
|
OWASP (Open Web Application Security Project) 是一個開放社群的非營利組織,致力於改善網站應用程式的安全性。而他們所提出的
OWASP Top 10 揭露常見的網站應用程式弱點,以供軟體開發安全參考。
不過一開始kuku並沒有跟我們介紹 OWASP Top 10, 而是透過一些實際的例子, 先跟我們介紹一些在開發網站時, 有可能會遭受到的攻擊和弱點。
一開始提到在撰寫原始碼時, 有時候編輯器會貼心的幫我們存取暫存檔(ex. Vim有時會幫你存取index.php.swp), 這時候如果利用 url 去存取這些原始碼的暫存檔, 就有可能看到網站的原始碼。其他像是開發網站時所作的備份壓縮檔, 或是當你利用 git 或是 svn 做版本控制時, git的隱藏資料夾 (.git) 有時候也會成為攻擊者入侵的途徑。其他方面, 像是 url 的網址解析和檔案名稱解析有時也會成為攻擊者的攻擊點 (像是在網址後面多加一個點, 就有辦法看到原始碼之類的), 使用 php , jsp 或是 asp 開發時都要注意這些問題。另外使用 python 開發時, 有時 .pyc檔 (byte-compiled, 中間程式碼檔) 也會成為偷看原始碼的攻擊途徑, 諸如此類的例子不勝枚舉。
此外, kuku 也舉了一些業界的例子, 一個讓我印象比較深刻的是他們有一次發現一個網站有 PHP LFI 的漏洞, 又發現說這個網站在開發時所用的 editor 是 FCKEditor, 於是他們就利用 FCKEditor上傳的功能, 在一張圖片裡面塞進了 php 的語法, 再利用 LFI 的漏洞, 成功的執行了此語法。kuku 提到像這類的例子就是那種你用電腦絕對無法測出來的漏洞。你可能有辦法用電腦去偵測說對方是使用 FCKEditor 開發, 但是電腦無法將這個資訊跟 PHP LFI 漏洞結合在一起 (想一想還蠻恐怖的, 連 editor都有可能成為漏洞導致網站被攻擊...)
介紹到這裡, kuku 總算開始介紹 OWASP Top 10 的東西。OWASP Top 10 就是在開發網站應用程式時, 最具風險, 最常發生的資安問題。
A1 : Injection
Injection不只是 SQL Injection, 像是OS shell也有可能會被 injection (command injection)。kuku 提到 Injection 已經存在了很久, 超過了15年, 但是至今仍然很常發生。kuku有提到建議是 "越早做字串的Filter, 越晚做字串escape "。
|
kuku針對Injection的解決辦法 |
A2 : XSS (Cross-site scripting)
XSS最常用的是用來偷 cookie, 也會被用來竊取 session, 或是對webpage進行rewrite,甚至是讓使用者在不知情的情況下發送request出去。說到這個不得不提以前曾在一個宗教網站的留言板惡搞,當時就是利用網站的 XSS 漏洞進行攻擊,至於詳細的手法和結果就略過吧 =w= 只知道最後漏洞有被發現並且修補起來了,也算是功德一件(?
A3 : Broken authentication & session management
簡單來說就是身分驗證機制沒做好,像是 session 沒清乾淨,或是該網站的密碼沒有做加密,以及回覆密碼機制沒有做完全等等,這些都會增加網站使用者的不便以及帳號被盜的可能性。
A4 : 不安全的物件對應機制
其實就是 server 上面的檔案路徑太容易被別人猜到,從網址上面下手,像是 download.php 就可以很容易猜到是用來下載檔案,進而推出 upload.php 是上傳檔案得頁面之類的。解決的辦法最好就是利用 hash 的方式去對應檔案名稱。
A5 : CSRF (Cross Site Request Forgery)
跨站請求偽造,簡單來說就是在發送一個偽造的request(即使 user 沒有意願這麼做)。下圖的說明頗為清楚:
解決的方式可以利用
SOP原則 ,cookie在設定時也可以設定 http only 特性,使得Javascript無法去讀寫cookie....等等
A6 : Security Misconfiguration (安全設定不完全)
網站的 server 安全性設定需要設好,不然駭客一攻擊 server 或是 server太好騙就糟糕了。解決方法像是可以設定 .htaccess 來保護主機下的目錄與檔案等等
A7 : Insecure Cryptographic Storage (重要資料未加密儲存)
將使用者的重要資料明文儲存在 server 上面可是相當危險的,要是洩漏出去可不是鬧著玩的。不過最近崛起(不如說捲土重來)的雲端硬碟服務
MEGA 採取了
"將資料使用用戶密碼加密,並且不將用戶密碼存在server上面" 的全新管理機制,可說是幾近完美的解決了這個問題,唯一的缺點就是當用戶忘記或是遺失密碼時,MEGA 無法幫你找回密碼,也無法幫你解密檔案,等同於檔案全失(因為server上面沒有你的密碼)。
A8 : Failure to Restrict URL Access (URL路徑限制不足)
像是打個 ../../../../etc/passwd 就有辦法獲取密碼檔案之類的,server 上有很多目錄不是一般人可以進入的,如果這時候沒有做身分驗證的機制或是權限管理不慎,目錄很有可能就會被有心人士入侵。
A9 : Insufficient Transport Layer Protection
傳送資料時得保護不足,最有名的莫過於最近鬧得很大的 OpenSSL Heartbleed 漏洞。解決之道 ? 自己寫一個加密套件啊(誤
A10 : Unvalidated Redirect and Forward (不安全的轉址)
的確,從一些短網址的 url 來看確實看不出導到的網址是否式安全的網址,加上防毒軟體無法偵測短網址的安全性,造成很多人被廣告或是詐騙訊息所騙,一點短網址就中標了。
OWASP Top 10 主要是針對 "網路"的應用程式安全做研究,今天並沒有聽到一些像是 Mobile 或是其他的資訊安全問題,感覺頗為可惜。
還有一個我覺得很重要的一點,
就是今天的演講沒有實作的部分。我覺得這也是很多探討資安議題的講者會忽略的一點,我甚至認為這也是在台灣資安領域人才過少的原因之一。像今天介紹的OWASP Top 10,都只有著重在"講"的部分,並沒有實作,讓在場的人親身經歷,體會這些資安問題的嚴重性,我真的覺得這是非常可惜的一點。如果往後的資安講習著重在時做的話,我想應該會激起更多人對於資安的興趣。當然 kuku 今天講得也很精彩,讓我學到了許多東西,只是因為一直講的關係導致後面體力不濟有點想睡覺 ~"~
資訊安全一直是(至少對我們系所來說)時常會被忽略的對象之一,綜觀我們系所,只有一位教授有在做資訊安全,還是理論的密碼學派,有關於真正有在實作的駭客學派,就我所知是沒有的,這真的是很可惜的地方,因為其實資安也是可以很好玩的,自己本身因為興趣的關係,接觸了不少 Wargame 的網站 --- 一個駭客之間的遊戲網站,玩過之後所享受的樂趣是無法用言語來形容的,且還因此增加了不少資安的知識,可為一舉數得。只可惜系上基本上很少人在研究這個,之前想找人比金盾獎還得費一番心力去尋找隊友,讓我不禁感概,系上有ACM團隊,為什麼就沒有金盾軍團呢?
然,這都是後話了。畢業後即將加入交大 DSNS Lab 的我,也只能寄望 C4 Lab 今後能夠在系上多多推廣這塊領域了.......