資訊中心管理
揭曉 2023 原始碼掃描弱點 Top 10 修復指南(上)
前往目錄
近年資安意識抬頭,無論是民間企業或是政府單位,系統安全性已成為極為重要的關注點。因此,對於系統上線前的要求,普遍要通過程式碼靜態掃描檢測才可上線,這樣的資安政策往往給工程師們帶來相當的挑戰。然而,市面上存在眾多原始碼檢測工具,且沒有一款工具是完美的,我們的系統原始程式碼仍有可能被掃描出各種中高風險漏洞,也使得修復漏洞變得相當具有挑戰性。

叡揚資訊資安事業處的顧問團隊們服務眾多企業客戶,在過去的一年中,我們接收到近 1300 個弱點的諮詢,平均下來每個月回覆超過 100 個弱點問題!而面對如此龐大的諮詢量,為此我們建立了叡揚資安獨家知識庫,以協助客戶更有效解決各種弱點問題!

本文整理自 2023 年以來最常被諮詢的十大弱點修復問題!提供各位可以事半功倍的修復錦囊,快速地找出風險的關鍵點,並且有效地進行修復!文章分為上下兩篇,上篇將解析第六至第十名的弱點問題及修復錦囊。

弱點諮詢第10 名

Unchecked Input For Loop Condition

Unchecked Input for Loop Condition,是指在程式中,使用來自使用者或外部來源的輸入來控制迴圈條件,但沒有適當的檢查或驗證。這可能導致程式發生不可預期的行為,例如無限迴圈(Infinite Loop)或迴圈條件不正確,造成安全性問題或程式執行錯誤

攻擊方法和目的。

  1. 無限迴圈:如果迴圈條件是由未驗證的使用者輸入控制,攻擊者可能提供不正確的輸入,導致迴圈條件永遠不
    會被滿足,從而導致無限迴圈,佔用系統資源並降低效能。 
  2. 迴圈控制:攻擊者可能透過提供異常或惡意的輸入,控制迴圈的條件,從而影響程式的正常執行或導致不安全
    的狀態。

防範方法

1. 驗證和過濾輸入:確保來自使用者或外部來源的輸入是合法且符合預期的範圍。對輸入進行驗證和過濾,避免非法字符或異常值進入迴圈條件。

2. 限制迴圈執行次數:在程式邏輯中,設置適當的限制或條件來控制迴圈的最大執行次數,避免無限迴圈的發生。

3. 安全設計和測試:在開發過程中,謹慎設計程式邏輯,測試各種可能的輸入情況,以確保程式能夠正常執行,不會受到未預期的迴圈控制。

4. 使用適當的迴圈終止條件:確保迴圈條件符合預期,使用正確的邏輯和條件來確保迴圈在適當的時間內終止。

綜合來說,避免未經檢查的使用者輸入來控制迴圈條件是重要的安全措施之一。通過驗證和過濾輸入,限制迴圈執行次數,以及安全設計和測試,可以減少迴圈條件控制所帶來的潛在安全風險。

弱點諮詢第 9 名 SSRF

SSRF(Server-Side Request Forgery,服務端請求偽造)是一種安全漏洞,攻擊者利用伺服器端應用程式對外部請求的功能,導致伺服器發送未經授權的請求到內部網路或其他可訪問的資源。這種攻擊可能導致敏感資源的暴露、服務器資源的濫用或攻擊內部網路資源。

攻擊方法和目的

1. 偽造內部請求:攻擊者利用伺服器端應用程式的功能,通過篡改請求的URL 或參數,向內部網路資源(如內部 API、本地文件等)發送請求。

2. 利用內部資源:攻擊者可能利用 SSRF 攻擊來訪問內部資源,例如訪問本機文件、掃描內部網路、訪問本地 API等。

3. 攻擊其他系統:攻擊者也可以利用 SSRF 攻擊來攻擊其他系統,例如訪問外部服務器、執行遠端代碼或進行端口掃描。

防範方法

1. 輸入驗證和過濾:對使用者提供的URL 或參數進行嚴格的驗證和過濾,確保只能訪問預期的合法資源。

2. 限制訪問權限:確保伺服器應用程式僅能訪問必要的資源,限制其訪問內部資源的權限。

3. 使用白名單:使用白名單機制,僅允許訪問已知合法的外部資源,防止訪問內部或未知資源。

4. 採用安全設計:在設計伺服器端應用程式時,考慮安全性並設計適當的安全機制,防止 SSRF 攻擊。

5. 監控和日誌記錄:監控伺服器端應用程式的請求和活動,定期審查日誌以檢測潛在的 SSRF 攻擊。

綜合來說,防範 SSRF 攻擊需要從多個方面著手,包括驗證和過濾輸入、限制訪問權限、使用白名單控制訪問、加強安全設計等,以減少或阻止攻擊者利用伺服器端應用程式對內部或外部資源的未授權訪問。

弱點諮詢第 8 名  Missing Column Encryption

Missing Column Encryption 是「敏感資料欄位未設定加密」,指的是在敏感資料庫表中未對敏感列(欄位)進行加密保護的情況。這可能導致敏感資料暴露於未經授權訪問或未經授權使用的風險。

可能造成的風險

1. 資料外洩:如果敏感資料列未加密,攻擊者可能通過未授權訪問資料庫或盜取資料庫備份的方式獲取敏感資訊,進而導致資料泄露風險。

2. 資料竊取:攻擊者可能利用缺少列加密的漏洞,直接訪問或竊取未加密的敏感資料,包括個人身份資訊、信用卡號碼、醫療記錄等。

3. 合規違規:如果涉及到隱私或合規性標準(如 GDPR),未加密的敏感資料可能違反相關法規,導致法律責任和
罰款。

防範方法

1. 資料加密:對存放敏感資料的欄位進行加密處理,使用適當的加密算法和技術(如對稱加密、非對稱加密、加密密鑰管理等)來保護敏感資料。

在連線字串中使用欄位加密設定

hfyfyfyfyfy

2. 權限和訪問控制:使用適當的權限和訪問控制機制,確保只有授權的使用者和應用程式可以訪問和使用敏感資料。

3. 安全設計和實踐:在資料庫設計和開發過程中,應該考慮到資料安全性,將加密作為設計的一部分。

4. 加強監控和審計:定期監控資料庫,檢查敏感資料是否得到適當的加密保護,及時發現並解決潛在的漏洞。

5. 合 規 標 準 遵 循: 遵 循 相 關 的 合 規性 標 準 和 法 規, 如 GDPR、HIPAA(Health Insurance Portability and Accountability Act 健康保險可攜性和責任法)及我國的《個人資料保護法》等,以確保對敏感資料的適當保護。

弱點諮詢 第 7名 Log Forging

Log Forging 是「日誌偽造」,指攻擊者操縱或欺騙系統日誌(logs)以產生虛假的日誌記錄。攻擊者可能會通過改變日誌內容、注入惡意事件或修改記錄時間戳記來操縱日誌。這種攻擊可能對系統安全性和可追蹤性造成嚴重影響。

攻擊方法和目的

  1. 操縱日誌內容:攻擊者可能通過修改日誌的內容來隱藏其活動足跡或製造虛假事件,進而混淆日誌分析師或系統管理員。
  2. 欺騙日誌分析:攻擊者可能在日誌中注入惡意事件,試圖引導日誌分析師或系統管理員採取錯誤的行動或做出不正確的判斷。
  3. 隱藏攻擊痕跡:攻擊者可能試圖修改日誌記錄的時間戳記或刪除與其攻擊相關的事件,以隱藏其真正的行為。

攻擊範例

假設一個應用程式產生日誌記錄來記錄使用者登錄事件。攻擊者可能透過操縱日誌內容,將一個未成功的登錄嘗試記錄修改為成功,或者刪除相關的登錄記錄,從而隱藏其實際的登錄活動。

防範方法

  1. 日誌安全性:確保日誌文件和系統是受保護的,只有授權的使用者才能訪問日誌文件。
  2. 日誌完整性:避免直接使用使用者可操縱的資料寫入日誌中,如有必要則需過濾掉可能的換行符號,避免一筆日誌紀錄被分拆成多筆。
  3. 日誌監控和分析:定期監控和分析日誌,查看異常或可疑的活動,以及任何不一致的日誌記錄。
  4. 定期審查和更新:定期審查日誌管理策略和措施,及時更新系統以應對新的安全漏洞或威脅。

總的來說,保障系統日誌的安全性和完整性對於系統安全至關重要。通過適當的日誌管理和監控措施,可以幫助防止日誌偽造攻擊,確保日誌文件的可靠性和可信度。

2023top10 1

弱點諮詢 第 6 名 Path Traversal

第六名「路徑遍歷攻擊」(Path Traversal Attack)是一種常見的安全漏洞,通常出現在 WEB 應用程式中。攻擊者利用未適當處理使用者輸入的情況下,對文件系統執行非授權訪問的行為。這種攻擊可能導致敏感文件的洩露、執行檔案或代碼、或者對伺服器造成損害。

攻擊者通常會在請求中插入特殊的路徑標識符號(如 ../ 或 ..\),試圖通過對目錄結構的遍歷來訪問不應該被公開的文件或目錄。攻擊者的目標可能包括獲取敏感文件(如密碼文件、配置文件)、執行未授權的程式碼或文件、或者對伺服器進行拒絕服務(Denial of Service)攻擊。

2023top10 2

攻擊範例

假設應用程式有一個處理檔案下載的功能,並且使用者提供了文件名來進行下載,例如:

2023top10 3

攻擊者可能試圖利用路徑遍歷攻擊,例如將請求改為:

2023top10 4

這將導致應用程式嘗試訪問伺服器上的 /etc/passwd 文件,如果未進行適當的防範,攻擊者就能夠獲取該文件的內容,從而洩露系統的重要資訊。

防範方法

  1. 輸入驗證和過濾:對使用者輸入的路徑或文件名進行驗證和過濾,確保其只包含預期的字符和格式。
  2. 使用白名單:確保使用者輸入的路徑只能訪問預期的目錄和文件,而不是直接接受使用者提供的完整路徑。
  3. 限制權限:確保伺服器只能訪問應用程式需要的最小權限,盡可能降低攻擊者的潛在範圍。

總結

總的來說,防範路徑遍歷攻擊需要對使用者輸入進行嚴格的驗證和過濾,並對應用程式進行適當的設計,確保只能訪問應用程式所需的資源。在本篇的探討中,深入瞭解自 2023 年以來諮詢量最高的第六至第十名弱點修復問題。這些關鍵的資安挑戰呼籲我們更進一步提升對系統安全性的認識與應對能力。下篇將於四月資安電子報揭曉前五名的弱點,敬請期待!

2023top10 5