SV.DATA.BOUND
このエラーは、未検証のユーザーデータがやや信頼できるストレージ (セッション属性など) に保存されている場合に発生します。
リリース 2023.2 の時点で、このチェッカーは Jakarta EE をサポートしています。
脆弱性とリスク
getParameter() などのソースは常に汚染されていると見なされるため、ユーザーはそのためのサーバー検証を実行する必要があります。サーバー検証には、安全と考えられるセッション属性やデータベースなど、他の構造体から読み取られたデータの読み取りが含まれます。未検証のユーザーデータをこのような構造体に保存することによって、他の脆弱性の発生を許す危険があります。
Klocwork セキュリティ脆弱性 (SV) チェッカーは、潜在的に危険なデータを生成する呼び出しを特定します。このような呼び出しは安全でないソースと考えられます。ユーザーは攻撃者になる可能性があり、ヒューマンエラーを取り込む可能性があるため、安全でないソースはユーザーが指定した任意のデータである可能性があります。
軽減と防止
ユーザーデータを信頼できるソース (データベースやセッション属性など) に入力する前に、これらのデータを検証します。
例 1
コピー
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter("userName");
HttpSession sess = req.getSession();
sess.setAttribute("user", name);
}
SV.DATA.BOUND が 18 行目に対して報告されています。16 行目で 'name' に保存された未検証のユーザー入力が 18 行目で HTTP セッションに保存されています。
外部参考資料
セキュリティトレーニング
Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。
拡張機能
このチェッカーは、Klocwork knowledge base (ナレッジベース) を利用して拡張できます。詳細については、Java 解析のチューニングを参照してください。