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 内など)、ソケットを直接使用することは避ける必要があります。セキュリティの問題を生じる可能性があります。