[Anthy-dev 2006] Re: RATSを用いたanthyのソースコード監査 [src-util編]

Back to archive index

yusuk****@cheru***** yusuk****@cheru*****
2005年 4月 15日 (金) 00:16:33 JST


田畑です。
#[anthy-dev 2000]ゲットおめでとうございます。

>   静的なソースコード監査ツール
>   RATS - Rough Auditing Tool for Security
> http://www.securesoftware.com/resources/tools.html
>   を用いてanthyのコードの一部をチェックしました.
ありがとうございます。この手の問題は動作上の実害が
少ないとしても、ツッコミどころの多いコードは読むのに
疲れるので直しておくべきだと思っていますので、御指摘は
助かります。


>   1. dic-tool.c: read_entry()
> 
>   type_name[256] と宣言されていますが, sprintf()によって257バイト書きこまれる
>   可能性があります.
修正しました。

>   2. rkhelper.c: make_rkmap_shiftascii()
> 
>   opt->toggle が関数の外で書換えられるというあまりありえない
>   状況も考えたとすると,
>   すべての c に対して rk_default_symbol[c] と c == opt->toggle が真となった場合
>   配列 work は [5*128] だけの領域を使います.
opt->toggleをローカル変数にコピーして、変化が無いことを
わかりやすくしました。

> 
>   3. rkhelper.c: make_rkmap_hirakata()
> 
>   こちらも opt->toggle が関数の外で書換えられなければ問題ありませんが,
>   work = alloca(2*128 + 6);
>   ではなく
>   work = alloca(2*128 + 8);
こちらはこのように修正しました。

>   他にも, dic-tool.c:find_head()などで, 
>   配列の長さを関数に渡しておらずチェックされていない,
fgets()で256文字しか読まないということはわかるので、
とりあえず、このままにしておきます。

>   dic-tool.c:print_usage()などで,
>   フォーマット文字列にマクロをそのままないし連結していれている, 
この場合は凝ったことをしていないので、安全であることは
自明だと思います。
> 
>   などは潜在的に危険ではないかと思います.
--
 CHAOS AND CHANCE!
  Yusuke TABATA (yusuk****@cheru*****)



Anthy-dev メーリングリストの案内
Back to archive index