パスワードを忘れた? アカウント作成
508747 journal

yuriの日記: ソフトウェアセキュリティについて開発者が知っているべきこと 10

日記 by yuri

というを読んでいる。

以前、sprintf()はアブねーからsnprintf()に置き換えましょうね、
という話をチームのみんなに振ったところ猛反対された経験がトラウマな私は
自分がコミットするコードだけで、禁忌関数に気をつけています。

良かれと思った提案が猛反対されるのは
・言い方が悪い(正論チック or 癇に障る とか)
・タイミングが悪い(この忙しいときにコノヤロー)
・嫌われている
・上記の複合技

こんなところでしょうね…

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 「sprintfでも大丈夫だと思っている」って奴。

    もっとも、ローカルで動かすだけの奴ならsscanf使っても問題ないと思ってますけどね。
    # ローカルで動かせるという事は動かすための権限を既に持ってるわけで、自分をクラックしても意味がない。また、権限奪取はシステムの問題であってライブラリやユーザーアプリの責任ではない。というのがその理由。
    • >「sprintfでも大丈夫だと思っている」って奴。

      そうそう!
      半数くらいはそんな感じで、残りは「すでに作ったコードを直す労力は払えない」
      って感じです。。
      お客様からは「セキュリティ大丈夫だろーね(しっかりしろよゴルァ)」と言われてるのに何この板挟みorz
      #弱ってます(^^;;

      sprintfな部分からシェル起動して見せてあげれば、ちょっとは本腰を入れて修正を
      手伝ってくれるかもしれませんね。。
      親コメント
      • んー。フォーマットか長さ無指定の%sに食わせる文字列が外から拾ったもので、文字列のチェックや加工をすり抜けないとクラックできないから、それはなかなか難しいものがあるよ。

        それにデータを拾い食いしなければそもそもそんなクラックデータを食う危険はないのでそういう用途ならコード修正のコストを負担できないというのはわかる。でも逆にネットワークアプリ、特にtheNetに繋ぐような何食わされるかわかったもんじゃない場合とか、ライブラリみたいに何に使われるかわからない場合は直すのが順当だと思う。

        何にしても禁忌だけじゃ説得力はないから最低でもメカニズムレベルで理由を説明する必要があると思う。カラクリがわかればたとえ今のコードを直してくれなくても次に書くコードからは配慮してくれるんじゃないかなー。
        親コメント
      • したっぱープログラマだと「snprintfがない環境で動かないといけない」とか「snprintfの仕様が微妙に違う環境で動かないといけない(SUSv2とC99…)」とかもあるので泣けます。

        まあsnprintfがない環境ではたいていlocaleもないのでsprintfでも文字数が計算できたりするのですが。あーもー面倒だから全部自分で書いてやる!(そしてまた車輪を発明するダメ人間)

        --
        -- Takehiro TOMINAGA // may the source be with you!
        親コメント
    • 動かすのはローカルでも食わせるデータは出所が知れないという場合も
  • by Anonymous Coward on 2006年12月06日 12時33分 (#1070372)
    素材が同じでも出来上がりはバラエティに富む。(甘口表現)
  • by Anonymous Coward on 2006年12月12日 10時27分 (#1073958)
    >・言い方が悪い(正論チック or 癇に障る とか)

    こいつはあんまし笑い事ではないですよ。
    これが原因(の一つ)で脆弱性が残っちゃって、日本中を騒がせる情報漏えい事件になったこともあるのですから。
typodupeerror

日々是ハック也 -- あるハードコアバイナリアン

読み込み中...