安全債務是工程師的問題
在上個月舊金山 Twitter 總部舉辦的 WomenWhoCode Connect 活動中參會者了解到,就像組織會形成技術債務一樣,如果他們不相應地計劃,也會形成一個名為「安全債務」的東西。
甲骨文首席安全官 Mary Ann Davidson 與 WomenWhoCode 的 Zassmin Montes de Oca 在一個面對開發人員的安全性的主題談話中強調,安全性已經成為軟體開發過程中每步的重要組成部分,
在過去,除銀行外,安全性幾乎被所有人忽視。但安全性比以往任何時候都更重要,因為現在有這麼多接入點。我們已經進入物聯網的時代,竊賊可以通過劫持你的冰箱而了解到你不在家的情況。
Davidson 負責 Oracle 的保障,「我們確保為建立的一切構建安全性,無論是內部部署產品、雲服務,甚至是設備,我們在客戶的網站建立有支持小組並報告數據給我們,幫助我們做診斷 - 每件事情都必須對其進行安全保護。」
AirBnB 的 Keziah Plattner 在分組會議中回應了這個看法。她說:「大多數開發者並不認為安全是他們的工作,但這必須改變。」
她分享了工程師的四項基本安全原則。首先,安全債務是昂貴的。現在有很多人在談論技術債務,她認為這些談話應該也包括安全債務。
Plattner 說:「歷史上這個看法是『我們會稍後考慮安全』」。當公司抓住軟體效率和增長的唾手可得的成果時,他們忽視了安全性,但最初的不安全設計可能在未來幾年會引發問題。
她說,很難為現有的脆弱系統增加安全性。即使你知道安全漏洞在哪裡,並且有進行更改的時間和資源的預算,重新設計一個安全系統也是耗時和困難的。
她說,所以這就是關鍵,從一開始就建立安全性。將安全性視為技術債務的一部分以避免這個問題,並涵蓋所有可能性。
根據 Plattner 說的,最重要的是難以讓人們改變行為。沒有人會自願改變,她說,即使你指出新的行為更安全。他們也只不過是點點頭而已。
Davidson 說,工程師們需要開始考慮他們的代碼如何被攻擊,並從這個角度進行設計。她說她只有兩個規則。第一個從不信任任何未驗證的數據;規則二參見規則一。
她笑著說:「人們一直這樣做。他們說:『我的客戶端給我發送數據,所以沒有問題』。千萬不要……」。
Plattner說,安全的第二個關鍵是「永遠不信任用戶」。
Davidson 以另外一種說法表示:「我的工作是做專業的偏執狂。」她一直擔心有人或許無意中會破壞她的系統。這不是學術性的考慮,最近已經有通過 IoT 設備的拒絕服務攻擊。
Little Bobby Tables
Plattner 說:「如果你安全計劃的一部分是信任用戶做正確的事情,那麼無論你有什麼其他安全措施,你系統本質上是不安全的。」
她解釋說,重要的是要凈化所有的用戶輸入,如 XKCD 漫畫中的那樣,一位媽媽幹掉整個學校的資料庫——因為她的兒子的中間名是 「DropTable Students」(LCTT 譯註:看不懂的點這裡)。
所以凈化所有的用戶輸入。你一定檢查一下。
她展示了一個 JavaScript 開發者在開源軟體中使用 eval 的例子。她警告說:「一個好的基本規則是『從不使用 eval()』」。 eval() 函數會執行 JavaScript 代碼。「如果你這樣做,你正在向任意用戶開放你的系統。」
Davidson 警告說,她甚至偏執到將文檔中的示例代碼的安全測試也包括在內。她笑著說:「我們都知道沒有人會去複製示例代碼」。她強調指出,任何代碼都應進行安全檢查。
Plattner 的第三個建議:要使安全容易實施。她建議採取阻力最小的道路。
對外,使用戶默認採用option out安全措施而不是可選採用option in,或者更好使其成為強制性的措施。她說,改變人們的行為是科技中最難的問題。一旦用戶習慣以非安全的方式使用你的產品,讓他們改進會變得非常困難。
在公司內部,她建議制定安全標準,因此這不是個別開發人員需要考慮的內容。例如,將數據加密作為服務,這樣工程師可以只需要調用服務就可以加密或解密數據。
她說,確保公司注重安全環境。在讓整個公司切換到好的安全習慣。
你的安全短板決定了你的安全水準,所以重要的是每個人都有良好的個人安全習慣,並具有良好的企業安全環境。
在 Oracle,他們已經全面覆蓋安全的各個環節。Davidson 表示,她厭倦了向沒有安全培訓的大學畢業的工程師解釋安全性,所以她寫了 Oracle 的第一個編碼標準,現在已經有數百個頁面之多以及很多貢獻者,還有一些課程是強制性的。它們具有符合安全要求的度量標準。這些課程不僅適用於工程師,也適用於文檔作者。她說:「這是一種文化。」
沒有提及密碼的關於安全性的討論怎麼能是安全的?Plattner 說:「每個人都應該使用一個好的密碼管理器,在工作中應該是強制性的,還有雙重身份驗證。」
她說,基本的密碼原則應該是每個工程師日常生活的一部分。密碼中最重要的是它們的長度和熵(使按鍵的集合儘可能地隨機)。強健的密碼熵檢查器對此非常有用。她建議使用 Dropbox 開源的熵檢查器 zxcvbn。
Plattner 說,另一個訣竅是在驗證用戶輸入時使用一些故意減慢速度的演算法,如 bcrypt。慢速並不困擾大多數合法用戶,但會讓那些試圖強行進行密碼嘗試的黑客難受。
Davidson 說:「所有這些都為那些想要進入技術安全領域的人提供了工作安全保障,我們在各種地方放了各種代碼,這就產生了系統性風險。只要我們繼續在技術領域做有趣的事情,我不認為任何人不想要在安全中工作。」
via: https://thenewstack.io/security-engineers-problem/
作者:TC Currie 譯者:geekpi 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出
推薦閱讀: