SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

伏石ちゃんは意図に反したい

「OSコマンドインジェクション」はどんな脆弱性?何が問題なの?【伏石ちゃんは意図に反したい】

FILE 0x09 OSコマンドインジェクション

解説:教えて那々子先生

先生
ふう、よくやったな
充希
でも、そんなに簡単に成功するなんて
先生
まあ、OSコマンドインジェクションは防ぐのがなかなか難しいからな

 アプリ内にOSのコマンドを呼び出して実行する処理が存在する場合、OSコマンドインジェクションの脆弱性のリスクが高まります。特に、コマンドを組み立てる際にユーザー入力値を使用している場合、ユーザーが細工した入力すると、想定しているコマンド以外の物を実行できてしまうことがあります。

 例えば、アプリ内の処理でpingコマンドを実行する場合を考えてみましょう。

ping [ユーザーが入力した送信先]

 というコマンドを組み立てて実行する処理があるとします。

 まず正常な動作を考えてみましょう。

 ユーザーが「192.0.2.1」と入力した場合、以下のコマンドが実行されることになります。

ping 192.0.2.1

 では、ユーザーが「192.0.2.1 | rm hogehoge」という入力をするとどうなるでしょうか?

ping 192.0.2.1 | rm hogehoge

 というコマンドが実行されます。

 パイプ記号(|)は、左側のコマンドの出力を右側のコマンドの入力に引き渡すものです。したがって、左のコマンドと右のコマンドの両方が実行されることとなります。

 したがって、「ping」コマンドだけでなく「rm」コマンドも実行されてしまい、「hogehoge」と言うファイルを削除する処理が実行されてしまうのです。

充希
パイプ記号を禁止すれば良いのでは?
先生
他にいくらでも方法はある
ping $(rm hogehoge)
充希
じゃあ、$記号も禁止で
先生
まだまだ
ping `rm hogehoge`
充希
まだそんなに!
先生
そういうことだ。もちろん、文字種や形式をガチガチに限定すればリスクは低くなるだろうが、もしチェックが完璧でも他の要因で起きるケースもある。例えば、昔には環境変数の値が原因となるShellShockという脆弱性もあったぐらいだ

 OSコマンドインジェクションは、そのアプリが実行されている権限でOSのコマンドを実行できてしまうことが問題です。特に問題になり得るのが、サーバープログラムにOSコマンドインジェクションの脆弱性が存在する場合です。

 サーバープログラムの権限で任意のコマンドを実行できる状態となると、攻撃によって本来アクセスできない情報にアクセスしたり、マルウェアを設置したりすることが可能となります。情報漏えいのリスクだけでなく、第三者への攻撃の踏み台とされて攻撃者に加担する結果となってしまうケースもあります。

 また、サーバープログラムだけでなく、ローカルアプリケーションでも問題は発生し得ます。例えば、キオスク端末のようにユーザーの操作を制限している端末に対して、イタズラをすることも可能となることでしょう。

充希
対策はどうすれば良いんですか?
先生
理想は、そもそも外部プログラムの呼び出しをしなくても良いプログラムの設計が望ましい。ただ、現実には難しい場合もある。その場合、シェルを使用してコマンドを実行しないことだ。外部プログラムを実行する場合、シェルを挟まずに直接プロセスを起動するのが良いだろうな
充希
分かりました!

 

充希
……ところで、さっきのホロプログラムは本当に終了したんでしょうか
先生
えっ
充希
OKコンピューター、プログラム終了
コンピューター
エラー そのコマンドは禁止されています
充希
!!
先生
!!

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
伏石ちゃんは意図に反したい連載記事一覧

もっと読む

この記事の著者

井二 かける(イブタ カケル)

 情報処理安全確保支援士、プログラマー、作家。「物語の力でIT・セキュリティをもっと面白く」をモットーに、作家活動、セキュリティ啓発活動を行う。主な作品はアニメ「こうしす!」、小説「こうしす!社内SE祝園アカネの情報セキュリティ事件簿」(翔泳社)、マンガ「伏石ちゃんは意図に反したい ~ハッキングから始まる高校生活~」(京姫鉄道出版)など。 Twitter:@k_ibuta@kyoki_railway

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山口 しずか(ヤマグチ シズカ)

 やりたいことはなんでもやる精神で急成長中の漫画家。2019年よりマンガアプリにて商業連載デビュー。連載の傍ら企業のPR漫画や漫画動画など媒体・ジャンルにとらわれず時代に合わせた漫画を制作中。趣味はお酒と旅行。 Twitter:@shizuckey

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/15992 2022/06/09 11:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー