セキュリティ

「sudo」コマンドに特権昇格の脆弱性、各ディストリビューションの対応一覧


ユーザーが別のユーザーの権限を利用してプログラムを実行できるコマンド「sudo」に、パスワードなしで特権の獲得を許す脆弱性が見つかりました。この脆弱性は2011年7月から存在しており、各Linuxディストリビューションは修正対応を発表しています。

CVE-2021-3156: Heap-Based Buffer Overflow in Sudo (Baron Samedit) | Qualys Security Blog
https://blog.qualys.com/vulnerabilities-research/2021/01/26/cve-2021-3156-heap-based-buffer-overflow-in-sudo-baron-samedit

Buffer overflow in command line unescaping
https://www.sudo.ws/alerts/unescape_overflow.html

sudoの脆弱性(CVE-2021-3156)に関する注意喚起
https://www.jpcert.or.jp/at/2021/at210005.html

New Linux SUDO flaw lets local users gain root privileges
https://www.bleepingcomputer.com/news/security/new-linux-sudo-flaw-lets-local-users-gain-root-privileges/

「sudo」コマンドは一時的にプログラムを特権で実行したい場合に利用されるコマンドで、rootユーザーでログインすることなく特権を限定的に扱うことができます。クラウドセキュリティサービスを提供するQualysは、このsudoに約10年前の2011年7月からヒープベースのバッファオーバーフローによる特権昇格の脆弱性が存在したことを発見し、「Baron Samedit」と命名しました。

脆弱性は、コマンド引数のエスケープ処理を行う「set_cmnd()」に存在していました。以下はset_cmnd()のコードを一部抜粋したもので、「from」は引数が格納された変数、「to」はヒープベースのバッファとなっています。


このwhile文の処理は「fromポインタが指すアドレスに格納されている文字がバックスラッシュで、かつ次のアドレスに格納されている文字がスペースでない場合は、その文字をバッファに格納する」というもの。バックスラッシュでエスケープされた引数を処理するための記述ですが、引数にバックスラッシュのみ入力した場合、ヌル終端文字列が次の文字としてバッファに格納されることになります。さらに、バッファへ格納する際にfromがインクリメントされることで、ヌル終端文字列の次の文字、つまり引数の範囲外のメモリ参照が発生してしまう脆弱性がありました。

set_cmnd()によるエスケープ処理は「valid_flags」というフラグ内で「MODE_SHELL」が指定されている場合のみ実行されるようになっており、通常のsudoコマンドでオプションを指定した場合は「MODE_SHELL」を含まないよう初期化がなされていました。


しかし、sudoeditコマンドにはこうした初期化処理が行われておらず、valid_flagsにはMODE_SHELLを含む「DEFAULT_VALID_FLAGS」が指定されていました。このため、sudoedit経由でバッファオーバーフローを引き起こすことが可能な状態でした。


この脆弱性を利用して、実際に特権を獲得するムービーもQualysにより公開されています。攻撃を行うコード自体は非公開であるため処理の内容は不明ですが、実際に特権を獲得している様子を確認できます。

CVE-2021-3156: Heap-Based Buffer Overflow in Sudo (Baron Samedit) on Vimeo


利用しているOSが脆弱性の影響を受けるかどうかは、「sudoedit -s /」と実行し、「not a regular file」と表示された場合は要修正、「usage: sudoedit......」と表示された場合は修正済みとなります。


今回の脆弱性は「CVE-2021-3156」と採番されており、主要Linuxディストリビューションの対応状況は以下となっています。

・Ubuntu:14.04 ESM以降に修正パッケージ配布済み

CVE-2021-3156 | Ubuntu
https://ubuntu.com/security/CVE-2021-3156

・Debian:Stretch以降に修正パッケージ配布済み

CVE-2021-3156
https://security-tracker.debian.org/tracker/CVE-2021-3156

・RHEL:RHEL 5は影響なし、RHEL 6以降に修正パッケージ配布済み

CVE-2021-3156- Red Hat Customer Portal
https://access.redhat.com/security/cve/CVE-2021-3156

・Fedora:32、33で修正パッケージ配布済み

[SECURITY] Fedora 33 Update: sudo-1.9.5p2-1.fc33 - package-announce - Fedora Mailing-Lists
https://lists.fedoraproject.org/archives/list/[email protected]/message/LHXK6ICO5AYLGFK2TAX5MZKUXTUKWOJY/

[SECURITY] Fedora 32 Update: sudo-1.9.5p2-1.fc32 - package-announce - Fedora Mailing-Lists
https://lists.fedoraproject.org/archives/list/[email protected]/message/CALA5FTXIQBRRYUA2ZQNJXB6OQMAXEII/

・Gentoo:修正パッケージ配布済み

sudo: Multiple vulnerabilities (GLSA 202101-33) — Gentoo security
https://security.gentoo.org/glsa/202101-33

・Amazon Linux:修正パッケージ配布済み

Sudo Security Issue
https://aws.amazon.com/jp/security/security-bulletins/AWS-2021-001/

・Cisco:複数のネットワーク機器に影響、修正パッチ配布済み

Sudo Privilege Escalation Vulnerability Affecting Cisco Products: January 2021
https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-sudo-privesc-jan2021-qnYQfcM

なお、macOSやSolarisといった上記以外のOSに関しても、sudoの公式サイトより最新版の修正パッケージが配布されています。

Download Sudo
https://www.sudo.ws/download.html

この記事のタイトルとURLをコピーする

・関連記事
Ubuntuに特権ユーザーを誰でも簡単に作成できてしまう脆弱性が見つかる - GIGAZINE

Windowsのストレージ暗号化機能「BitLocker」をバイパス可能な脆弱性が報告される - GIGAZINE

GoogleやIBMなども利用するDNS転送ソフト「Dnsmasq」にDNS乗っ取りを可能にする脆弱性「DNSpooq」が報告される - GIGAZINE

Googleの脆弱性対策チームが発見した「非常に洗練されたサイバー攻撃」の手法とは? - GIGAZINE

キーボードをガチャガチャ連打した子どもが「Linux Mintのロック解除方法」を発見 - GIGAZINE

in ソフトウェア,   セキュリティ, Posted by darkhorse_log

You can read the machine translated English article here.