2019年1月、外国のセキュリティ担当者は、UbuntuLinuxのデフォルトインストールに特権エスカレーションの脆弱性を発見しました。これは、デフォルトのサービスであるsnapdAPIのバグが原因です。すべてのローカルユーザーがこの脆弱性を使用して、システムへの直接ルートアクセス(CVE番号CVE-2019-7304)を取得できます。
Linuxシステムでのアプリケーションのパッケージ化を簡素化するために、さまざまな新しい競合する標準が登場しています。 Ubuntu LinuxのメーカーであるCanonicalは、「Snap」パッケージを宣伝しています。これは、Windowsアプリケーションと同様に、すべてのアプリケーションの依存関係を単一のバイナリファイルに変換する方法です。
Snapエコシステムには、開発者がすぐに使用できるソフトウェアパッケージを提供および保守できる「アプリストア」が含まれています。
ローカルにインストールされたSnapの管理の一部と、このオンラインストアとの通信は、「snapd」と呼ばれるシステムサービスによって処理されます。このサービスはUbuntuに自動的にインストールされ、「root」ユーザーのコンテキストで実行されます。 Snapdは、特にクラウドとInternet ofThings向けの「SnappyUbuntuCore」の合理化されたローテーションにおいて、Ubuntuオペレーティングシステムの重要な部分になるように開発されています。
0 X1の脆弱性の説明
Snapdは、ローカルUNIX_AFソケットに接続されたRESTAPIを提供します。制限されたAPI関数へのアクセス制御は、ソケットの接続に関連付けられたUIDを照会することによって実現されます。 forループでの文字列の解析中に、ユーザー制御のソケットピアデータに影響を与えてUID変数を上書きする場合があります。これにより、すべてのユーザーが任意のAPI関数にアクセスできます。
APIにアクセスしてrootを取得する方法はたくさんあります。 2つの可能性を以下に示します。
「create-user」APIを使用して、UbuntuSSOから照会された詳細情報に基づいてローカルユーザーを作成します。
Sideloads Snapには、新しいローカルユーザーを生成するためのインストールフックが含まれています。
この影響バージョン:
Ubuntu 18.10
Ubuntu 18.04 LTS
Ubuntu 16.04 LTS
Ubuntu 14.04 LTS
0 X2環境のセットアップ
実験環境Ubuntu16.04
次に、POCコードをダウンロードします。
https://github.com/initstring/dirty_sock
Ubuntuにログインします:https://login.ubuntu.com
次に、秘密鍵をローカルで生成します。
ssh-keygen -t rsa -C "
次に、。/。sshに移動し、id_rsa.pub(公開キー)をアカウントのssh_keyにコピーします。
0 X2エクスプロイト
ダウンロードしたpocコードファイルの最初のスクリプトからテストを開始します。
スクリプト1を直接使用して、特権エスカレーション攻撃を実行します。
表示は成功しましたが、sshが起動していないため、接続に失敗し、再び表示に失敗します。
スクリプト2を使用して成功します。
アカウントdirty_sockを正常に追加し、その情報を確認して、sudo権限があることを確認します。
正しいエスカレーションに成功しました!
最初の特権エスカレーションに戻ると、snapのバージョンが更新されていることがわかりました。
公式の修正はスナップを2.37.1以上にアップグレードすることであるため、スクリプト1は使用できません!ただし、スクリプト2を使用してユーザーをすでに追加しているため、バックドアユーザーが存在します。したがって、Ubuntuシステムのユーザーは、できるだけ早く更新およびアップグレードする必要があります。
参考記事:
https://github.com/SecuritySi/CVE-2019-7304_DirtySock
http://www.4hou.com/vulnerable/16181.html
https://github.com/initstring/dirty_sock