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 が提供しているアプリケーションセキュリティトレーニング教材。