資安JAVA(三四): 分離管理者功能

來源:John Melton's Weblog
標題:YEAR OF SECURITY FOR JAVA – WEEK 34 – SEPARATE ADMIN FUNCTIONALITY
作者:John Melton

What is it and why should I care?

或許有人會認為將管理者功能從系統中切出來很奇怪。但作者定義的管理者功能是更高的權限(使用者、群組、角色的管理),因為非法提權(privilege escalation)會對應用程式產生很大的影響。作者對於管理功能的想法是:
  • 擁有可以管理使用者的重要功能
  • 假設被人以不正方式利用,使用者的權限可以增加或被移除
  • 不管任何狀況,作者並不相信可以完美的保護這些功能
你可能不同意作者,尤其是第三點,你也許覺得自己的應用程式超安全。作者的經驗中,大部分應用程式本身都有設計上的漏洞,如果管理者功能被有心人利用,那被公布的系統弱點造成的影響就更大了。

What should I do about it?

第一步,請先決定你的應用程式中有沒有管理者功能。如果你的應用程式沒有,那就直接end不用看完。如果應用程式單純對內開放使用,被利用的風險很低。

接下來,你有幾個選擇:

維持現狀(Status Quo)
丟著不管,保持原本的設計。依被保護的資源價值決定策略,這也許是個好選擇。

建立新的應用程式(Build another application)
新的應用程式可獨立於原本的程式。這個獨立的應用程式需要不同的身分驗證方式(例如多因子驗證),或建立在只有內部使用者的環境,或限制使用者的ip等等。還有很多方法,目的是確保新的環境與原本的環境不同。

建立子系統(Subset the application)
你也可以建立與管理者功能相關的子系統。這是作者最常看到的做法。雖然同在屋簷下,你還是可以加強子系統的安全。例如,要求客戶端使用憑證、要求使用多因子驗證、限制可存取子系統的ip等等。

不論你選擇哪一步,請確保你已經考慮過環境條件、評估過其他選擇、針對不同情況都有制定深思過的決策。應用程式中的管理者功能是攻擊者最主要的目標之一。利用一些簡單和直接的方式改變你的應用程式,你可以大幅降低管理者功能被利用的風險。

———–———–

資安Java: 上一篇 || 下一篇
———–———–

留言

這個網誌中的熱門文章

資安JAVA(十一):X-XSS-Protection

資安JAVA(十):X-Content-Type-Options

以 SharpPcap 實作可收聽封包的 C# 程式