SV.SOCKETS
この警告は、アプリケーションがソケットを使用している場合に報告されます。
脆弱性とリスク
多くの場合、ソケットの使用は避けるべきです。たとえば、EJB 標準には次のようなガイドラインが含まれています。Enterprise Bean は、ソケット上でのリスニング、ソケット上での接続許可、マルチキャストに対するソケットの使用を試みてはなりません。ソケットを使用すると、他のアプリケーション (アプレット、サーブレットなど) でセキュリティ上の重大な問題が生じる可能性があります。
Klocwork セキュリティ脆弱性 (SV) チェッカーは、潜在的に危険なデータを生成する呼び出しを特定します。このような呼び出しは安全でないソースと考えられます。ユーザーは攻撃者になる可能性があり、ヒューマンエラーを取り込む可能性があるため、安全でないソースはユーザーが指定した任意のデータである可能性があります。
軽減と防止
ソケットを直接使用する代わりに、フレームワークメソッドの呼び出しを使用します。
例 1
コピー
public class SV_SOCKETS_Sample_1 extends Applet {
static final int PORT = 7776;
public void init() {
super.init();
try {
final ServerSocket serv = new ServerSocket(PORT);
Runnable rr = new Runnable() {
public void run() {
try {
while (true) {
Socket sock = serv.accept();
BufferedReader r = new BufferedReader(
new InputStreamReader(sock
.getInputStream()));
PrintWriter w = new PrintWriter(sock
.getOutputStream(), false); // no autoFlush
w.write("Hello");
w.flush();
r.close();
w.close();
sock.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
};
new Thread(rr).start();
} catch (IOException e1) {
e1.printStackTrace();
}
}
//...
public void paint(Graphics g) {
}
}
SV.SOCKETS が 22 行目に対して報告されています。多くの場合 (アプレット内や EJB 内など)、ソケットを直接使用することは避ける必要があります。セキュリティの問題を生じる可能性があります。