Shellshock Bashの脆弱性からサーバーを保護する方法

前書き

2014年9月24日に、Shellshockまたは「Bash Bug」と呼ばれるGNU Bashの脆弱性が開示されました。 つまり、この脆弱性により、環境変数の割り当てに続いてコードの文字列を渡すことにより、リモートの攻撃者が特定の条件で任意のコードを実行できるようになります。 Linux、BSD、およびMac OS Xディストリビューションの間でBashが広く普及しているため、多くのコンピューターはShellshockに対して脆弱です。 1.14から4.3までのパッチが適用されていないすべてのBashバージョン(つまり、 現在までのすべてのリリース)が危険にさらされています。

Shellshockの脆弱性は、許可されていないリモートユーザーがBash環境変数を割り当てることを許可するサービスまたはアプリケーションを実行しているシステムで悪用される可能性があります。 悪用可能なシステムの例には次のものがあります。

  • Bashで記述された、またはBashサブシェルを起動するCGIスクリプト( `+ mod_cgi `および ` mod_cgid +`を使用)を使用するApache HTTPサーバー

  • 特定のDHCPクライアント

  • `+ ForceCommand +`機能を使用するOpenSSHサーバー

  • Bashを使用するさまざまなネットワーク公開サービス

バグの詳細な説明は、http://web.nvd.nist.gov/view/vuln/detail?vulnId = CVE-2014-6271 [CVE-2014-6271]、http://web.nvdで見つけることができます.nist.gov / view / vuln / detail?vulnId = CVE-2014-7169 [CVE-2014-7169]、https://access.redhat.com/security/cve/CVE-2014-7186 [CVE-2014- 7186]、およびhttps://access.redhat.com/security/cve/CVE-2014-7187[CVE-2014-7187]。

Shellshockの脆弱性は非常に広く、OpenSSL Heartbleedのバグよりもさらに悪用されやすいため、影響を受けるシステムを適切に更新して、できるだけ早く脆弱性を修正または緩和することを強くお勧めします。 マシンに脆弱性があるかどうかをテストする方法と、脆弱性を除去するためにBashを更新する方法を示します。

システムの脆弱性を確認する

Bashを実行する各システムで、bashプロンプトで次のコマンドを実行して、Shellshockの脆弱性を確認できます。

env 'VAR=() { :;}; ' 'FUNCTION()=() { :;}; ' bash -c "echo Bash Test"

ハイライトされた「+ echo Bashは脆弱です!+」コマンドの部分は、リモートの攻撃者が悪意のあるコードを挿入できる場所を表します。環境変数の割り当て内の関数定義に続く任意のコード。 したがって、次の出力が表示される場合、Bashのバージョンは脆弱性があり、更新する必要があります*:

Bash Test

出力にシミュレートされた攻撃者のペイロードが含まれていない場合、つまり 「Bashは脆弱です」は出力として出力されません。少なくとも最初の脆弱性(http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-6271[CVE-2014 -6271])。ただし、後で発見された他のCVEに対して脆弱である可能性があります。 出力に「+ bash +」の警告またはエラーがある場合は、Bashを最新バージョンに更新する必要があります。このプロセスについては、次のセクションで説明します。

testコマンドから出力されるものが以下だけである場合、BashはShellshockから安全です。

Bash Test

リモートサイトをテストする

Webサイトまたは特定のCGIスクリプトが脆弱かどうかを単にテストする場合は、http://shellshock.brandonpotter.com/ [‘ShellShock’ Bash Vulnerability CVE-2014-6271 Test Tool]のリンクを使用してください。

適切なフォームにテストするWebサイトまたはCGIスクリプトのURLを入力して送信します。

脆弱性の修正:Bashの更新

この脆弱性を修正する最も簡単な方法は、デフォルトのパッケージマネージャーを使用してBashのバージョンを更新することです。 以下のサブセクションでは、Ubuntu、Debian、CentOS、Red Hat、Fedoraなど、さまざまなLinuxディストリビューションでのBashの更新について説明します。

APT-GET:Ubuntu / Debian

現在サポートされているhttps://wiki.ubuntu.com/Releases[Ubuntu]またはhttps://www.debian.org/releases/[Debian]のバージョンについては、Bashを `+ apt-get +`で利用可能な最新バージョンに更新してください:

sudo apt-get update && sudo apt-get install --only-upgrade bash

前のセクション(https://www.digitalocean.com/community/tutorials/how-to-protect-your-server-against-the-shellshock-bash-vulnerability#checkのコマンドを実行して、システムの脆弱性を再度確認します-system-vulnerability [システムの脆弱性をチェック])。

生産終了Ubuntu / Debianリリース

_end of life_ステータスと見なされるUbuntu / Debianのリリースを実行している場合、パッケージマネージャーを使用してBashを更新するには、サポート対象にアップグレードする必要があります。 次のコマンドを使用して、新しいリリースにアップグレードできます(問題が発生した場合に備えて、サーバーと重要なデータを最初にバックアップすることをお勧めします)。

sudo do-release-upgrade

アップグレードが完了したら、必ずBashを更新してください。

YUM:CentOS / Red Hat / Fedora

Bashを `+ yum +`経由で利用可能な最新バージョンに更新します。

sudo yum update bash

前のセクション(https://www.digitalocean.com/community/tutorials/how-to-protect-your-server-against-the-shellshock-bash-vulnerability#checkのコマンドを実行して、システムの脆弱性を再度確認します-system-vulnerability [システムの脆弱性をチェック])。

サポート終了CentOS / Red Hat / Fedoraリリース

_end of life_ステータスと見なされるCentOS / Red Hat / Fedoraのリリースを実行している場合は、パッケージマネージャーを使用してBashを更新するためにサポート対象にアップグレードする必要があります。 次のコマンドを使用して、新しいリリースにアップグレードできます(問題が発生した場合に備えて、サーバーと重要なデータを最初にバックアップすることをお勧めします)。

sudo yum update

アップグレードが完了したら、必ずBashを更新してください。

結論

影響を受けるすべてのサーバーを必ず最新バージョンのBashに更新してください! また、サーバーを最新のセキュリティアップデートで最新の状態に保つようにしてください!