CXX.SV.INSECURE_COOKIE

安全でない cookie

保護されていない可能性があるネットワーク通信でアプリケーションが cookie を使用している場合、Klocwork は CXX.SV.INSECURE_COOKIE 欠陥を報告します。

脆弱性とリスク

保護されていないネットワーク通信を使用して cookie が送信されると、セッション ID などの重要な情報が開示されることがあります。こうした保護されていない通信は、中間者攻撃、セッションのハイジャック、セッションへの偽情報の挿入に対して脆弱です。

軽減と防止

一般的な軽減策は、SSL や TLS などのトランスポート暗号化プロトコルを使用してセッションを確実に保護することです。こうしたプロトコルは、エンティティ認証がプロトコルレベルで実行され、認証されたエンティティの通信が暗号化されるようにします。

cookie を作成するときには必ず Secure フラグを設定してください。cookie の生成に使用されるフレームワークを見直し、この機能がどのように実装されているかを理解してください。

脆弱コード例

コピー
void create_cookie(QNetworkCookieJar &cookieJar)
{
    QNetworkCookie cookie;
    cookieJar.insertCookie(cookie);   //CXX.SV.INSECURE_COOKIE
}

Klocwork が 4 行目で CXX.SV.INSECURE_COOKIE 欠陥を報告し、保護されていない可能性があるネットワーク通信で cookie が使用されていることを示します。

修正コード例

コピー
void create_cookie(QNetworkCookieJar &cookieJar)
{
    QNetworkCookie cookie;
    cookie.setSecure(true);
    cookieJar.insertCookie(cookie);
}

setSecure(true) の呼び出しによって cookie に Secure フラグが設定されているので、Klockwork が CXX.SV.INSECURE_COOKIE 欠陥を報告しなくなります。