2004-06-01から1ヶ月間の記事一覧
スタック上に置かれたコードの実行不許可についてはきちんと効いているのだろうか。こちらも確認してみました。背景となる技術については Shudo's Note さんの5/17の記事などを参照していただくとして、結論のみ。デフォルトでばっちり効いています!。こち…
Fedora Core 2 のkernelには、exec-shield という、セキュリティ強化のパッチが組み込まれています。インストール直後の状態で、それがちゃんと機能しているか調べてみました。 まずその(1)、アドレススペースのrandomize機能です。これはデフォルトでばっち…
GCC-3.5には -Wstrict-aliasing=2 というオプションが指定できる模様。これで、以前に書いた-fstrict-aliasingにまつわる不具合をコンパイル時に検出できるようになるかもしれない。
適宜覚書さんより 本日付けで Threat Modeling Tool の新版、v1.0.1637.18511 がリリースされた。Windows用のバイナリが無料ダウンロード可能。 Threat Modeling とは、Microsoftがセキュリティ欠陥のないソフトウェアを作成するために、ソフトウェアの設計…
今年の4月にIPAによって公開された、CMMI-SE/SW/IPPD/SS 公式日本語翻訳版 Version 1.1 をダウンロードして印刷した。明日からの通勤のお供にするのだ。 以前にITProの記事で見て以来楽しみにしていたもので、やっと読む時間が取れた。 いや〜最近のIPAの活…
晩御飯は菜食インド料理店のNataraj 銀座店で。僕のおすすめはパニール・マカンワラとサイ・バジ。二人で9600円なり。
仕事帰りに秋葉原に寄ってDVD-Rドライブ購入。LG電子のGSA-4120Bにしてみた。リテール品で税込12880円。太陽誘電の8倍速DVD-Rメディアを買い込んだ後、秋葉原でDさんと合流し、銀座へ移動して晩御飯。 帰宅してから早速DVDドライブを装着。装着したマシンのO…
YLUG Kernel読書会のバッファオーバフロー防止技術の回なんかでも話題に上がっていた、PointGuardって結局リリースされないんでしょうか。一番面白そうだと思ったヤツなんだけどなぁ〜。
Phrack Magazine (http://phrack.org/phrack/55/P55-08) の off-by-one exploit を読みました。要約しておきます。 void func(const char* sm) { char buffer[256]; for(int i=0; iこのような、1バイトだけオーバーフローするbugのあるコードを書いてしまい…
米澤研 SurveyBBSによると、SAFECode Projectというのがあるらしい。 Control-Cの話。いわゆる安全なC。メモリ安全性を100%静的に保証する。プログラムにセマンティクス制限を課す。動的メモリ確保とかポインタや配列の使い方に関して。文脈は組み込み。Cプ…
とあるきっかけで参加させて頂いた勉強会+オフ会で、SELinuxの方とお話する機会に恵まれた。私なんぞが言うまでもないけれども、これからのOSの方向性はこれでキマリだな!と感じた。すぐにでも使い始めたい魅力に溢れている。 ネックは、誰もが思うことだろ…
駒澤大学のピキヌーまででかけてカレー。相方はカントリー、私はチキン。初めて頼んだプーケットビールは、味が薄めでやや物足りなかった。 帰宅してからベルギービール Poperings Hommel bier で物足りなさを解消。これは先週の地ビールフェア@恵比寿で買っ…
かなり昔ですが、或日さんのSolaris8におけるmemory over commitの話題に触発され、Linuxの場合について調べた事があります。正しさは保証しませんが当時のメモを貼っておきます。 memory overcommit? メモリ資源の非常に限られた環境でLinuxを使用している…
セキュリティ関連書籍をいろいろ購入 Threat Modeling (Microsoft Professional) The Shellcoder's Handbook: Discovering and Exploiting Security Holes Exploiting Software: How to Break Code (Addison-Wesley Software Security) "Thraet Modeling" が…
いままで漠然と、「UNIXの規格について調べるときにはSUSv3を見る」ことにしていましたが、それでOKなのかちょっと調べてみました。結論としては、ここ 今や ISO/IEC 9945:2002 IEEE Std 1003.1-2001 (POSIX) Single UNIX Specification Version 3 (SUSv3) …
SELinuxを使ってみたく、FC2を入れてみた。現在、マシンにはRedHat9がインストールされているが、そこに上書きする。 UDMA100の古めのHDDが壱発(hde)、SiI3112のSATAカードにもう弐発(hda,hdc)、合計参発のHDDがついている。hda,hdc は /dev/md0 (RAID1) と…
ふーむ。-fcall-saved-XXX ってのは知らなかったな。「(calling conventionを)普通CPUメーカーが決める」という件についてはそうですね。x86についても「IA-32 インテル(R)アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル 上巻」の6章、「プロシ…
MSの中の人のblogとして著名な、"The Old New Thing" の2004年1月の記事に、calling convention関係のものが5つある。あとで必ず読まねば。
Linuxでpthread_create()をすると、生成されたスレッドにはそれ固有のスタック領域が割り当てられる。具体的にどのように割り当てられるのかを調査。 stack smash 対策を考える1場合、スタックの割り付け方を知っていると多少有益かもしれないので[securiy]…
シグナルハンドラからアクセスするグローバル変数は、ちゃんと volatile sig_atomic_t 型にしないとダメですよ!(追記 2006/1/20) またも書き忘れ。longjmp, _longjmp, siglongjmpで戻ってきた後に触りたい自動変数もvolatileつけないとだめですYO!
Singletonを実装する時などで、いわゆる "double checked locking" を使うなんて場合は、memory sync な関数を使わない部分が出てくるでしょうから、volatile やら コンパイラ固有のメモリバリア手法やらをキッチリ使わないとダメですよ〜。多分。 参考: The…
SUSv3をひっぱりだすのが大げさという場合は、comp.programming.threads FAQ の、 Q.56: Why don't I need to declare shared variables VOLATILE? Q.118: Memory barriers for synchonization あたりを読んでもらうと良いです。特にQ.56ですね。 あと、以上…
複数のスレッドで変数を共有し、さらにその変数に対してread/writeの両方のオペレーションが行われるとき、その変数の操作は、上で書いたとおり、 read/writeともにmutexで保護するべき volatile修飾だけで済ませるのはNG mutexで保護するならvolatile修飾は…
複数のスレッドから共有する変数(典型的にはグローバル変数)を操作する際、どんな注意事項があるか?という話題です。プラットフォームはPOSIXを仮定します。pthreadのお話です。 まず、一口に「複数のスレッドで変数を共有」といっても、おおまかにいって次…
散々言われている事とは思うけども、仮想関数もインライン展開の対象に なる ので要注意です。 値オブジェクトのメソッドが呼ばれている場合は実行時に動的束縛する必要がないからインライン化できます。Foo::bar() が仮想関数として、 Foo f; f.bar(); はイ…
コンストラクタ、デストラクタをコンパイラに自動生成させる場合、当然かもしれませんがそれらはインライン化されます。インライン化というか何も処理が発生しないというか。 しかしもちろん、 [foo.h] class Foo { public: Foo(); ~Foo(); }; [foo.cpp] Foo…
C++/C99言語では、"inline"キーワードが正式にサポートされており、コンパイラに対して関数を「インライン化してほしい」と要求することができます。しかし、良く知られていることですがこれはあくまでヒントなので、コンパイラの気分次第でインライン化が起…
とりあえず、次のオプションで落ち着いている。 valgrind -v --num-callers=100 --leak-check=yes \ --leak-resolution=high --error-limit=no \ --workaround-gcc296-bugs=yes 最後のは太古のg++使用時のみ。誰かARMやMIPSに移植してくれないかなぁ・・。
/.JのGCC-3.4リリースの話題を追っていたら、GCC3では-O2で-fstrict-aliasingが有効だから注意せよというポスト(http://slashdot.jp/comments.pl?sid=175355&cid=537217)があった。strict aliasing については、Radium Software Developmentさんが詳しい。こ…
頭の体操です。 int main(void) { return CompileTimeHash("abcdefghijklmnopqrstu"); }が、 mov $12345, %eax のような形にコンパイルされればOKとします(最適化をかけて即値になればOK)。テンプレートの再帰を使うことになると思いますが、再帰がunrollさ…