SV.EXPOSE.STORE
SV.EXPOSE.STORE
このエラーは、public メソッドが mutable オブジェクトへの参照を保存している場合に検出されます。
脆弱性とリスク
悪意のあるアプレットは、返された結果を変更することにより、オブジェクトの内部状態を変更できます。
Klocwork セキュリティ脆弱性 (SV) チェッカーは、潜在的に危険なデータを生成する呼び出しを特定します。このような呼び出しは安全でないソースと考えられます。ユーザーは攻撃者になる可能性があり、ヒューマンエラーを取り込む可能性があるため、安全でないソースはユーザーが指定した任意のデータである可能性があります。
軽減と防止
この脆弱性は、mutable オブジェクトへの参照を public メソッドに保存せず、代わりに immutable オブジェクトを使用するか static フィールドの使用を避けることにより回避できます。
例 1
18 private Collection users; 19 public void setUsers(Collection users) throws AuthorizationException { 20 for (Iterator iter = users.iterator(); iter.hasNext();) { 21 String user = (String) iter.next(); 22 if (!authorized(user)) throw new AuthorizationException(); 23 24 } 25 this.users = users; 26 } 27 // ... 28 void maliciousUserCode() throws AuthorizationException { 29 Collection myUsers = new ArrayList(); 30 myUsers.add("goodUser"); 31 setUsers(myUsers); 32 myUsers.add("anotherUser"); 33 }
SV.EXPOSE.STORE が 26 行目に対して報告されています。メソッドが mutable オブジェクトである 'users' への参照を保存しています。オブジェクトの内部状態が悪意のあるユーザーによって変更される可能性があります。