iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 16
2
Security

資料安全與簡單加密演算法見面會 系列 第 16

[Day16] 資料使用安全(應用程式弱點)

不知不覺又來到2016的最後一天,今天也是參加iT邦幫忙鐵人賽Security組的第16天,很幸運能連續15天晚上熱血的po文,如果在馬拉松的比賽裡,就是21.095K距離的半程馬拉松了。

資料的使用者通常是應用程式,也因此資料使用安全和應用程式安全有著密不可分的綿密關係,我們來花一小段時間整理應用程式弱點。

提升應用程式安全


三立電視台幾年前有一個福爾摩沙事件簿的節目,還蠻喜歡看的,最後有一段口白很經典:

歷史不能遺忘,經驗必須記取,做個有記憶的人

雖然這幾年資安意識抬頭,又有許多規範和組織相繼成立,工程師可能都因此上過資訊安全課程,但也許大部分的工程師卻沒參加過安全寫作程式,對於安全寫碼的知識不太足夠(舉手,史丹利也是),因此被動的補強應用程式中的弱點來提升程式安全,變成是一個還不錯的方法。

常見的方法有源碼檢測、弱點掃描及滲透測試,我們初淺的解釋一下:

  • 源碼檢測(Source Code Analysis):使用工具對應用程式進行掃描,工具內建的檢測引擎可以找出程式大部分可能的安全性弱點,然後製作報告,厲害一點的工具還可以協助修正程式碼。
    如果團隊剛好有使用持續整合工具(CI),將啟動源碼檢測的執行檔整合進CI風味最佳。

  • 弱點掃描(Vulnerability scanning):也是打小報告的一種,對目標主機連續打交易去探測封包,主要針對網站、作業系統、應用程式及資料庫進行掃描並收集資訊。

  • 滲透測試(Penetration Test):結合弱掃收集的資訊,進一步進行入侵測試,簡單的說就是攻其不備。

通常檢測出來的報告還會有美美的圖表直接送到老闆電腦螢幕前,哈!我們工程師就放寬心當學習下次改進嚕。

應用程式弱點


本來想在見面會30天安排幾天來和我們碼農常見的弱點見面,但很怕不小心踏進弱點排行版就迷了路走了竅,這個世界很大很恐怖,一不小心還會中槍。

常見的有

  • 10大網站安全風險 OWASP Top 10
  • 25 大最危險的程式設計錯誤 CWE/SANS TOP 25
    ...
  • 10大行動裝置安全風險 OWASP Mobile Top 10
  • WASC Threat Classification:34種攻擊及潛在弱點。

因為世界很大,我們先淺淺的認識應用程式弱點就好,如果要舉例,第一個想到的就是資料隱碼攻擊(SQL injection)。

資料隱碼攻擊(SQL injection)


如果你也是初進工程師領域的新手,也許對資訊安全也還不太熟悉,試著花幾分鐘閱讀也是這屆iT邦幫忙鐵人賽選手在SQL injection的分享,閱讀過後,相信我們能體會出應用程式弱點的影響,明年,也就是明天,就可以從SQL injection的防範開始。

虎虎的分享:
http://ithelp.ithome.com.tw/articles/10185402

如果已經體會了SQL injection的危害,找個時間試試看ZAP x SQLMap滲透自己的網站,很有成就感。

OWASP Top 10


我們淺淺的認識OWASP這個組織,她是一個非營利的社群,OWASP是Open Web Application Security Project的縮寫,中文是開放網站軟體安全計畫。他們的核心精神是:

Be the thriving global community that drives visibility and evolution in the safety and security of the world’s software.

簡單的說就是推動世界軟體的安全性。

OWASP本人生活照
http://ithelp.ithome.com.tw/upload/images/20161231/20103434qjL2cKws90.png

認識她最主要的原因是OWASP TOP 10,開放網站軟體安全計畫十大弱點,OWASP每幾年會將常見的網站應用系統安全性弱點排名,同時提供寫作的建議來預防弱點。

排名 分類  說明
1 A1 Injection,隱碼注入
2 A2 Broken Authentication and Session Management,驗證功能不足或連線管理缺失
3 A3 Cross-Site Scripting(XSS )跨站腳本攻擊
4 ... ...

CWE/SANS TOP 25


CWE (Common Weakness Enumeration)是由美國國土安全部贊助支持的MITRE機構所定義出來的弱點分類,主要也是針對網站應用程式的安全弱點,像是CWE-564,就是針對資料存取元件Hibernate的SQL Injection分類。

CWE-564 Description Summary

Using Hibernate to execute a dynamic SQL statement built with user-controlled input can allow an attacker to modify the statement's meaning or to execute arbitrary SQL commands.

https://cwe.mitre.org/data/definitions/564.html

SANS(System Administration, Networking and Security)則是美國安全研究機構,專門進行資訊安全培訓、認證與研究構,像是資安專家的GIAC認證

最後回到CWE/SANS TOP 25最危險的程式設計項目,這些項目就是由MITRE組織與美國安全研究機構SANS與一群軟體業者所研究出來的,希望透過 TOP 25 弱點教育軟體工程師在撰寫程式碼階段就能多注意到程式的潛在安全問題。

編號 分類  說明
1 CWE89 SQL Injection SQL隱碼注入
2 CWE78 OS Command Injection 作業系統命令隱碼注入
3 CWE120 Classic Buffer Overflow 緩衝區溢位
4 ... ...

寫網站程式是一份辛苦神聖的工作,從直接參賽Modern web組的鐵人數也可以發現工作量:

http://ithelp.ithome.com.tw/upload/images/20161231/20103434QHwkhGGRDV.png

今年的最後一天,我們試著閱讀一些網站應用程式(AP)常見的弱點,新年新希望就是一個一個有耐心的深入理解和強化防守。

距離2017只剩下5小時!
/images/emoticon/emoticon55.gif

參考:


OWASP
https://www.owasp.org/index.php/Main_Page

OWASP台灣分會
https://www.owasp.org/index.php/Taiwan

OWASP TOP 10 2013
https://www.owasp.org/index.php/Top_10_2013-Top_10

2011 CWE/SANS Top 25 Most Dangerous Software Errors
http://cwe.mitre.org/top25/


直布羅陀警車
http://ithelp.ithome.com.tw/upload/images/20161231/20103434t12omnJadD.jpg
2014-12攝於Gibraltar


上一篇
[Day15] 資料使用安全(保護連接字串)下
下一篇
[Day17] 資料使用安全(源碼檢測)
系列文
資料安全與簡單加密演算法見面會 30

1 則留言

1
虎虎
iT邦新手 3 級 ‧ 2017-01-16 10:13:18

媽我在這裡 XDDDDD

哈哈!虎虎姐的文章很棒,解釋的很清楚也。
看完虎虎姐和小茶大的文章,如果不是女兒還小,超想轉行從頭學的。

虎虎 iT邦新手 3 級‧ 2017-01-17 11:33:50 檢舉

沒呀哭哭都在講垃圾話 XDDD
但我覺得史丹利都講的超系統化的,整個很專業也很有結構!!!
還以為是我們家副總寫的… ((因為副總也是Stanley,然後常常出國玩

我也在史丹利大大 & 茶茶大大的文章學超多東西的,再來找時間玩玩看 XDDDD

我要留言

立即登入留言