- ベストアンサー
C言語のセキュリティホールについて
C言語でCGIを作成するにあたって、 セキュリティホールについて調べています。 PerlとC言語のセキュリティホールについて詳しく知りたいです。 また、セキュリティの面で、 C言語でプログラムを組むメリットってなんでしょうか・・・ お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
がるです。 んと… > C言語のセキュリティホールに関して書籍等があまりないので困っています。 > 確かに優位性があまりないのはわかるのですが、危険だ!!ということがよくわかりません。 > これと言って大したセキュリティホールはないのでは?と思ってしまいます・・・ C言語そのものが保有するセキュリティホール、というのは、記憶している限りではなかったかと思います(ちなみに、例えば有名なPHPなんてのは結構あったりします困ったことに)。 ただ、C言語は良くも悪くも「非常に自由な言語」なので、作り手の知識不足が「セキュリティホールを作り出す」可能性が、他の言語と比較しても割合に飛び出てたりします。 極単純に例えば。 最近のほとんどの言語は、「確保した領域を超えて情報を書き込んでしまう」、いわゆるバッファオーバフローに対して「言語的なブロック」があるのですが、C言語にはンなものはまったくないので。 この1点だけでも、嫌がる人はかなりいやがります。 > タグを埋め込まれる可能性があり、フォームを送り込まれて危険だということは調べました。 > でも、これもサーバに影響を及ぼすものではないと思うのです。 これに関しては「サーバに影響を及ぼさない」はYesですね。 でも、ブラウザで閲覧しているユーザに「直に」問題のある影響を与えてきたりします。 > 他にはどのようなものがあるのでしょうか・・・ Webアプリでのセキュリティホール、でしょうか? んと…ぶっちゃけ「山のように」としか(苦笑 googleとかで調べられてみるとかなり大量に出てくると思います。 > あと、あるページで見たのですが > 「Cでプログラムするにはコンパイルの為にシェルを開放しなければならずそうすると解決不能なセキュリティホールを抱えることに」 > と、あったのですが、何故だかがわかりません。 解決不能かどうかは微妙ですが。 コンパイルのために、loginできてシェル使えて、という環境の提供が必須なので。 例えばレンタルサーバとかそういった環境の場合、場合によってはかなり致命的な出来事が起きるんじゃないかと思います。 逆に、例えば「自社開発で自社サーバで」とかだと、そこまで問題視する部分ではないように思います(まぁgccが嫌って話もありますが…その場合、クロスコンパイルとか色々あるわけですし)。 負けず劣らず長くなってしまいましたが(苦笑 何かの参考にでもなれば幸いです。
その他の回答 (3)
- galluda
- ベストアンサー率35% (440/1242)
がると申します。 セキュリティ上の「C言語の優位性」は、正直あまりありません。 よく「Script系はプログラムを書き換えられる」とかいいますが、それならばC言語も「実行形式ファイルを書き換えられる」わけですから、大差ありません。 それよりも、作り方を間違えると容易にバッファオーバフロウを引き起こすなど、セキュリティ的にはむしろ「危険な」チョイスになります。 私もC言語でのCGIは多く作ってますが、やはり最大の優位性は「CPU資源とメモリ資源に対する優位性」です。 近しいラインでメリットが必要な場合、C++をチョイスするのもひとつの手段かもしれません。
補足
ありがとうございます。 C言語のセキュリティホールに関して書籍等があまりないので困っています。 確かに優位性があまりないのはわかるのですが、危険だ!!ということがよくわかりません。 これと言って大したセキュリティホールはないのでは?と思ってしまいます・・・ タグを埋め込まれる可能性があり、フォームを送り込まれて危険だということは調べました。 でも、これもサーバに影響を及ぼすものではないと思うのです。 他にはどのようなものがあるのでしょうか・・・ あと、あるページで見たのですが 「Cでプログラムするにはコンパイルの為にシェルを開放しなければならずそうすると解決不能なセキュリティホールを抱えることに」 と、あったのですが、何故だかがわかりません。 長くなってすみません。
- rabbit_cat
- ベストアンサー率40% (829/2062)
>セキュリティの面で、 >C言語でプログラムを組むメリットってなんでしょうか・・・ perlの場合は、perlエンジン自体にセキュリティホールがある可能性がありますが(その情報は全世界に公開される)、 Cで自分で0から作れば少なくとも既知のセキュリティホールはありません。 ただ、下手にCで組むと、それこそ自分でセキュリティホールを作りこむことになる可能性も高いですけど。
お礼
ありがとうございました。
メリットだけ Perlは 随時文を解釈して実行している Cは最初からバイナリになっている(実行形式) 速度が違う
お礼
やはり一番のメリットは処理速度ですよね・・・ ありがとうございました。
お礼
詳しく書いて頂いてありがとうございます。 参考になりました。 そうですね・・・作り手の知識不足が一番危険です。 勉強し直します。 ありがとうございました。