Stack Clashとは何ですか?それについて何ができますか?


27

Stack Clashという名前の新しい脆弱性について聞いたことがありますが、これは複数のUnixライクなシステム(Linuxだけでなく、BSD、Solarisも同様)に影響しているようです。

  • それは何ですか?マルチOSバグはどのようにして発生しましたか?
  • システムを保護するにはどうすればよいですか?

回答:


29

Stack Clashは、かなり古い手法に基づいたエクスプロイトです。プロセスで使用されるメモリは、スタックとヒープの 2つの領域に分割されます。一般的に、スタックは下向きに成長し、ヒープは上向きに成長すると想像します。どちらかがもう一方と衝突するほど大きくなったらどうなりますか?より一般的には、関連のないメモリ空間に侵入するほどスタックが大きくなるとどうなりますか?元の脆弱性は12年前のもので、Linuxカーネル開発者はガードページを使用して一時的に修正しました。しかし、Qualysの研究者は、ガードページにもかかわらずこれを悪用することに成功しました。

Ars Technicaのレポート

Stack Clashの脆弱性は、2005年にセキュリティ研究者GaëlDelalleauの発見で最初に発見され、5年後に研究者Rafal WojtczukによるLinuxの脆弱性のリリースで広く知られるようになりました。Linux開発者 は、スタックの衝突を防ぐことを目的とした保護導入しましたが、今日の調査では、攻撃者がその手段を迂回することは比較的容易であることを実証しています。

Qualysが開発した主要な概念実証攻撃は、CVE-2017-1000364としてインデックス付けされた脆弱性を悪用します。Qualysの研究者は、CVE-2017-1000365やCVE-2017-1000367などの個別の脆弱性を悪用するためにStack Clashを使用する攻撃も開発しました。たとえば、最近修正されたSudoの欠陥であるCVE-2017-1000367と組み合わせてQualysが発見した場合、ローカルユーザーはSudoを利用して、より広範なOSで完全なルート権限を取得できます。Qualysはこれまで、エクスプロイトにリモートでコードを実行させることはできませんでした。彼らが調査した唯一のリモートアプリケーションはEximメールサーバーであり、偶然にも悪用できないことが判明しました。Qualysは、このようなリモートコード実行エクスプロイトが存在する可能性を排除できないと述べました。Qualysは、概念実証のエクスプロイトを後日リリースする予定であり、

[...] Qualysのこの詳細なテクニカルアドバイザリgrsecurityのこのテクニカル分析で、さらに多くの情報を利用できます。

2010年の元の修正に関するLWNの記事を引用:

Linuxはプロセススタックページとヒープページを分離しないため、スタックページを隣接するヒープページにオーバーランする可能性があります。つまり、十分な深さのスタック(たとえば、再帰呼び出しから)がヒープ内のメモリを使用することになります。そのヒープページに書き込むことができるプログラム(Xクライアントなど)は、呼び出しの1つの戻りアドレスを操作して、選択した場所にジャンプできます。つまり、クライアントはサーバーに任意のコード(任意のコード実行)を実行させることができ、これを利用してルート権限を取得できます。

上記の説明は、さまざまなUnixライクなカーネルに適用されます。

Ars Technicaは、Qualysレポートに記載されている一時的な回避策(「ローカルユーザー  と  リモートサービスの  ハードRLIMIT STACKとRLIMIT_AS  を   低い値に設定する」)に注意していますが、これは必ずしもこのエクスプロイトを保護するものではないことに注意してください。現在のところ唯一の安全な方法はアップグレードすることです。grsecurity分析によると:

本当の問題はスタック調査の欠如にあるため、この問題を解決するカーネルのみの試みは常に不完全であることは明らかです。代替の実際のソリューションは、すべてのユーザーランドの再構築に依存するため、これはおそらく予見可能な将来の唯一の実行可能なソリューションです。

今できる最善の方法は、カーネルをパッチを適用したバージョンにアップグレードすることです。

2010のエクスプロイトはXサーバーを使用し、これはsudoを使用しました。次のエクスプロイトは、ある時点で、昇格された特権で実行される多数のユーザーランドプログラムのいずれかです。

Qualysは、エクスプロイトの概念実証コードをまだ公開していません(後日公開する予定です)。


CVE-2017-1000364に関連付けられた複数のUbuntuセキュリティ通知があります。

また、CVEトラッカーには、リリース/カーネルのいくつかの組み合わせが保留中の修正としてリストされていることに注意しください

一般的に、最も簡単な修正は、システムをできるだけ早く最新のカーネルパッケージに更新することです。

USNの関連カーネルバージョン(を使用して選別for i in {24..35}; curl -s https://www.ubuntu.com/usn/usn-33$i-1/ | pup 'dl:nth-last-of-type(1)'):

Ubuntu 17.04:
linux-image-4.10.0-24-lowlatency 4.10.0-24.28
linux-image-generic-lpae 4.10.0.24.26
linux-image-generic 4.10.0.24.26
linux-image-4.10.0-24-generic-lpae 4.10.0-24.28
linux-image-4.10.0-24-generic 4.10.0-24.28
linux-image-lowlatency 4.10.0.24.26
Ubuntu 17.04:
linux-image-4.10.0-1008-raspi2 4.10.0-1008.11
linux-image-raspi2 4.10.0.1008.10
Ubuntu 16.10:
linux-image-powerpc-smp 4.8.0.56.69
linux-image-powerpc-e500mc 4.8.0.56.69
linux-image-4.8.0-56-powerpc-smp 4.8.0-56.61
linux-image-4.8.0-56-powerpc-e500mc 4.8.0-56.61
linux-image-4.8.0-56-lowlatency 4.8.0-56.61
linux-image-generic 4.8.0.56.69
linux-image-4.8.0-56-generic 4.8.0-56.61
linux-image-powerpc64-emb 4.8.0.56.69
linux-image-virtual 4.8.0.56.69
linux-image-powerpc64-smp 4.8.0.56.69
linux-image-4.8.0-56-generic-lpae 4.8.0-56.61
linux-image-generic-lpae 4.8.0.56.69
linux-image-lowlatency 4.8.0.56.69
linux-image-4.8.0-56-powerpc64-emb 4.8.0-56.61
Ubuntu 16.10:
linux-image-4.8.0-1040-raspi2 4.8.0-1040.44
linux-image-raspi2 4.8.0.1040.44
Ubuntu 16.04 LTS:
linux-image-powerpc64-smp-lts-utopic 4.4.0.81.87
linux-image-generic-lts- wily 4.4.0.81.87
linux-image-generic-lts-utopic 4.4.0.81.87
linux-image-4.4.0-81-generic-lpae 4.4.0-81.104
linux-image-powerpc64-emb-lts-vivid 4.4.0.81.87
linux-image-powerpc-e500mc 4.4.0.81.87
linux-image-generic-lpae-lts-xenial 4.4.0.81.87
linux-image-generic-lpae-lts-utopic 4.4.0.81.87
linux-image-powerpc-e500mc-lts-xenial 4.4.0.81.87
linux-image-4.4.0-81-powerpc64-emb 4.4.0-81.104
linux-image-powerpc-e500mc-lts- wily 4.4.0.81.87
linux-image-4.4.0-81-powerpc-e500mc 4.4.0-81.104
linux-image-generic-lpae-lts- wily 4.4.0.81.87
linux-image-virtual-lts-vivid 4.4.0.81.87
linux-image-virtual-lts-utopic 4.4.0.81.87
linux-image-virtual 4.4.0.81.87
linux-image-powerpc64-emb-lts- wily 4.4.0.81.87
linux-image-lowlatency-lts-vivid 4.4.0.81.87
linux-image-powerpc-e500mc-lts-vivid 4.4.0.81.87
linux-image-powerpc64-emb 4.4.0.81.87
linux-image-powerpc-smp-lts-xenial 4.4.0.81.87
linux-image-4.4.0-81-generic 4.4.0-81.104
linux-image-powerpc64-smp-lts-vivid 4.4.0.81.87
linux-image-lowlatency-lts- wily 4.4.0.81.87
linux-image-4.4.0-81-lowlatency 4.4.0-81.104
linux-image-generic 4.4.0.81.87
linux-image-lowlatency-lts-xenial 4.4.0.81.87
linux-image-powerpc64-smp-lts-xenial 4.4.0.81.87
linux-image-powerpc64-emb-lts-utopic 4.4.0.81.87
linux-image-generic-lts-xenial 4.4.0.81.87
linux-image-generic-lts-vivid 4.4.0.81.87
linux-image-powerpc-e500mc-lts-utopic 4.4.0.81.87
linux-image-powerpc-smp 4.4.0.81.87
linux-image-4.4.0-81-powerpc-smp 4.4.0-81.104
linux-image-generic-lpae-lts-vivid 4.4.0.81.87
linux-image-generic-lpae 4.4.0.81.87
linux-image-powerpc64-smp-lts- wily 4.4.0.81.87
linux-image-powerpc64-emb-lts-xenial 4.4.0.81.87
linux-image-powerpc-smp-lts- wily 4.4.0.81.87
linux-image-virtual-lts- wily 4.4.0.81.87
linux-image-powerpc64-smp 4.4.0.81.87
linux-image-4.4.0-81-powerpc64-smp 4.4.0-81.104
linux-image-powerpc-smp-lts-utopic 4.4.0.81.87
linux-image-powerpc-smp-lts-vivid 4.4.0.81.87
linux-image-lowlatency 4.4.0.81.87
linux-image-virtual-lts-xenial 4.4.0.81.87
linux-image-lowlatency-lts-utopic 4.4.0.81.87
Ubuntu 16.04 LTS:
linux-image-4.4.0-1016-gke 4.4.0-1016.16
Ubuntu 16.04 LTS:
linux-image- snapdragon 4.4.0.1061.54
linux-image-4.4.0-1061- snapdragon 4.4.0-1061.66
Ubuntu 16.04 LTS:
linux-image-4.4.0-1020-aws 4.4.0-1020.29
Ubuntu 16.04 LTS:
linux-image-raspi2 4.4.0.1059.60
linux-image-4.4.0-1059-raspi2 4.4.0-1059.67
Ubuntu 16.04 LTS:
linux-image-4.8.0-56-powerpc-smp 4.8.0-56.61〜16.04.1
linux-image-4.8.0-56-powerpc-e500mc 4.8.0-56.61〜16.04.1
linux-image-4.8.0-56-lowlatency 4.8.0-56.61〜16.04.1
linux-image-4.8.0-56-generic 4.8.0-56.61〜16.04.1
linux-image-generic-hwe-16.04 4.8.0.56.27
linux-image-lowlatency-hwe-16.04 4.8.0.56.27
linux-image-4.8.0-56-generic-lpae 4.8.0-56.61〜16.04.1
linux-image-virtual-hwe-16.04 4.8.0.56.27
linux-image-generic-lpae-hwe-16.04 4.8.0.56.27
linux-image-4.8.0-56-powerpc64-emb 4.8.0-56.61〜16.04.1
Ubuntu 14.04 LTS:
linux-image-powerpc-smp-lts-xenial 4.4.0.81.66
linux-image-lowlatency-lts-xenial 4.4.0.81.66
linux-image-4.4.0-81-powerpc-smp 4.4.0-81.104〜14.04.1
linux-image-4.4.0-81-powerpc-e500mc 4.4.0-81.104〜14.04.1
linux-image-4.4.0-81-lowlatency 4.4.0-81.104〜14.04.1
linux-image-4.4.0-81-generic-lpae 4.4.0-81.104〜14.04.1
linux-image-generic-lpae-lts-xenial 4.4.0.81.66
linux-image-powerpc64-smp-lts-xenial 4.4.0.81.66
linux-image-4.4.0-81-generic 4.4.0-81.104〜14.04.1
linux-image-4.4.0-81-powerpc64-smp 4.4.0-81.104〜14.04.1
linux-image-generic-lts-xenial 4.4.0.81.66
linux-image-powerpc64-emb-lts-xenial 4.4.0.81.66
linux-image-powerpc-e500mc-lts-xenial 4.4.0.81.66
linux-image-virtual-lts-xenial 4.4.0.81.66
linux-image-4.4.0-81-powerpc64-emb 4.4.0-81.104〜14.04.1
Ubuntu 14.04 LTS:
linux-image-powerpc-e500mc 3.13.0.121.131
linux-image-lowlatency- pae 3.13.0.121.131
linux-image-3.13.0-121-powerpc64-emb 3.13.0-121.170
linux-image-generic- pae 3.13.0.121.131
linux-image-3.13.0-121-powerpc-smp 3.13.0-121.170
linux-image-3.13.0-121-powerpc-e500mc 3.13.0-121.170
linux-image-3.13.0-121-powerpc-e500 3.13.0-121.170
linux-image-3.13.0-121-generic-lpae 3.13.0-121.170
linux-image-generic-lts-quantal 3.13.0.121.131
linux-image-virtual 3.13.0.121.131
linux-image-powerpc-e500 3.13.0.121.131
linux-image-generic-lts-trusty 3.13.0.121.131
linux-image-3.13.0-121-generic 3.13.0-121.170
linux-image-omap 3.13.0.121.131
linux-image-powerpc64-emb 3.13.0.121.131
linux-image-3.13.0-121-powerpc64-smp 3.13.0-121.170
linux-image-generic 3.13.0.121.131
linux-image-highbank 3.13.0.121.131
linux-image-generic-lts- saucy 3.13.0.121.131
linux-image-powerpc-smp 3.13.0.121.131
linux-image-3.13.0-121-lowlatency 3.13.0-121.170
linux-image-generic-lpae-lts- saucy 3.13.0.121.131
linux-image-generic-lts- raring 3.13.0.121.131
linux-image-powerpc64-smp 3.13.0.121.131
linux-image-generic-lpae-lts-trusty 3.13.0.121.131
linux-image-generic-lpae 3.13.0.121.131
linux-image-lowlatency 3.13.0.121.131
Ubuntu 12.04 ESM:
linux-image-powerpc-smp 3.2.0.128.142
linux-image-3.2.0-128-virtual 3.2.0-128.173
linux-image-3.2.0-128-generic- pae 3.2.0-128.173
linux-image-generic 3.2.0.128.142
linux-image-generic- pae 3.2.0.128.142
linux-image-highbank 3.2.0.128.142
linux-image-3.2.0-128-highbank 3.2.0-128.173
linux-image-3.2.0-128-powerpc-smp 3.2.0-128.173
linux-image-virtual 3.2.0.128.142
linux-image-powerpc64-smp 3.2.0.128.142
linux-image-3.2.0-128-omap 3.2.0-128.173
linux-image-3.2.0-128-powerpc64-smp 3.2.0-128.173
linux-image-omap 3.2.0.128.142
linux-image-3.2.0-128-generic 3.2.0-128.173
Ubuntu 12.04 LTS:
linux-image-3.13.0-121-generic 3.13.0-121.170〜precise1
linux-image-generic-lpae-lts-trusty 3.13.0.121.112
linux-image-generic-lts-trusty 3.13.0.121.112
linux-image-3.13.0-121-generic-lpae 3.13.0-121.170〜precise1

須藤

前述のsudoバグは、2017年5月30日以降のUSN-3304-1でカバーされています。

Ubuntu 17.04:
sudo-ldap 1.8.19p1-1ubuntu1.1
sudo 1.8.19p1-1ubuntu1.1
Ubuntu 16.10:
sudo-ldap 1.8.16-0ubuntu3.2
sudo 1.8.16-0ubuntu3.2
Ubuntu 16.04 LTS:
sudo-ldap 1.8.16-0ubuntu1.4
sudo 1.8.16-0ubuntu1.4
Ubuntu 14.04 LTS:
sudo-ldap 1.8.9p5-1ubuntu1.4
sudo 1.8.9p5-1ubuntu1.4

要約すると、まだサポートされているほとんどのUbuntuバージョンですでに修正されているはずです。ただ更新する必要がありますか?
CJCombrink

@TheBadgerいいえ、CVEトラッカーで指摘されているように、一部の組み合わせはまだリリース保留中としてリストされています。修正がリリースされると、より多くのUSNが公開されると思います。
ムル

4
しかし、はい、更新は十分である必要があり、追加の構成は必要ありません。
ムル

影響がある場合、確認方法は?
デイジー

1
@immibisは次の記事によると、既存の実装は正しく動作しません:Qualys Research LabsによるStackguardのバグの説明
イゴールB

1

マルチOSバグはどのようにして発生しましたか?

質問のこの部分に具体的に対処するには:

この問題は、ヒープ(上向きに大きくなる)およびスタック(下向きに大きくなる)に共有アドレス空間を使用するために発生します。

この設計は多くのシステムで共通であるため、多くのシステムが同じクラスの脆弱性に対して脆弱である理由です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.