【wepro投稿】資安盲點:不是駭客太厲害,而是工程師太粗心!

    根據全球知名的資安組織 OWASP (Open Web Application Security Project) 定期公佈的十大網路資安風險報告,去年最新報告中,「失效的身份認證 (Broken Authentication) 」高踞第二名。另外 IBM 今年四月公佈的《X-Force Threat Intelligence Index 威脅情報指數》報告中則指出,跟雲端基礎建設設置不當相關的資料洩露就比前一年大幅增加四倍,而且絕大多數是人為錯誤。至於資安業者 Palo Alto Networks 年中公佈的《2018 Cloud Security Report》雲端安全報告中亦提到,不當設置雲端平台佔總威脅的 62%,是雲端安全的單一最大威脅成因。綜合以上幾份報告,有沒有發現重點提到的不是駭客有多強大,而都是有關認證或者雲端平台設置不當的人為錯誤?

    程式人員犯的低級錯誤

    有時候,程式人員的人為錯誤真的會讓人倒吸一口氣。上面提到德國開出首宗基於 GDPR 的罰單,是關於德國聊天平台 Knuddels.de 今年 7 月遭駭客入侵,竊取並洩露了 187.2 萬用戶資料,其中包括了用戶名稱、密碼和電郵地址,還因此被發現 Knuddels 居然犯了以明文儲存密碼這種低級錯誤!回顧過往,Twitter 亦曾發現以明文把用戶密碼儲存於內部伺服器中的資安漏洞,雖然未有證據顯示資料外流,但 Twitter 仍然緊急通知用戶建議更改密碼。對於登入設計不太熟悉的朋友可能會問:什麼是明文儲存密碼?為什麼企業一再栽在這個問題?

    密碼學小知識

    這牽涉到一點密碼學的小知識。平常為了不讓駭客即使輕易入侵,密碼在儲存前都會先經過處理,確保駭客即使入侵也無法破解密碼。常見被錯誤使用來處理密碼的方法有幾種:

    1)字元編碼:透過 base64 之類的編碼方式,把原本的密碼改編成另一串編碼。不過只要猜到編碼方式,很容易就可以把編碼翻譯出原本的密碼。

    2)對稱密鑰加密:在加密和解密時使用相同密鑰,或使用兩個可以互相演算的密鑰。常見的演算法有 AES、DES、3DES 等等。

    3)非對稱密鑰加密:在加密和解密時使用一套私鑰和一套公鑰,因為加密和解密使用不同的密鑰,所以即使公鑰被公開,缺乏用戶自己保管的私鑰也無法破解密碼。常見的演算法有 RSA、EIGamal 等。

    處理方法:雜湊 (Hash)

    嚴格來說,密碼是不應該「加密」的,所以上面幾種方法都不是適當的方法。因為只要加密,就有被解密的可能。以安全性來說,雜湊 (Hash) 才是唯一可接受的處理方法。Hashing 利用雜湊演算法(常見的有 SHA 、bcrypt 和 scrypt,另外早期還有 MD5 不過因為不夠安全而漸漸息微)來單向加密密碼。但如果透過大量的對照表,還是有可能可以還原。為了加強安全性,hash 可以加「鹽」,稱為 Salted Hash,即是把密碼加上一串字串再進行雜湊演算,加鹽後的 hash 會增加複雜度,提升安全性。隨著 GPU 的技術發展,有研究指出 brute force 方式有能力快速攻克大部分傳統 hashing,即使無意義的密碼也能在數分鐘甚至數秒內被破解;也越來越多人投入研究是否存在更安全的方法,譬如針對 GPU 運算的雜湊法或者後量子密碼學(Post-quantum cryptography)等。

    「明文儲存密碼」是低級錯誤

    那剛才提到「明文儲存密碼」是怎樣的處理方式?顧名思義,明文儲存就是完全沒有進行任何加密,直接把密碼明文保存。再簡單一點來說,假設你的密碼是 1234,一般處理方式可能在傳遞儲存時加密成一堆亂碼,而明文就是不做任何處理,直接用原本 1234 的方式來儲存。現在能理解為什麼會說「明文儲存密碼」是低級錯誤了嗎?因為駭客只要成功入侵伺服器,不用破解就已經可以輕易獲得你的完整密碼!也就是說,只要工程師在編寫登入程式時,安全意識稍為強一點,就能想到明文儲存密碼是非常危險的。除了明文儲存密碼,儲存方式設計失當這種人為錯誤也常讓人搖頭嘆息,甚至有工程師把愚蠢提升到一個新的層次將密碼保存於 / 傳回前端,這樣駭客就連伺服器都不用入侵,或只要有一點程式基礎的用戶,都能輕易在前端程式碼中存取所有用戶的密碼。

    本文作者:Oursky

    Oursky 是一間創立於香港的 Web / Mobile 軟體開發公司,在香港和台北設有工作室。主力研發數位產品用戶體驗、Skygear.io (Serverless Platform) 和其他開發者工具,協助開發者快速開發 Web / Mobile 產品。


    【wepro投稿】

    如果你都有觀點、見解、評論想與大家分享,歡迎投稿。

    投稿電郵:[email protected]

    投稿注意事項:

    1)來稿標題請註明「投稿」;

    2)來稿者請附上姓名或單位名稱、刊登筆名(如有)、聯絡方式及自我簡介;

    3)本站有權決定是否刊登及刪修之權利,修改時恕不另作個別通知;

    4)wepro180 擁有登出文章之全部出版權;

    5)嚴禁抄襲,投稿者文責自負;

    6)若有提供照片或影片,凡請先釐清使用權或知識產權;

    7)資源有限,恕暫無稿費;

    8)有關載已刊登文章、稿費、約稿等事宜,請與編輯部聯絡。

    #wepro投稿

    相關文章