DigiCertが、現実の問題を解決するために、デジタルトラストの確立、管理、拡大をどのように支援しているかをご覧ください。
世界のIT・情報セキュリティリーダーたちが、デジタル技術の信頼性を欠いたセキュリティはセキュリティではないと考えている理由とは?
2023年8月15日よりCertCentralのサインインではユーザ名とパスワードのほかにワンタイムパスワード(OTP)もしくはクライアント証明書の二要素認証による提示が必要となりました。 設定等についてはこちらのKnowledgeを参照ください。
概要
Webアプリケーションの中には、機能の実現のために外部コマンドを呼び出すものがあります。また、多くのアプリケーションでは、メール送信の機能をsendmailコマンドの呼び出しで実現し、外部からのファイルダウンロードをwgetやcurl等のコマンド呼び出しにより実現する場合もあります。
外部コマンドにパラメータを渡して呼び出している場合、パラメータを巧妙に細工することにより、開発者が意図しない別のプログラムを呼び出せる場合があります。これにより悪意のあるコマンド呼び出しを行う攻撃がOSインジェクション攻撃です。また、OSコマンドインジェクション攻撃を許す状況をOSコマンドインジェクション脆弱性と言います。OSコマンドインジェクションはソフトウェアの脆弱性として継続して報告されており、サイト改ざんなどの攻撃に悪用されています。
攻撃のイメージと影響
Webアプリケーションで利用者登録の際にメールアドレスを登録してもらい、そのメールアドレスに対して通知メールを送信している場合を想定します。以下のPerlスクリプトで$mailは、利用者が入力したメールアドレスです。
system(“/usr/sbin/sendmail $mail < /var/data/message.txt”);
ここで、$mail = “test@example.jp; cat /etc/passwd” と外部から指定された場合、生成されるコマンドは以下の通りです。/usr/sbin/sendmail test@example.jp; cat /etc/passwd < /var/data/message.txt
コマンド中のセミコロン「;」は、2つ以上のコマンドを続けて実行する際の区切り文字なので、上記コマンド呼び出しにより/etc/passwdの内容を表示する結果となります。この他、様々なコマンド呼び出しが可能です。脆弱性による影響
この脆弱性による影響の例として下記がありますが、これらに限りません。OSコマンドインジェクション攻撃を受けると、サーバが乗っ取られた状態になり、最悪の場合はサーバ内部からの脆弱性攻撃により、root権限を奪取される可能性があります。脆弱性の有無の確認方法
OSコマンドインジェクション脆弱性の有無の確認は、ソースコードを確認する方法が確実です。system、exec等外部コマンドを呼びだすことのできる関数名やメソッド名を検索して、該当箇所を目視で確認します。
あるいは、ネットワーク経由の手動診断で脆弱性の有無を検証することもできます。この場合、独立行政法人情報処理推進機構(IPA)が公開している「安全なウェブサイトの作り方」別冊の「ウェブ健康診断仕様」に診断の方法が説明されており、参考になります。対策
OSコマンドインジェクション脆弱性はアプリケーションのバグなので、アプリケーション改修による対策が基本です。外部コマンドを使わないで同じ機能を実現できる場合は、外部コマンドを呼ばない実装の方が安全で効率も良くなる場合が多いです。どうしても外部コマンドを使用する必要がある場合は、シェルを経由しないコマンド呼び出しの方法を採用します。詳しくは「安全なウェブサイトの作り方」等の参考資料を御覧ください。
なお、デジサートの「クラウド型WAF」では、OSコマンドインジェクション脆弱性からウェブサイトが攻撃を受けるのを防ぐことができます。参考文献
安全なウェブサイトの作り方 https://www.ipa.go.jp/security/vuln/websecurity.html修正の上再掲しました。
© 2024 DigiCert, Inc. All rights reserved.
リーガルリポジトリ Webtrust 監査 利用条件 プライバシーポリシー アクセシビリティ Cookie 設定 プライバシーリクエストフォーム