• ベストアンサー

スタック実行の無効化?

バッファオーバーフロー対策として、スタック実行の無効化という言葉をよく聞きますが、これは具体的にはどういったことなのでしょうか。 スタックやヒープという言葉の意味もよくわかっていないので、教えてください。 よろしくお願いします。

  • retr
  • お礼率90% (27/30)

質問者が選んだベストアンサー

  • ベストアンサー
noname#205142
noname#205142
回答No.1

OSによってやり方が変わってきます。 Solarisの場合は/etc/systemに set noexec_user_stack=1 とか書けば良いし、LinuxやBSD族にはそれ用のパッチがあったり、動的に設定可能だったりまちまちです。 # ただしプログラムによっては動作しなくなるものもあるので要検証です。 あと別の考え方として境界チェックを行うライブラリを組み込む方法もあります。この手のライブラリは何種類かあるので、評価してみると良いと思います。 http://www.trl.ibm.com/projects/security/ssp/main.html http://www.research.avayalabs.com/project/libsafe/ とか。 スタック or ヒープオーバーフローとは何ぞやという話もWebを漁れば幾らでも出てきますので、そちらをどうぞ。

参考URL:
http://www-6.ibm.com/jp/developerworks/security/overflows-index-j.html
retr
質問者

お礼

やりかたもいろいろとあるんですね。 まだ具体的にどういうことか良く分からないので、参考のページを見ながら自分で勉強してみます。 回答、ありがとうございました。

関連するQ&A

  • スタックオーバーフローとは?

    スタックオーバーフローを起こす簡単プログラムを作れって、 大学の教授に言われたんですけど、さっぱり分かりません。 コンパイルと実行の仕方しかわからない自分にそんな過酷な課題を・・・ 誰か助けてください。 そもそもスタックオーバーフローってなんなんですかね・・・。

    • ベストアンサー
    • Java
  • C++のスタック管理

    大きめの配列(2Mくらい)を宣言するとスタックオーバーフローのエラーが発生します。で、配列をstaticにしたらエラーが発生しなくなりました。 なんとなく、初期に大きいバッファを確保するならOKで実行時に確保するとNGなのかな~と思っているのですが、このあたりのことを教えていただけないでしょうか。 なんとなく2Mくらいでオーバーフローが出るのも納得できません。 よろしくお願いします。 環境:VC++ .Net + winXP

  • バッファオーバーフローで疑問があります。

    スタックのバッファオーバーフローで、バッファオーバーフローを起こすことで、変数領域の内容が上書きされ、さらにスタックのその他の領域(サブルーチンの戻りアドレスなど)までも書き換わってしまうとありますが、なぜそんなことが起きるのでしょうか? 私のイメージ的に、スタックの内容が以下のようだとして、 |          | | 変数領域(B) | |------------| | 変数領域(A) | |------------| | SFP       | |------------| | 戻りアドレス | |------------| | 関数の引数  | |------------| バッファオーバーフローが起きたとしても上書きされるのは 変数領域A,Bだと思ったのですが、スタックには最大領域でも決まっていてそれおも超えるデータ量の場合は、領域いっぱいまですべて上書くようにでもなっているのでしょうか? 気になって仕方がありません。 どうかよろしくお願いいたします。

  • .NET(C#)でのスタックオーバーフロー回避方法

    ASP.NET初心者です。初めて質問させていただきます。 ASP.NET(C#)でwin32系の外部ライブラリを使用したいのですが、そのライブラリを読み込むところで スタックオーバーフローが発生してしまいます。 同じライブラリをWindowsアプリケーション(C#)で使用したところ問題なく実行できました。 ASP.NETで同じように使用しようとするとスタックオーバーフローが発生してしまう状態です。 [デバッグ中のエラーメッセージ] xxxx.dllを読み込めません。再帰が深すぎます。スタックがオーバーフローしました。 [イベントログ] 障害が発生しているアプリケーション名: w3wp.exe、バージョン: 7.5.7600.16385、タイム スタンプ: 0x4a5bcd2b 障害が発生しているモジュール名: xxxx.dll_unloaded、バージョン: 0.0.0.0、タイム スタンプ: 0x4d92e27c 例外コード: 0xc0000005 xxxx.dllは、今回使用したいDLLです。 過去の質問等でスタックオーバーフローが発生した場合の解決策を探してはみたのですが、見つけられた方法が以下の2つでどちらもうまくいきませんでした。 (1)スタック領域を大きくする →スレッドでスタック領域を指定して実行してみました。 (2)ライブラリの中身をスタックオーバーフローが起きないように変更する → ライブラリの中身は変更できない状態です。 (1)のほうは、指定方法間違えてるかもしれません。。。 Thread newthread = new Thread(new ThreadStart(init), 0); もしくは、w3wp.exeでエラーが発生しているということはIIS関係で何かおかしなことをしてしまってるのかもとか・・・。 根本から見方が間違ってるかもしれませんが、(1)の方法の正しいやり方、もしくはそれ以外の解決策をご教授頂きますようよろしくお願いいたします。

  • スイッチのスタック接続について

    スイッチはカスケード接続の台数の制限はないので、 スイッチでスタック接続を行う理由としては、 ・ポートのバッファを一度経由しなかったり、 LANポートを使用しても1ギガしかない等の理由で、 スイッチ間の伝送速度が高い (スタックは内部のバスに直接接続しているので数十Gbpsの速度がある) ・スイッチを1台のスイッチとして扱うことが可能なので管理しやすい だと思いますが、 1.スイッチを仮想的に1台のスイッチとして扱えるとは   具体的にどのような設定がどのように簡易化されるのか   ご教授して下さい。 2.この2つの理由以外にもスイッチで   スタック接続を行う理由はありますでしょうか? 宜しくお願い致します。

  • Lhacaに脆弱性があるとのニュースが理解できなくて

    ’圧縮・解凍ソフト「Lhaca デラックス版1.20」に脆弱性がある’というニュースが今流れていますが、「システムフォルダにバックドアを仕掛ける」とか「スタックバッファオーバーフローの脆弱性が原因」とか言われても、何をどうすればどういう現象が起きてPCにどういう悪影響が出るのか、記事を読んでも全く理解できません。 初心者にも分るように平易な言葉で解説して頂けないでしょうか?

  • スタック オーバフローのため??

    こんばんは、お世話になっております。 PC不調のため、セーフモードで スキャンディスクを実行した後 通常起動しようとしたところ 「スタック-オーバフローのためスレッドを停止します。最近インストールされたvxdがスタックを消費しすぎている可能性があります。SYSTEM INIのMin SPS設定を 増やすか最近インストールされたvxdを削除してください。現在5spがアロケートされています」 というメッセージが出てきました。 私の知識内ではまったく意味がわかりません(汗 どう対処すればいいか、ご伝授ください。

  • バッファのオーバーフロー

    とあるサイトを実行すると、「バッファオーバーフロー保護によりブロックされました」と出てしまうので、そのサイトが使えません。何か良い解決法はあるのでしょうか?

  • バッファーオーバーフロー!?

    最近ネットで動画とかを配信しているサイトをよく開くのですが。 毎回バッファーオーバーフローというものが出て途中で「応答なし」になって固まってしまいます。 たとえそのページ以外何も開いていなくても、バッファーオーバーフローになってしまいます。 ウィルスソフトはMcAfeeを使ってます。 なぜなんでしょう? なぜ起こるのか、対策とか、防ぐ方法とかご存知の方、教えてください! エラーの詳細を見ても分からないんです…

  • 今回のようなバッファーオバーフローのウイルスについて

    今回のようなバッファオーバーフローによるウイルスの場合は、アンチウイルスソフトで実行される前にブロックされるのでしょうか? なんかそのような、レスを拝見しました。 もし、運悪く、バッファオーバーフローによってアンチウイルスのメモリ領域にあふれがでれば、アンチウイルスソフトは機能しませんよね?そんなことになることはないかな?

専門家に質問してみよう