來源:鋅刻度 作者:陳鄧新
1. 一些小網站或許資料庫會明文存儲密碼,而知名網際網路公司絕無可能,但後者的業務系統頗為複雜,關聯功能可能意外隱藏著明文存儲漏洞,因此例行安全檢測都額外注意這點。
2. 儘管大公司多數明文存儲漏洞沒有造成影響,但也有漏網之魚,被外界捕捉。
3. 明文存儲密碼漏洞的主要由燈下黑、設計考慮不周、歷史遺留、過於自信這四個因素造成的。
最近,每日優鮮上線「優鮮超市」,其商品品類由蔬菜水果等生鮮產品延伸到美妝保健等日用產品。自此,每日優鮮開啟了從生鮮電商到線上超市的過渡。
日前,谷歌公開承認其產品G Suite存在低級安全漏洞。
G Suite管理控制臺允許管理員為用戶重置密碼,然而該功能竟然以純文本的形式明文存儲用戶的密碼而非加密存儲,如今該功能已被移除。
資料顯示,G Suite是由Gmail、Google文檔、Google雲端硬碟等應用組合而成的一個辦公套裝,全球共有500萬個機構訂閱了該服務,包括60%的世界500強公司。
「雖然這些密碼沒有經過哈希加密儲存,但它們仍保留Google經過安全加密的基礎設施中。」Google工程部副總裁Suzanne Frey安撫用戶:「此問題已得到解決,我們沒有明確證據表明這些密碼遭到了不當訪問或濫用。」
然而,明文存儲密碼這種低級安全漏洞,在谷歌體系內存在了14年未被發現,為何檢測不出來?除了谷歌,歷史上諸多知名網際網路公司都被明文存儲密碼漏洞困擾過,為何此類漏洞屢禁不絕?
關聯功能可能存在漏洞
低級安全漏洞有許多,網站參數過濾不嚴導致的跨站漏洞、設計缺陷導致的任意密碼重置漏洞與任意支付漏洞、弱口令漏洞、明文存儲密碼漏洞等。
這其中弱口令漏洞與明文存儲密碼漏洞被公認為最「愚蠢」的漏洞。
密碼不能明文存儲,這是最基本的安全常識,經驗豐富的程式設計師都明白不能給黑客任何可趁之機,後者會帶來隱私洩露的可怕後果。
因此,網站存儲用戶密碼都必須進行加密,譬如張三註冊帳號時設定密碼為「567122cdefe」,後臺直接看不到這個密碼,而是一串字符。
倘若用的是MD5加密方式,那麼看到的可能是a9541a219863e8aa(16位)或ad2517b1a9541a219863e8aaff3593ec(36位),這兩個字符串還可以進行二次加密,以增強密碼的保護強度。
安全措施做足了,哪怕黑客入侵了網站資料庫,也不會輕易破解密文從而得到真實的密碼,因此明文存儲歷來為程序設計大忌。
有業內人士告訴記者,一些小網站或許資料庫會明文存儲密碼,而知名網際網路公司絕無可能,但後者的業務系統頗為複雜,關聯功能可能意外隱藏著明文存儲漏洞,因此例行安全檢測都額外注意這點。
譬如微軟收購的GitHub,就是在2018年例行安全檢測中發現一個明文存儲漏洞:用戶重置密碼時安全內部日誌記錄也同步明文保存了一份。
隱私洩漏觸目驚心
儘管大公司多數明文存儲漏洞沒有造成影響,但也有漏網之魚,被外界捕捉。
大名鼎鼎的Facebook內部登錄系統曾將6億用戶的密碼以明文存儲保存,可被Facebook的內部員工搜索、訪問。
該漏洞最早可以追溯到2012年,到2019年一共被內部員工訪問超過了 900萬次,不過Facebook軟體工程師Scott Renfro對外表示:「我們在調查中沒有發現濫用這些數據的跡象。
然而Facebook公開要求所有用戶更改密碼則暴露其對洩密事件信心不足。
多方人士指點記者,暗網中流傳多份數據文件,就有涉及Facebook的用戶隱私數據,2018年10月就有黑客以2.60美元的單價銷售Facebook帳號的登錄信息,涉及5000萬用戶。
而安全監控公司 4iQ最近表示,暗網出現一份高達 41 GB的數據文件,內含14 億份以明文形式存儲的帳號和密碼,涉及Facebook、LinkedIn、MySpace、Twitter等多家知名網際網路公司。
國內不少網際網路公司也在明文存儲密碼上栽過跟頭,最著名的當屬2011年的「洩密門」。
2011年12月,CSDN網站備份資料庫遭黑客攻擊,600萬用戶的登錄名、密碼數據被竊取,之後天涯、世紀佳緣、走秀等多家網站的用戶資料庫也在網上被曝光。
有黑客向記者回憶:「當時第一眼看到從網上下載的天涯、CSDN等原始資料庫文件,居然是明文密碼,簡直驚呆了,怎麼會如此草率。」
上億網站用戶的密碼曝光後,黑客發動了後續的撞庫攻擊,獲得了更多個人隱私,甚至包括支付敏感數據,影響極其惡劣。
所謂撞庫攻擊,就是利用用戶一個密碼走天下的習慣,通過不斷嘗試登錄、企圖掌控用戶的全部網絡痕跡與隱私數據。
「洩密門」風波之後,也時不時有知名網站、APP被證實存在明文存儲密碼,譬如烏雲網曾披露銀聯手機支付APP的unionpay.db資料庫中明文存儲了帳號和密碼。
四大因素誘發漏洞
明文存儲密碼漏洞主要由燈下黑、設計考慮不周、歷史遺留、過於自信這四個因素造成。
燈下黑
多名安全人士告訴記者,安全測試時如果手尾沒有處理乾淨,也可能留下安全漏洞,出現燈下黑的情況。
譬如GitHub的明文存儲密碼漏洞出在安全內部日誌上,該漏洞也許是某次安全測試時開啟了明文日誌,而最終忘記去掉該日誌所導致的。
因此完成安全測試後,應關閉調試模式並刪除正式環境不需要的功能或代碼。
設計考慮不周
倘若程序在設計時考慮不周,無意中也會製造漏洞。
譬如Twitter使用一個名為bcrypt的函數對密碼進行掩碼處理,但在密碼被bcrypt函數處理之前以明文形式儲存的,這就為直接獲取到用戶密碼留下了「窗口」。
歷史遺留
羅馬不是一天建成的,知名網際網路公司也不是一天長大的,在成長過程中難免遺留各種問題,漏洞也不例外。
時任 CSDN 產品總監範凱曾總結經驗教訓:「CSDN網站早期使用明文是因為和一個第三方chat程序整合驗證帶來的,後來的程式設計師始終未對此進行處理,一直到2009年4月當時的程式設計師修改了密碼保存方式,改成了加密密碼。
我 2010年來CSDN上班以後發現CSDN帳號的安全性仍存在潛在的問題:雖然密碼保存已經修改為加密密碼,但老的保存過的明文密碼未清理;帳號資料庫運行在Windows Server上的SQL Server,仍有被攻擊和掛馬的潛在危險。」
一名匿名人士也告訴記者,他所在的公司人員流動性較大,早年的程序不太規範,又經過多方修改一度也出過類似的低級安全漏洞,好在後期重塑架構體系,此類問題才得以解決。
歷史遺留是頗為棘手的問題,早解決比晚解決好。
過於自信
對公司的安全體系比較信任,而公司安全人員在例行安全檢測時又沒有做到任何細節不放過,導致一些漏洞時隔多年才被發現。
一名資深程式設計師向記者透露:「曾為某消費APP設計過活動頁面,用戶可在該活動頁面優惠充值,上線之前請安全部同事檢測過,沒有發現問題。上線後也一切正常,直到白帽黑客發郵件通知,才知道頁面存在1分錢充值任意金額漏洞。」
這四大因素,歸根結底就是安全意識淡薄。
電影《蜘蛛俠》有一句經典臺詞「能力越大,責任越大」,大公司肩負無數用戶的信任,須牢牢繃緊安全意識這根弦,才能保護用戶的隱私不受侵犯。