SV.UMD.MAIN

このエラーは、main メソッドが Web アプリケーション、J2EE アプリケーション、アプレットで検出された場合に発生します。

脆弱性とリスク

main() メソッドを Web アプリケーションの背面に残しておくと、アプリケーションへのバックドアアクセスを簡単に許可します。Web アプリケーションのセキュリティ設計は、main メソッドのアクセスを考慮しない傾向があるため、危険を伴います。

Klocwork セキュリティ脆弱性 (SV) チェッカーは、潜在的に危険なデータを生成する呼び出しを特定します。このような呼び出しは安全でないソースと考えられます。ユーザーは攻撃者になる可能性があり、ヒューマンエラーを取り込む可能性があるため、安全でないソースはユーザーが指定した任意のデータである可能性があります。

軽減と防止

実稼動コードからすべての main メソッドを削除します。

例 1

コピー
 public class SV_UMD_MAIN_Sample_1 extends HttpServlet {
     public void doGet(HttpServletRequest req,
                       HttpServletResponse res) throws ServletException,
                                                       IOException {
         res.setContentType("text.htm");
         PrintWriter out = res.getWriter();
         String name = req.getParameter("name");
         out.println("<HTML>");
         out.println("<HEAD><TITLE>Hello, " + name
                     + "</TITLE></HEAD>");
         out.println("<BODY>");
         out.println("Hello, " + name);
         out.println("</BODY></HTML>");
     }
     public String getServletInfo() {
         return "A servlet that knows "
                + "the name of the person to whom it's"
                + "saying hello";
     }
     private void work() {
         // test some code within our application
     }
     // leaving this around is unwanted once in production
     public static void main(String[] args) {
         SV_UMD_MAIN_Sample_1 ex = new SV_UMD_MAIN_Sample_1();
         // test that our code is working
         ex.work();
     }
 }

SV.UMD.MAIN が 38 行目に対して報告されています。main() メソッド定義はアプリケーションのエントリポイントを与えます。 使用しない main メソッドはすべて削除します。

セキュリティトレーニング

Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。