EN JP CN

SV.SOCKETS

SV.SOCKETS

この警告は、アプリケーションがソケットを使用している場合に報告されます。

脆弱性とリスク

多くの場合、ソケットの使用は避けるべきです。たとえば、EJB 標準には、「Enterprise Bean は、スレッドの管理を試みてはなりません。「Enterprise Bean は、ソケット上でのリスニング、ソケット上での接続許可、マルチキャストに対するソケットの使用を試みてはなりません」というガイドラインが含まれています。ソケットを使用すると、他のアプリケーション (アプレット、サーブレットなど) でセキュリティ上の重大な問題が生じる可能性があります。

Klocwork セキュリティ脆弱性 (SV) チェッカーは、潜在的に危険なデータを生成する呼び出しを特定します。 このような呼び出しは安全でないソースと考えられます。ユーザーは攻撃者になる可能性があり、ヒューマンエラーを取り込む可能性があるため、安全でないソースはユーザーが指定した任意のデータである可能性があります。

軽減と防止

ソケットを直接使用する代わりに、フレームワークメソッドの呼び出しを使用します。

例 1

17 public class SV_SOCKETS_Sample_1 extends Applet {
18     static final int PORT = 7776;
19     public void init() {
20         super.init();
21         try {
22             final ServerSocket serv = new ServerSocket(PORT);
23             Runnable rr = new Runnable() {
24                 public void run() {
25                     try {
26                         while (true) {
27                             Socket sock = serv.accept();
28                             BufferedReader r = new BufferedReader(
29                                     new InputStreamReader(sock
30                                             .getInputStream()));
31                             PrintWriter w = new PrintWriter(sock
32                                     .getOutputStream(), false); // no autoFlush
33                             w.write("Hello");
34                             w.flush();
35                             r.close();
36                             w.close();
37                             sock.close();
38                         }
39                     } catch (IOException e) {
40                         e.printStackTrace();
41                     }
42                 }
43             };
44             new Thread(rr).start();
45         } catch (IOException e1) {
46             e1.printStackTrace();
47         }
48     }
49     //...
50     public void paint(Graphics g) {
51     }
52 }

SV.SOCKETS が 22 行目に対して報告されています。多くの場合 (アプレット内や EJB 内など)、ソケットを直接使用することは避ける必要があります。セキュリティの問題を生じる可能性があります。