• Logging 衍生的資訊安全風險

    log icon

    這篇文章主要說明 Log 會帶來的資訊安全風險與防範。

    Log原本主要用在紀錄系統或是程式執行過程中發生的錯誤或是異常,

    Log記錄這些系統的資訊以便未來開發或是系統人員可以根據這些log 加以除錯。

    但是,對於駭客來說 Log 也被用來了解系統行為的一個管道之一。

    我們會討論三個實際個案,最後說明Log所要注意的資訊安全設計與建議。

     

    Log主要目的

    不管是系統或是程式Log的主要目的不外乎是紀錄系統活動事件。Log的資訊內容包含:

    • 發生什麼事情?
    • 何時、何地、誰、做了什麼使事情?
    • 除了系統本身的 log之外,還有應用程式 Log
    • 資訊安全相關的事件記錄工未來稽核使用。(例如:登入失敗、成功、修改帳號等)

    這些Log都是希望未來可以幫助我們事後的稽核、程式的錯誤排除等使用。

    常見的 Security Event log 包含:

    • 系統管理者權限相關功能的使用,例如修改系統檔案、安裝程式、新增使用者、修改權限等
    • 登入成功、失敗
    • 重新設定密碼
    • 密碼修改

     

     真實案例

    駭客會利用這些 Log 進行什麼攻擊呢? 讓我們來看三個真實的案例

    案例一:帳號密碼

    這個例子,Log原始的呈現帳號密碼資訊。因此,只要有人或是駭客拿到 Log檔案,就可以容易的資料資料庫的帳號密碼。

    Exception :Error: DatabaseUnavailableUnclassified
    Gentle.Common.GentleException: The database backend (provider SQLServer) could not be reached.
    Check the connection string: Password=MediaPortal;Persist Security Info=True;User ID=sa;Initial Catalog=MpTvDb;Data Source=htpc\SQLEXPRESS;Connection Timeout=300; —> System.Data.SqlClient.SqlException: Cannot open database “MpTvDb” requested by the login. The login failed.Login failed for user ‘sa’.

     

    案例二:登入失敗的帳號密碼

    這個例子,雖然log沒有記錄登入成功的帳號密碼,但是記錄失敗的登入。

    從失敗的登入紀錄的嘗試,也可以很容易的猜到正確的帳號密碼為何。

    grep  “incorrect password”   /tmp/access.log

    Mon Feb 1 15:11:2011: Login  as   test@example.com   failed — incorrect password (pass)

    Mon Feb 1 15:11:2011: Login  as   test@example.com   failed — incorrect password (Pass)

     

    案例三:真實案例CVE-2006-4624

    這個例子是一個知名的案例,當時還有 CVE的 ID發布,

    駭客可以透過 Log,巧妙的製造一些錯誤訊息,誘導使用者點擊惡意網站。

    主要原理就是透過特殊的換行符號,“%0D%0A”  或是 “%0A%0A”

    讓我們看這個簡單的範例

    範例程式

    String val = request.getParameter("val");
    try {
    
    int value = Integer.parseInt(val);
    }
    catch (NumberFormatException) {
    log.info("Failed to parse val = " + val);
    }

    當駭客透過下列字串輸入:

    twenty-one%0a%0aINFO:+http://malicious.com/

    系統Log檔案呈現:

    INFO: Failed to parse val=twenty-one

    INFO: http://malicious.com/

    系統管理者就會好奇怎麼會有這樣的 URL: “INFO: http://malicious.com/”

    於是好奇的追查就會間接點擊該網址。

     

    其他國際知名案例CWE

     

    Logging安全設計注意事項

    對於隱私性資訊的 logging 應該要盡量避免或是用加密處理,例如:

    • 密碼
    • 信用卡資訊
    • 交易秘密
    • 個人身分證資訊
    • 醫療資訊

    例如:這段程式記錄了使用者名稱與信用卡號碼

    logger.info("Username: " + usernme + ", CCN: " + ccn);

    Logging應該要考慮下列因素:

    • 避免紀錄敏感性或是隱私性資訊
    • 注意 Log的撰改
    • 避免記錄”過多”的資訊
    • 注意潛在 Log的假造

     

     

    Posted by Tony @ 10:03 pm

  • Leave a Reply

    Your email address will not be published.