Checkers:SV.EXPOSE.STORE

From current-ja

リファレンス > Java checkers > SV.EXPOSE.STORE

このエラーは、public メソッドが mutable オブジェクトへの参照を保存している場合に検出されます。

脆弱性とリスク

悪意のあるアプレットは、返された結果を変更することにより、オブジェクトの内部状態を変更できます。

Klocwork Insight セキュリティ脆弱性 (SV) チェッカーは、潜在的に危険なデータを生成する呼び出しを特定します。このような呼び出しは安全でないソースと考えられます。 ユーザーは攻撃者になる可能性があり、ヒューマンエラーを取り込む可能性があるため、安全でないソースはユーザーが指定した任意のデータである可能性があります。 Java セキュリティ脆弱性 (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' への参照を保存しています。 オブジェクトの内部状態が悪意のあるユーザーによって変更される可能性があります。

セキュリティガイドライン