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

善意を装う C コンテスト 63

ストーリー by mhatta
COBOLは勘弁してだって 部門より

tamo 曰く、 "2005 Underhanded C Contest が告知されています。 読みやすくて安全に見えるけどこっそり悪いことをする、という C プログラムを募集するもので、 今年のお題は「画像処理をするだけのように見せかけて、識別情報を埋め込む」です。

FAQ によると、

  • 目的は何かを批判・攻撃することではなく、コードレビューの必要性を啓蒙すること
  • もし必要であれば、プラットフォームへの依存、C++ の使用、外部ライブラリの使用も可
  • 賞品のビールが気に入らない場合は代替品を要求することも可
とのことです。"

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2005年06月13日 1時34分 (#750303)
    画像変換処理と見せかけて、開発中のソースコードにGPLなソフトのコードを紛れ込ませるとか…。
  • configure (スコア:2, 興味深い)

    by takl (14577) on 2005年06月13日 2時26分 (#750318)
    とりあえずサンプル(テンプレート?)のppm.c [brainhz.com]とsample.c [brainhz.com]を見ました。

    ・put_ppm()で出力されるデータに情報を埋め込みたい
    ・put_ppm()を直接弄りたくない(弄るとすぐバレそう)
    ということを考えたので、

    ppm.cの最初で
    #include"config.h"
    として、
    fwriteを置き換えるマクロを生成するconfigureファイルを用意する、
    というのを考えてみました。

    ./configure && make
    すると、識別情報を埋め込むppmライブラリが出来上がるのに、
    ppm.cを見ても識別情報を埋め込むようなコードは見当たらない、という。

    どうでしょ。
    • by deleted user (19654) on 2005年06月13日 9時45分 (#750376) ホームページ 日記
      ヘッダでマクロっていうのは、結構ふだんからハマって悩む部分かも。
      ファイルごとに違うヘッダを include していたりして「あれ~?」って。
      あとは if();{} とかも、やりますねえ。
      そういうのが使えるってわけですね。

      今回のお題とは関係ありませんが、「セキュリティウォリア」っていう本には、
      文字列処理が存在しないのにパスワードが存在するログイン画面プログラム
      というのが載っていました。バックドアとして使えるなあ、と感心しました。
      見ためは絶対 goto で最後に飛んでしまうんですが、パスワード入力でバッファ
      オーバーフローを起こしてやればログインを成功させることができるという。

      皆さんの「最高に見付けにくかったバグ」をちょっといじって投稿すれば
      ビールがもらえるかもしれませんよ。
      親コメント
      • >「セキュリティウォリア」っていう本には...
        スゴイ表紙 [oreilly.co.jp]のヤツですね。

        >「最高に見付けにくかったバグ」をちょっといじって...
        Cだったらポインタ関係が良さそう。
        デバッグで変数の値追ってたら
        全く関係ないforループ中で値が変わっていることがあった。
        • by steve (8972) on 2005年06月13日 17時34分 (#750620)
          > Cだったらポインタ関係が良さそう。

          スタック周りとか使えませんかね?

          > デバッグで変数の値追ってたら
          > 全く関係ないforループ中で値が変わっていることがあった。

          そうなんですよ、全く関係の無い変数への代入で値が変っちゃって。
          変数をstatic宣言するとバグが再現しなくって…

          デフォでスタックチェックを外すなよ…(T_T >> BCC4.5
          親コメント
  • 学園ドラマなら (スコア:2, おもしろおかしい)

    by hpn_smile (11442) on 2005年06月13日 9時37分 (#750371) 日記
    すっごーく悪そうなヤツが
    さりげなく良い事してる方が
    感動的だけどな。

    #そんな手法も今さら陳腐か
  • by lunatic_sparc (15416) on 2005年06月12日 23時43分 (#750264)
    「Cコンパイラとかライブラリに細工する」ってのを脊椎反射で思いついたんだけど、だめかな。
    • by vn (10720) on 2005年06月13日 0時01分 (#750269) 日記
      Cコンパイラとかライブラリへの細工を実行するソースコードが、
      いかにも人畜無害な (単純な画像処理をしているかのような)
      外見を保っていれば OK でしょう。
      親コメント
    • by Anonymous Coward
      カーニハンだったかビルジョイだったかがCコンパイラにトロイの木馬を仕込んだけどウン年間発見されなかった、とかいう逸話があったようななかったような。詳細忘れた。
      • Re:だめかな (スコア:1, 参考になる)

        by Anonymous Coward on 2005年06月13日 0時14分 (#750274)
        ケントンプソンが、ユーザーにメンテを頼まれるのに対応できるから、
        kenってユーザーを仕込んでいたって話じゃなくて?
        親コメント
        • Re:だめかな (スコア:4, 参考になる)

          by taka2 (14791) on 2005年06月13日 1時12分 (#750293) ホームページ 日記
          ケントンプソンが、
          ・login.c をコンパイルするとバックドア入りのオブジェクトを出力するような
          ・Cコンパイラをコンパイル出力するように、
          ・Cコンパイラに細工していた
          という話ですね [ebimemo.net]

          ここまで巧妙にやられると、ソースコードレベルでは発見が出来ないんですよね。さすがだと思いました。
          親コメント
          • Re:だめかな (スコア:3, 参考になる)

            by Anonymous Coward on 2005年06月13日 1時38分 (#750304)
            これですね
            "Reflections on Trusting Trust"
            http://www.acm.org/classics/sep95/

            このコンテストの趣旨は"ソースを良く調べましょ"って事らしいですが,Thompsonは"ソースをいくら調べてもダメなやり方だって出来ちゃうよ”って言ってるので,異なるレイヤのお話でしょーね.ただ,コンパイラのソースを読んだ人が”ちゃんとコンパイルしてる”って”思っちゃう”ようなコードでThompsonの手法みたいな事を出来れば趣旨には合いますね.

            まぁそれだと今回のお題からは外れてますが…
            親コメント
            • by Anonymous Coward
              → コンパイラのソースを調べても、それをコンパイルするコンパイラバイナリコードが信用ならん
              → そのコンパイラバイナリを調べても、それを動かすOSが信用ならん
              → OSバイナリコードを調べても、それを動かすハードウェアが信用な
          • objdump -d login.o | less(ぼそ
            誰もこれをやらなかった。ということか。
            # え?objdumpにも細工が?
            親コメント
  • 着外 (スコア:1, おもしろおかしい)

    by Anonymous Coward on 2005年06月13日 0時07分 (#750271)
    >読みやすくて安全に見えるけどこっそり悪いことをする

    1bitにだけモザイク処理
  • by Anonymous Coward on 2005年06月13日 9時27分 (#750370)
    蓮種花子写真集.zip                       .exe
  • 結婚詐欺の話と思ったのは私だけではあるまい。

    # オレだけかも
  • by Anonymous Coward on 2005年06月12日 23時08分 (#750250)
    > 賞品のビールが気に入らない場合は代替品を要求することも可

    平凡ではあるが、SPAM缶とか?
  • by Anonymous Coward on 2005年06月12日 23時17分 (#750255)
    と勘違いしてしまった…。

    # まだやってたんですね>IOCCC
  • by Anonymous Coward on 2005年06月13日 0時16分 (#750276)
    アレとかアレとかアレを自動判別して、その部分にご丁寧にモザイクをかけてくれる、とか。
  • by Anonymous Coward on 2005年06月13日 3時40分 (#750326)
    独自の命令を少しずつ増やしていって、互換性をどんどん下げていくというのはどうか。

    Javaはダメなの?
  • by Anonymous Coward on 2005年06月13日 11時20分 (#750419)
    バグという名のコードを...(^^;
  • by Anonymous Coward on 2005年06月13日 12時11分 (#750443)
    まず、サンプル [brainhz.com] コード [brainhz.com]の解説をお願いします。

    どこに細工を仕込んであるのでしょうか?

typodupeerror

アレゲは一日にしてならず -- アレゲ見習い

読み込み中...