###### tags: `lsa` `ncnu` # Week 12 (2023/05/11) - Book mode: https://hackmd.io/@ncnu-opensource/book [TOC] --- ## 雲端 ### 補充  - Kubernetes Dashboard - 介紹 - 簡單容易上手 - dashboard 會持續和使用者持續連線,如果叢集中有任何改動會立即刷新頁面 > 可以自行設定刷新時間 - 幫助叢集管理員快速觀察各個資源目前狀態以及各種錯誤 > ex:Deployment, Service, Pod ## 資訊安全 : 資訊安全基礎 ### 資安是什麼 ? - [iRent 個資外洩](https://www.bnext.com.tw/article/73974/hota-irent-customer-data-exposed-response-security-information?) - 原因:內紀錄應用程式的 log 機器暫存資料庫,因為未適當阻擋外部連線,導致資料庫可能遭入侵 - [15 萬元買下台灣人民的個資](https://news.ltn.com.tw/news/society/breakingnews/4221524) - 史上首次全台各資公開販售 #### 資安的目的 - 保障資訊不未經授權的人使用 - 資安即國安 - 資訊安全是國家安全的一個重要組成部分 - 國家的許多關鍵基礎設施和資源都依賴於資訊技術 - 資訊系統受到攻擊 :point_right: 國家機密文件遭到盜取、敏感資訊外洩可能會危及國家安全 #### 資安保護的對象 - 資料 (Data) - 儲存在儲存媒體上的資訊 - 通訊 (Communication) - 傳遞訊息的過程 - 實體 (Physical) - 設的實體環境 - 人員 (Personnel) - 社交工程,依照人性的弱點進行詐欺或是取得未經授權的訪問 - ex: 假冒身分、偽造文件、詐騙電話、釣魚網站 #### 影響資安的因素 - 天然災害 - 水災、火災、地震等不可避免的自然災害 - ex: 放置設備的機房發生火災時,若沒有定期做系統、檔案備份 - 軟體硬體故障 - 硬體故障、軟體異常、設備異常或網路斷線 - 人為蓄意侵害 - 公司內部的員工惡意洩漏機密或敏感資訊 - 人為疏失 - 企業內部人員的疏忽 - 例如:公告未遮蔽個人資料或電腦操作員設置檔案或儲存媒體等 #### 資安的重要性 - 個人 - 網路購物時,信用卡資訊外洩 :arrow_right: 信用卡被盜刷 - 社交平台帳號盜用 :arrow_right: 身份被盜用、聊天紀錄被外洩 - 企業 - 機密資料受到外部入侵或內部人員洩漏 公司聲譽損失、被競爭對手利用 - 資訊系統服務中度 公司無法經營業務,造成重大損失 - 政府 - 政府資訊外洩 :arrow_right: 影響國家安全和公眾利益 ### 資安鐵三角 - 沒有明確的提出者 - 由美國國家標準暨技術研究院 (NIST) 在 1977 年 發行的刊物整合出資安鐵三角 (CIA) 的概念 - 資訊安全的重要性在於保護資訊的機密性完整性和可用性 :::info ### **美國國家標準科技技術研究院 NIST** - National Institute of Standards and Technology => NIST - 提供各種衡量標準、測量方法、軟體和硬體工具 ### NIST SP 800 系列 - NIST SP 800-53: 資訊系統及組織的安全及個人資料控管 - NIST SP 800-37:風險管理框架,幫助組織規劃實施、管理ˊ續,並提供完整的生命週期管理方法論 - NIST SP 800-207: ZTA ,零信任架構的設計、實施、操作 ### NIST CSF ::: #### 機密性(Confidentiality) - 資料機密性 - 機密性:任何不公開的資料無法被未經授權的人看到 - 機密性攻擊 : 機密資料未經授權的使用者看到 - 情境舉例 : 偷看助教裡的檔案,提前知道其中考的題目 :point_right:違反資料機密性,因為未經授權的人看到檔案了 - 如何提高資料的機密性 - 針對資料作家密 - 使用磁碟加密軟體,可以建立實體硬碟上的加密區域、建立加密虛擬硬碟檔案掛載使用 - 2FA、MFA - 資料分持:將資料存在不同地方,即使取得其中一部分,也無法知道完整訊息 - 金鑰分持 : 任何一個人都不知道完整的解密方式,如果其中一個人手上的金鑰被取得,也無法成功解密資料 - 資訊混淆,即使解密了,裡面的資料室被混搖過,所以一般人拿到也不知道資料室什麼,而只有特定的人知道混淆的方法是什麼 #### 完整性 - 資料完整性 - 完整性:任何機密資訊都無法被入侵者竄改、毀損、刪除 - 情境舉例: 竄改助教檔案裡的成績,把自己的分數改為100分 :point_right: 違反資料完整性,因為擅自竄改了助教的檔案 - 如何提高資料的完整性 - 雜湊函數驗證 - 使用數位簽章 - 用私鑰加密、公鑰加密 #### 可用性 - 通訊可用  - 可用性:已經取得授權可以即時不間段的讀取或使用資料,確保資料順暢性 - 可用性攻擊: 使授權者無法正常查看資訊 - 提高資料的可用性 - 備份 321 原則 - 製作三份備份、放在兩種不同的儲存媒體上、一份做異地保存 - 適當的容錯機制 - RAID 磁碟陣列,以免單一磁碟失效而導致整個系統無法運作 #### 延伸安全性要素 - 可鑑別性 (Authenivity) - 應能辨別使用者身分是否真實、有效 - 不可否認性 - 傳送方和接收方、雙方都不能不承認了傳遞或接收 - 違反不可否認性:會產生爭議、任雙方其一否認曾經發生傳遞會接收 - 存取權限控制 (Authority/Access Control) - 存取權限控制: 依照身分給予適當的權限 - 違反存取權限控制:超越權限範圍,執行不該有的操作 ### 3A #### 認證 - 識別資訊使用者的身分,可記錄資訊被誰所存取使用 - 例如: 透過密碼或憑證方式驗證使用者身分 - 你知道的(Something you know):正確使用者知道的屎情 - 傳統帳號 - 破解機率大 - 你所擁有的 - 個人生物特徵辨別 - 指紋、虹膜、聲紋、臉部特徵 #### 授權 - 依照實際需求給予適當的權限,建議採最小權限 #### 紀錄 - 為了收集使用者與系統之間的資料 - 幫助未來進行稽核、計費、分析 :::info - 量測 - 系統或應用程式收集與紀錄使用者的操作行為、系統狀態以及其他相關資訊 - 監控 - 系統或應用程式持續的監控使用者的操作行為和系統的狀態 - 如果發現異常,可以立即通知管理者或觸發相應的事件 - 報告 - 將量測與監控的資料加以整理並呈獻給管理者,以便管理者能夠了解系統的狀態,並進行相應的管理與調整 - ex: 系統使用量報告、風險評估報告 - 紀錄檔案 - 測量、監控、報告的資料記錄下來,加上時間戳記和事件的描述,以便於未來做查詢 - 稽核 - 對系統使用狀況和行為的監視與檢察 - 可以幫助檢測潛在的風險和漏洞,發現任何可能的非法或不當行為 - 計費 - 跟蹤系統使用情況,已確定相對應的費用 - 在雲計算等服務中,暨費可以幫助提供方收取相應的費用,同時也可以幫助使用方管理成本與支出 - 分析 - 通過檢查紀錄和其他的資訊來坪故系統的使用情況 - 有助於發現問題和機會,去制定改進和最佳化的策略,從而提高系統的性能和效率 ::: ### 資安相關標準與規範 #### 國際標準 - 國際組織 - 標準化組織(ISO)制定相關的資安標準 #### 國內法律規範 - 資通安全管理法 - 有效規劃我國資通安全管力政策,並落實於公、私部門,以建構安全的資通環境,進而保障國家安全,維護社會的公共利益 #### 企業內部規範 - 以上規定不會直接適用企業內部本身,所以 ### OWASP 組織介紹 - 非營利組織 - 全球性的資安社群 - 提供一系列的開工具和資源 1. OWASP Top10 - 最常見的十大 Web 應用程式安全風險列表 - 幫助開發人員、測試人員和管理人員識別或解決應用程式的安全問題 2. OWASP Testing Guide - 測試 Web 應用程式的指南,提供全面的測量方法、技術和工具 - 幫助測試人員檢查軟體開發生命週期的各個階段、發現漏洞 3. OWASP ZAP - 開源的 Web 應用程式安全測試工具,用於管理Web 應用程式的安全姓 - 可進行漏洞掃描、漏洞測試、弱點掃描、風險評估 4. OWASP Juice Shop - 開源的Web應用程式,展示漏洞和攻擊來幫助開發人員學習Web應用程式安全性 - 可以用於教育和培訓開發人員、測試人員和管理人員 ## OWASP top 10 2021  - 綠色: 排名上升 - 橘色: 排名下降 - 黃色虛線:合併到其中一個類別 ### 1. Broken Access Control 權限控制失效 允許未經授權的使用者訪問受限的資源,導致未經授權的資料洩漏、修改或損壞 #### 什麼是 Access Control 一種安全機制,決定誰或誰麼可以訪問特定的資源、應用程式、系統中執行特定的指令,如果沒有授權就不能訪問資源,可以報帳應用城市或系統的安全性以及保密性 - 實施 Access Control - Session Management - 追蹤使用者的登入狀態,噹使用者發出新的請就,就會簡啥是否和之前的 Session id 相同,如果不同就會重新驗證 - Authentication - 指定特定的使用者可以放問的資源和執行特定的操作 #### Access Control 常見種類 - MAC - 由系統管理員明確定義資源的存取方式,使用者無法自行更改規則。嚴格條列出每一種可能的存取規則,也因相當嚴謹,因此缺乏彈性 - DAC - 由資源的擁有者自行決定如何開放授權讓其他人存取權限,使用彈性大 - Vertical - Horizontal - 根據使用者的角色和職責分配權限,確保使用者? #### 什麼是 Broken Access Control - Verical Privilege escalation 垂直提取 - 攻擊者可能透過竊取或冒用其他**使用者的身份**進行攻擊,從而繞過訪問機制進行控制 - 失敗 - 手動進入管力頁面,手動修改網址(?後面的東東) > ex: https:example/admin.php?id=me&passwd=wow - Horizontal pricilege escalation 水平提取 - 直接訪問物件,進行不當的**訪問或是操作**,繞過系統的權限控制 - 放問系統內部的文件、資料、目錄等  - 舉例:目錄遍歷攻擊  - 解決方法 - 檢查權限 - 黑名單 / 白名單 - 間接物件引用 | | 水平提權 | 垂直提權 | |:----------:|:------------------------------:|:--------------------------------:| | 定義 | 訪問同一個帳密 | 直接訪問物件,繞過系統的權限控制 | | 攻擊目標 | 同一個權限級別內的其他帳號 | 特定物件或資源 | | 攻擊手法 | 猜測帳號密碼 | 直接修改網址或參數 | | 可能的威脅 | 導致帳號被盜用,進一步存取資料 | 導致物件未授權存取 | #### 防範方式 - 開發階段 - 除了公開資源以外? ### 2. Cryptographic Failures 加密機制失效 #### 密碼學 - 密碼學可以做啥 - 機密性:確保資料傳遞根除存的隱密性 - 完整性:保護數據避免未經過授權的竄改 - 可鑑別性:確認使用者或系統身份 - 編碼 encode - 不安全,不需要金鑰就可以解碼 - 經過一種演算法漿資料轉換程另一處資料的方式 - 編碼 != 加密 - 加密 encrypt - 雜湊 hash - 漿任意長度的明文轉換成固定長度數據(雜湊) - 通常用在數據完整性驗證和數據的比較 - 相同的書輸入會產生相同的輸出,瞳的輸入會有不同的輸出 - 結果不可逆 - 確保駭客無法偽造或是竄改網際網路傳輸的資料封包 - 發送方和接收方會在 TLS 教握過程中交換共享的密鑰,之後發送方會將每個資料封包產生一組 MAC,然後附加到封包上,接收方可以利用金鑰計算 #### 什麼是 Cryptographic Failures 因為在應用程式中會有許多敏感資訊,所以傳輸資料的國成功就需要對資料進行加密 - 一種現象 - 導致加密失敗的原因 - 敏感資料透過 HTTP、FTP、SMTP 明文傳輸.. - 攻擊情況 - 弱密碼 - 使用者跟網頁之間的通訊是經過加密的 - 加密的過程是用金鑰 - 密碼竊取/破解 - 暴力法攻擊:嘗試各種可能是密碼的排列組合,直到找到正確密碼 - 密碼字典攻擊:攻擊者事先準備好的密碼字典進行嘗試。字典包含大家常用的密碼、單字、名稱之類的。 - 混合攻擊:結合暴力與字典攻擊,再加上其他技術,如彩虹表攻擊等 - 彩虹表攻擊法 - 攻擊者會生成一張彩虹表,收集大量使用者常用的密碼字串,用各種雜湊函數計算各種可能的雜湊值,如果攻擊者入侵資料庫就可以利用雜湊執逆向查找,頹推對應的密碼 :::info ### 彩虹表 目前有破解網站提供密碼字典的 MD5 and SHA-1 ### 加鹽 將明文做一些調整、加上變化再做加密,避免加密後被破解的明文被清楚讀取 ### 經過加鹽的密碼一定安全嗎? 如果使用不安全的雜湊演算法或者鹽值不夠長或者不夠隨機。攻擊者仍然可以使用暴力破解或字典攻擊合憲性搜尋攻擊等。 ::: #### 防禦方式 - 對於使用者 - 遵守密碼最小長度、複雜程度、組成隨機性、避免重複使用、定期更換 - 多層身分驗證 - 監控和檢測:注意登入活動 - 對於開發者 - 設計和開發系統,要考慮安全性因素 - 使用最新的加密演算法,進用老舊或不安全的碼碼 - 對密碼使用雜受加鹽技術 - 定期審查錯誤日誌,檢查潛在的安全問題 ### Injection 注入攻擊 #### 什麼是 Injection 利用應用程式對輸入數據的不充分過濾和驗證,將惡意樹入數據注入到應用程式中,從而繞過正常的輸入驗證,進而獲取敏感資料、修改資料或者執行未授權的操作。 #### SQL Injection 在輸入的字串資料中,夾帶符合SQL語法的字串,讓伺服器以為是正常的SQL語法指令而執行,藉此進一步繞過身分驗證進行? - SQL injection 類型 - 攻擊者需要根據資料庫的種類跟類型調整輸入的攻擊字元 - Error based - 試圖輸入錯誤的指令,城市會返回一個錯誤訊息或頁面,有關錯誤的詳細資訊,攻擊者就可會獲得資料庫的其他資訊,例如:資料庫版本、表個名稱等 - 有了資料庫的一些資訊就可以用 injection attack - Blind based - 系統屏蔽錯誤訊,攻擊者只能用盲測找出資料庫弱點 - 常用方式 - Boolean Based - time Based - 防禦方式 - 前端 - 輸入驗證:在前端對使用者輸入驗證,去保輸入的數據符合格式和範圍 - 輸入過濾 - 輸入加密 - 後端 - 參數化輸入:避免使用動態串接 - 最小權原則:險置資料庫使用者權限,降低攻擊者的攻擊面 - 隱藏錯誤訊息:不向使用者返回有關應用程式或資料庫詳細錯誤訊息 - 驗證輸入:再次對使用者輸入進行驗整,確保輸入的內容符合預期的格式和範圍 #### command injection #### XSS - 將指令碼注入到動態網頁中,讓使用者在瀏覽網頁的過程中仔入並惡意製造的網頁程式 - 種類 - 儲存式 XSS(store) - 惡意角本會城市碼除存在伺服器中,當其他使用者存取相關網頁的時候,就會被惡意腳本攻擊。攻擊者再網站上儲存惡意腳本的方式通常是透過提,並將腳本存入網站資料庫,當其他使用者存取相關頁面,惡意腳本就會被載入並執行 - DOM 型 - XSS 防禦 - 輸入驗證(伺服器端) - 在伺服器端對使用者輸入的資料進行驗證,只接受合法的資料,避免惡意輸入被存入資料庫會顯示在網頁上 - 制定白名單允許特定資料,制定黑名單過濾惡意資料 :::success - InnerHTML - 回傳元素內的 HTML - innerText - 回傳元素內的文字,並自動移除 HTML 文字 - textContent  ::: ### Security Misconfiguration安全設定缺陷 #### 導致安全設定缺陷的原因 #### 防禦 - 封鎖全部再放白名單 - 詳細敘述服務所需要的 port and uses - 精簡平台,移除或不安裝任何沒有使用的功能或框架 #### XML 外部實體注入攻擊 - 攻擊者透過竄改 XML file 內容並上傳? ### 使用危險或過舊的元件 #### 什麼是危險或老舊元件 - 可能會成為駭客的入侵系統的管道 - WebServer - 資料庫 - 涵式庫/前端開發框架 - 任一系統元件 #### 攻擊情境 - Struts2 發生多起遠端任意程式碼(RCE)執行漏洞 - Apache Log4 事件 - 漏洞評分系統評估為 10(最嚴重=10) - 是啥 - 基於 JAVA 紀錄檔案的工具 - 被大量網站和開發人員紀錄回動會查找錯誤 - RCE - 高危險漏洞 - 遠端執行程式碼攻擊 - 類似 injection - 擁有控制權 - 利用服務中可以讓使用者輸入的區塊,執行惡意程式 #### 防護 - 盡量掌握第三方元件 ### Identification and Authentication Failures 認證以及驗證機制失效 #### 什麼是 Session/cookie - Http 本身無狀態的協議,使用者每次發送的請求都是獨立運作,server 針對每個請求分別處理再發送回應 => 造就 Session and cookie - 提供更多功能、提高使用者體驗 - e.g. 成功登入網站後,如果不小心關閉網站,重開後登入狀態還再 - Session id 常用 網址列、cookie 傳遞 - Cookie - Session - Session/Cookie process  ### SoftWare and Data Integrity Failures 軟體以及資料晚整性失效 > 全新類別,合併 2017 年 A8-insecure Deserialization( 不安全的反序列化 ) #### 這是啥 - 架構不能保護軟體集資料的晚整性,沒有考慮到資料完整性驗證雞智慧相關安全性保護措施 - A06 危險或老舊的元件 - 元件已經有已知的弱點 - 使用不信任來源更新 - 持續性整合/部屬 (CI/CD),未經完整性驗證 - 不安全的反序列化 - 見底下的 info box #### 防護 - 三方套件信任問題 - 信任的來源取得還是庫以及第三方套件 - 確保地方套件沒有已知的弱點 - CI/CD 流程 - 使用自動化的測試來驗證程式碼的完整性 - 使用簽章確保程式碼沒有被竄改 - 加密技術保證憑證、密碼 - 針對 insecure Deserialization - 所有反序列化的物件都加入簽章,驗證資料完整性 - 強化輸入驗證機制,要求在通過身分驗證後才能進行反序列化 - 使用白名單控管所有產生的物件 :::info ### 序列化/反序列化 #### 序列化 - 把物件變成? #### 反序列化 - 儲存格式轉為物件 #### 不安全反序列化 - 伺服器實做反序列化的過程中,為進行適當的 - 攻擊方式 - 遠端執行程式碼攻擊 - 注入攻擊 ::: ### Security Logging and Monitoring Failures 資安紀錄及監控失效 #### 日誌 - 事件紀錄種類 - 身份驗證:登入成功、登入失敗、變更密碼等 - 重要的資料存取:資料庫內容異動、權限變更 - 系統功能錯誤:非預期狀態、存檔錯誤 - 應用程式以及相關系統元件啟動、中止、停頓 - 事件描述 - 人: 相關的使用者帳號 - 事: 事件描述 - 時:時間戳記 - 物: 相關物件資訊(存取資訊) - 地: 來源、目的地地址、port、主機名稱 - 物:相關物件資訊(存取資源) #### 造成 Security Logging and Monitoring Failures 原因 - 未紀錄可稽核事件 - 未產生警告或錯誤 - 未紀錄或者紀錄的不明確 - 未有適當監測原則 - 未設定適當警閥值(Alert threshold) - 增加調查難度 - 紀錄反應時間長 - 未能即時反應事件或警告 - 降低安全事件的追蹤效率 - 總結 - 雖然不會直接造成漏洞,但如果系統缺乏適當的資安紀錄和監控機,系統管理者將難以發現入侵或異常行為,攻擊者就有更多的時間在系統內搜尋敏感諮詢和擴大攻擊範圍,對日後的調查和追蹤也會產生困難 #### 注意事項 - 統一格式儲存 - 容易被分析和處理,提高事件偵測的效率 - 日誌備份/異地被廢 - 從備份中恢復資料和日誌紀錄,進行分析和追蹤事件 - 避免從本地設備故障造成丟失日誌紀錄 - 確保日誌的完整性 - 不會被竄改 - 可留存日誌 - 監控系統能夠偵測可疑活動 - 警告機制運作正常 ### Server-Side Request Forgery(SSRF) 伺服器端請求偽造 #### 是什麼 ? - 取得遠端資源十位對使用者輸入進行驗證會限制,導致攻擊者可以透過造假的請求,引導伺服器存取非預期的資源 - 如果發出的請求事合法的,就可以突破防火牆、VPN、ACL的保護 - 因為雲端服務和雲端的複雜性,偽造賜福端請求的嚴重性將會越來越嚴重 #### 情境舉例 1 - 貼網址到 LINE - 進入內部網路,對服務進行操作或拿取資料 - 嘗試猜測內部有什麼服務,通常會有預設的網址  - 假設裡面有 Amazon EC2 ,可能可以去針對特別的 IP,往雲端上攻擊  - 因為沒有對使用者的輸入進行驗整,所以可以引入 Server 本地端、外部來源的檔案 - file:// - 引入 Server 本地端檔案 - Ldap:// - 存取本地目錄 - dict:// - 讀取其他 server 的檔案 - sftp:// - 讀取其他 server 上的檔案 - gopher:// - 讀取其他server 上的檔案 #### 常見繞過手法 - IP 變形 (使用不同進制、插入無意義的字串) - 127.1 - 127.0x0.0x00.1 - 2130706433(127.0.0.1)。0177.0000.0000.0001 - 10.121913 - [::] - [0000::1] - 重新導向 - 修改 location 重新導向到想要訪問的目標 - 網域解析 - 攻擊者控制的 IP 解析程合法的網域名稱 - 伺服器以為這是一個合法的網域名稱而發送請求 - ex: `127.0.0.1.nip.io` 訪問 `127.0.0.1` - DNS rebinding - 利用第一次dns 解析 到 「檢測是否合法,合法後進行訪問」中間的時間差重新綁定心的 DNS - 第一次查詢:1.2.3.4 - 第二次查詢:127.0.0.1 #### 防禦方式 - 網路層 - 切割網路: 將遠端功能切割成不同的子網路,降低SSRF的影響,限制不同往段之間的流量 - 預設拒絕 (deny by default): 在防火牆政策或是ACL 的規則中,拒絕全部的外部流量,只開放必要的流量 - 內部 API 還是要有憑證保護: 不能只有依賴內網的防火牆 - 應用層 - 避免目錄便利(Path Traversal) 漏洞,過濾、驗證使用者端輸入,確保請求不是指向惡意目標 - 設置白名單 - 確保 URL 一致性,避免攻擊者透過些改 IP URL 的方式繞過防禦機制 - 關閉 HTTP 重新導向,避免攻擊者將請求導向道意料之外的 URL
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up