Linux が Sudo 権限昇格の脆弱性を公開、どのユーザーでも root コマンドを実行可能

Linux が Sudo 権限昇格の脆弱性を公開、どのユーザーでも root コマンドを実行可能

Linux で最も一般的に使用される重要なユーティリティの 1 つである Sudo は、ほぼすべての UNIX および Linux ディストリビューションにインストールされており、ユーザーはコア コマンドを呼び出して実装できます。 しかし、最近明らかになった権限昇格の脆弱性は、sudo のセキュリティ ポリシー リスクを直接的に示しています。設定で明示的に root ユーザー アクセスを許可していない場合でも、この脆弱性により、悪意のあるユーザーまたはプログラムが対象の Linux システムで root ユーザーとして任意のコマンドを実行できる可能性があります。

(タイトル画像はHacker Newsより)

Sudo は具体的には「スーパーユーザー」を指すと報告されています。システム コマンドとして、ユーザーは別の環境に切り替えることなく (通常は root ユーザーとしてコマンドを実行する)、特別な権限でプログラムまたはコマンドを実行できます。

ほとんどの Linux ディストリビューションでは、デフォルトで (スクリーンショットに示すように)、/etc/sudoers の RunAs 仕様ファイル内の ALL キーワードにより、admin グループまたは sudo グループ内のすべてのユーザーが、システム上の有効なユーザーとして任意のコマンドを実行できるようになります。

ただし、権限の分離は Linux における最も基本的なセキュリティ パラダイムの 1 つであるため、管理者は sudoers ファイルを構成して、どのユーザーがどのコマンドを実行できるかを定義できます。

そのため、Baseline はユーザーが特定のコマンドまたは任意のコマンドを root として実行することを制限しており、この脆弱性により、ユーザーがこのセキュリティ ポリシーを回避してシステムを完全に制御できるようになる可能性があります。

「Runas 仕様が明示的にルートアクセスを禁止し、ALL キーワードを最初にリストしている限り、十分な sudo 権限を持つユーザーはそれを使用してルートとしてコマンドを実行できます」と Sudo 開発者は述べています。

この脆弱性は、Apple の情報セキュリティ部門の Joe Vennix 氏によって追跡され発見されたと報告されています (CVE-2019-14287)。このバグを悪用するには、Sudo ユーザー ID -1 または 4294967295 だけが必要です。

これは、ユーザー ID をユーザー名に変換する関数が、-1 (または無効な同等の 4294967295) を 0 と間違え、0 がルート ユーザー ID になるからです。

さらに、-u オプションで指定されたユーザー ID がパスワード データベースに存在しないため、PAM セッション モジュールは実行されません。

要約すると、この脆弱性は最新バージョン 1.8.28 より前のすべての Sudo バージョンに影響します。幸いなことに、主要な Linux ディストリビューションでは、すでに数時間前に新しいバージョンがユーザーに配布されています。

さて、この記事はこれで終わりです。123WORDPRESS.COM を応援していただきありがとうございました!

以下もご興味があるかもしれません:
  • Linux でパスワードを入力せずに sudo コマンドを実行する方法
  • Linux で Sudo を使用して権限を委譲する
  • sudo、su、su の違いのまとめ - Linux のコマンド
  • Linux システムの sudo コマンドに関する 10 のヒントのまとめ
  • Linux で sudo su を使用して一般ユーザーにルート権限を追加する方法
  • Linux における sudo の詳細な設定とその設定ファイル /etc/sudoers の詳細な説明
  • Linuxシステムのsudoコマンドの詳細な説明
  • Linux環境でユーザーにsudo権限を追加する方法

<<:  MySQL でのフィルター条件なしのカウントの詳細な説明

>>:  ReactのuseEffectクロージャの落とし穴についての簡単な説明

推薦する

HTML テーブルタグと関連する改行の問題の詳細な分析

テーブルとは何ですか?テーブルは、データのキャリアである HTML テーブルです。以下は比較的標準的...

Django2.* + Mysql5.7 開発環境統合チュートリアル図

環境: 10.12 の新機能Python 3.6 MySQL 5.7.25 の場合ジャンゴ 2.2....

M1 ProチップでVueプロジェクトを開始する方法

目次導入Homebrewをインストールするnvmをインストールするノードをインストールするインストー...

CentOS 7 で MySQL 8 の複数のインスタンスを設定する詳細なチュートリアル (必要な数だけ設定できます)

原因最近、プロジェクトのリファクタリングを始めたのですが、マスタースレーブと読み取り書き込み分離を使...

WeChatアプレットが9マスグリッド効果を実現

この記事では、WeChatアプレットの9マスグリッド効果を実現するための具体的なコードを参考までに紹...

HTML テーブル タグ チュートリアル (34): 行スパン属性 ROWSPAN

複雑なテーブル構造では、一部のセルが水平方向に複数のセルにまたがるため、行間属性 ROWSPAN を...

Linux でアップロードされたファイルのスケジュールされたバックアップと増分バックアップを実装する方法

導入Alibaba Cloud のような OSS ストレージ サービスを使用している場合は、サービス...

あまり多くのコードを書かずに、ハイパーリンクを使ってシンプルで美しいカスタムチェックボックスを実装できます。

今日ふと、HTML でチェックボックスのスタイルを変更できる範囲が限られていることと、チェックボック...

ソケット '/tmp/mysql.sock' 経由でローカル MySQL に接続できない解決策

エラーメッセージ:エラー 2002: ソケット '/tmp/mysql.sock' ...

MySQLデータのセキュリティを確保するための提案

データは企業の中核資産であり、企業にとって最も重要なタスクの 1 つです。注意しないと、データが意図...

フロントエンドJavaScript ES6の詳細について

目次1. はじめに1.1 Babel トランスコーダ1.2 ポリフィル2. let と const ...

MySQL データ型の最適化の原則

MySQL は多くのデータ型をサポートしており、高パフォーマンスを得るには適切なデータ型を選択するこ...

Nexusプライベートサーバー構築原理とチュートリアル分析

1つ。 Nexus プライベート サーバーを構築する理由は何ですか?社内の開発メンバーは全員外部ネッ...

LinuxでのDNSサーバーの設定の詳細な説明

1. DNSサーバーの概念インターネットでの通信には IP アドレスの助けが必要ですが、数字に対する...

Linux で PHP を 5.6 にアップグレードする実用的な方法

1: ターミナルに入ったらPHPのバージョンを確認する php -v出力は次のようになります。 PH...