OpenVPN&セキュリティ情報
2014-10-08
「Shellshock」のOpenVPNへの影響について - 補足
前回の記事「bashの脆弱性「Shellshock」のOpenVPNへの影響について」でも取り上げたthreatpostの「OpenVPN Vulnerable to Shellshock Bash Vulnerability」において、OpenVPNの開発者の一人である Gert Doering の説明が引用されていました。その内容がちょっと分かりにくくて気になっていたのですが、OpenVPN Users MLのユーザーから関連した問い合わせがあり、本人が補足していました。重要な点なので、取り上げてみたいと思います。threatpostの「OpenVPN Vulnerable to Shellshock Bash Vulnerability」の Gert による説明部分(一部)は次のようになっています。
Gert Doering, speaking on behalf of the OpenVPN open source community version, said that OpenVPN is vulnerable only on systems where /bin/sh points to /bin/bash, or if a script that runs using bash as an interpreter is called explicity.ざっくり訳すとこんな感じでしょうか。
“What you want to do from OpenVPN’s point of view is to ensure that you’re not using a 2.2.x version anymore, *and* that you just do not run your scripts using bash (“#!/bin/bash”) but use a shell that is better suited to script usage, like ash/dash,” Doering said.
OpenVPN オープンソースコミュニティ版の開発者である Gert Doering は、OpenVPNがこの脆弱性の影響を受けるのはシステムが /bin/sh が /bin/bash を指しているか、スクリプトがインタープリタとして明示的に bash を使った場合に限られると述べた。ここでいきなりOpenVPNのバージョン(2.2.x)の話が出てきてしまい、かつ詳細が述べられていなかったため、一部のユーザーが混乱したようです(私も唐突な印象がありました)。
また、Gert は「OpenVPNの観点からすれば、2.2.x バージョンを使用していないこと、さらにはスクリプトを bash("#!/bin/bash")ではなく、ash/dash のようなシェルを使用するように」と述べた。
これについて、Gert Doering 本人が以下のように補足しています。
2.2.x はスクリプトの実行に system() を使用しており、/bin/sh が bash へのエイリアスとなっている場合には shellshock の影響を受けることになります(これは、system() が内部的に "/bin/sh -c $yourcommand" を呼び出しているためです)。というわけで、OpenVPN 2.2.x から 2.3.x では外部スクリプトの呼び出し方法が変更されており、セキュリティの向上が図られていることが分かります。
それで、コマンド自体が安全だとしても、以下の条件が揃った場合には shellshock の脆弱性があります。バージョン 2.2.x を使用しており、かつ設定ファイル内で "script-security system" を使用しており、さらに /bin/sh が bash を指している場合です。このように条件が多いため、私自身がより明確に説明すべきだと考えました。
バージョン 2.3.0 では David(訳注:David Sommerseth)によって system() のサポートが削除され、fork()/exec()/wait() を明示的に使用するように変更されました。
-----------------------------------------------------------------
commit 3cb9f1a62b4a84dbf4acd1957c900a5b06fd6ac2
Author: David Sommerseth <davids@.....>
Date: Thu Oct 25 14:22:30 2012 +0200
外部プログラム/スクリプト実行時の system() 使用のサポートの削除
このパッチでは system() 呼び出しのサポートが削除され、*nix プラットフォームでは execve() 、Windows では CreateProcessW() の使用が強制されました。
これは外部スクリプト呼び出し時のセキュリティを向上させるためのものです。system() はセキュリティ上の欠陥につながる傾向があります。
これはコミット a82813527551f0e79c6d6ed5a9c1162e3c171bcf 以降で execve()アプローチがデフォルトになっていた理由ですが、2008年11月に system() が再度導入されました。
-----------------------------------------------------------------
混乱を生じさせてしまって申し訳なかったと思います。この質問はかなり急な問い合わせだったのですが、もう少し時間をかけて回答を精査すべきだったかもしれません(不明な点があれば追加の問い合わせがあると思ったのですが、そのまま記事内で使用されてしまいました)。
なお、このメールではMac OS用OpenVPNクライアントである Tunnelbrick への影響についても触れられています。メールの原文はこちらを参照してください。
Image courtesy of Stuart Miles / FreeDigitalPhotos.net
Related Posts
登録:
コメントの投稿
(
Atom
)
Profile
- 山崎 太郎 (Taro Yamazaki)
- プラムシステムズ株式会社所属。 主にVPN(OpenVPN)やセキュリティ関連技術、Webアプリケーションを手がけています。
Page Views
807,748
Popular Posts
-
「VPNっていろいろあるけど、OpenVPNのメリットって何?」 という疑問は多くの方が持たれますよね。この点は公式サイトなどにもいろいろ書かれているのですが、実際に使ってきたユーザー側としてメリットと思う部分をまとめてみました。
-
現在ダウンロードできるOpenVPNでは、今まで認証局の構築で使用していたeasy-rsaが含まれなくなっています。 OpenVPN.netのダウンロードページ にも Note that easy-rsa is no longer bundled with OpenVPN...
-
Jan Just Keijser氏の記事「 Optimizing performance on gigabit networks 」については こちら でも概要を取り上げましたが、記事全体にいろいろなヒントが含まれていますので、全文の日本語訳を掲載しています。意訳している部分も...
-
OpenVPNでは、接続してきたクライアントのVPNアドレスは動的に割り振られます(その際に割り振られる際のアドレス範囲はOpenVPNサーバー側設定ファイルに基づきます)。特定のVPNクライアントに特定のVPNアドレスを割り振りたい場合、OpenVPNでは以下の2つの方法で設定...
-
では、いよいよiPhone構成ユーティリティでVoDの設定をしてみましょう。あ、 前の記事 での準備はきちんとやっておいてくださいね!
-
現時点においてはマニュアルやHowToにも記載されていない(ChangeLogにちょっとだけ出てきます)あまり知られていない機能なのですが、「設定ファイルで鍵ファイルや証明書ファイルのパスを記載する」という通常の方法とは別に、「鍵ファイルや証明書ファイル内のデータをそのまま設定フ...
-
前回 は2つのワンタイムパスワードの生成方法について取り上げました。今回はいよいよ実際の生成アルゴリズムを取り上げましょう。TOTPをベースに説明します(ただ、前回も解説したように、基本的なロジックはTOTPとHOTPで同じです)。 参考としてpythonのコードも併記してみま...
-
OpenVPNはLinuxをはじめとした幅広いプラットフォームで動作実績があるのが特徴の一つです。 今回は、最近の電子工作ブームでも話題のシングルボードPC 3機種をOpenVPNサーバーとしてセットアップし、OpenVPNのVPNパフォーマンスを測定してみましょう。 ...
-
前回 はワンタイムパスワードの基本的な仕組みについて説明しました。サーバー側とクライアント側で、それぞれ共通のルールに基づいてパスワードを生成させる必要があることを取り上げましたが、今回は OATH が規定しているその生成ルールについて具体的に説明します。 ワンタ...
-
OpenVPNを使用している方ならよくご存知だと思いますが、通常OpenVPNでは証明書認証を使用します。証明書認証はID/パスワード認証に比較すると安全性が高いとされます(もちろん、秘密鍵の管理方法に大きく依存します)が、証明書認証の概念を理解しにくいユーザーが秘密鍵や証明...
© yamata::memo 2013 . Powered by Bootstrap , WebLyb
0 件のコメント :
コメントを投稿