Checkers:SV.EXPOSE.STORE
提供:current-ja
このエラーは、public メソッドが mutable オブジェクトへの参照を保存している場合に検出されます。
目次 |
脆弱性とリスク
悪意のあるアプレットは、返された結果を変更することにより、オブジェクトの内部状態を変更できます。
緩和と予防
この脆弱性は、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" への参照を保存しています。オブジェクトの内部状態が悪意のあるユーザによって変更される可能性があります。


