CVE-2021-3156

Impact:
Important
Public Date:
2021-01-26
CWE:
CWE-122: Heap-based Buffer Overflow
Bugzilla:
1917684: CVE-2021-3156 sudo: Heap buffer overflow in argument parsing
sudo で不具合が発見されました。sudo によってコマンドライン引数が解析される方法に、ヒープベースのバッファーオーバーフローが見つかりました。この不具合は、認証されていない (攻撃者はユーザーのパスワードを知る必要はありません) すべてのローカルユーザー (通常ユーザーとシステムユーザー、および sudoers 設定済みユーザーと未設定ユーザー) による悪用が可能です。この不具合の悪用に成功すると、特権が昇格される可能性があります。この脆弱性では、データの機密性および整合性、システムの可用性への影響が最も懸念されます。

Find out more about CVE-2021-3156 from the MITRE CVE dictionary dictionary and NIST NVD.

CVSS v3 評価基準

CVSS3 基本値 7.8
CVSS3 基本評価基準 CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H
攻撃元区分 Local
攻撃条件の複雑さ High
必要な特権レベル None
ユーザ関与レベル Required
スコープ Unchanged
機密性 High
完全性への影響 High
可用性への影響 High

軽減策

Red Hat Product セキュリティーチームは、修正が適用された sudo パッケージがリリースされ次第、更新することを強く推奨します。すぐに更新できない場合は、以下の systemtap を使用した暫定的かつ部分的な軽減策を適用することが推奨されます。

1.必要な systemtap パッケージと依存関係をインストールします。
systemtap yum-utils kernel-devel-"$(uname -r)"

RHEL 7 の場合は、「debuginfo-install -y kernel-"$(uname -r)」を使用して kernel debuginfo をインストールします。
RHEL 8 の場合は、「debuginfo-install sudo」を使用して sudo debuginfo をインストールします。

2.以下の systemtap スクリプトを作成します (ファイル名を sudoedit-block.stap とします)。

probe process("/usr/bin/sudo").function("main") {
        command = cmdline_args(0,0,"");
        if (strpos(command, "edit") >= 0) {
                raise(9);
        }
}

3.以下のコマンドを使用して、スクリプトをインストールします (root を使用します)。
# nohup stap -g sudoedit-block.stap &
(このコマンドによって systemtap スクリプトの PID 番号が出力されるはずです)

このスクリプトによって、脆弱な sudoedit バイナリーの機能が停止されます。sudo コマンドは引き続き通常どおりに動作します。
上記の変更は、再起動後は維持されないため、再起動後は毎回この変更を適用する必要があります。

4.修正が適用された新しいパッケージがインストールされたら、systemtap プロセスに kill コマンドを使用して systemtap スクリプトを削除できます。 たとえば、以下を使用できます。
# kill -s SIGTERM 7590 (7590 は systemtap プロセスの PID です)

参考情報 (外部リンク)

Last Modified