パスワードを忘れた? アカウント作成
12508615 story
セキュリティ

Debianの「どんな環境でビルドしても同一のバイナリを生成できる」試み 38

ストーリー by hylom
検証可能性の担保 部門より
insiderman 曰く、

Debianがバイナリファイルの信頼性向上のため、「どんな環境でビルドしても同じバイナリが生成される」ような仕組み(Reproducible builds)の普及に取り組んでいるそうだ(SlashdotMotherboard)。

Debianではソースパッケージを利用することでソースコードからのビルドは簡単に行えるが、ビルドに使用した環境の違いなどによって生成されるバイナリは異なるものになる可能性がある。Debianはこの問題を解決し、どのような環境でも常に同一のバイナリを生成できるような仕組みを導入することで、改変されたバイナリを簡単に判別できるようにすることを目指しているという。

Debianが今これに注力する理由として、諜報機関などがソフトウェアにバックドアを仕込む、という問題が挙げられている。Reproducible buildsを導入することで、こういった問題への対策になるということのようだ。なお、現在、Debianの全パッケージのうち83%がReproducible buildsに対応しており、この割合は徐々に増加し続けているという。

近年ではLinuxの世界でも第三者がビルドしたソフトウェアをダウンロードして使うことが普通になっており、最近では第三者がビルドした仮想マシンをダウンロードして使う、という例も増えている。そのバイナリが本当に安全なのか、バックドアは仕込まれていないか、利用者はその点を注意・確認してから利用するべきだろう。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2015年09月10日 6時58分 (#2879643)

    他人の公開した仮想マシンを使うなんてまともな考えとは思わない。
    バックドアが仕込まれたとかもそうだけど、うっかり危険な設定にしてないとも限らないし、
    そもそも作成者はセキュリティについての意識が甘い人なのかもしれない。
    個人的には新人に公開サーバーを任せるようなレベルの危険性だと思っている。

    • 新バージョンのOSのお試しとか
      Androidアプリの開発で実機が無いときとか
      使っちゃいますねぇ。

      親コメント
    • by Anonymous Coward on 2015年09月10日 7時29分 (#2879653)
      親コメント
    • by Anonymous Coward

      dockerもmavenも同じような理由で怖い。
      でもaptもyumも使ってる俺に文句を言う資格はない。

      • by Anonymous Coward

        ActiveXは危険だとかいうくせにダウンロードした実行ファイルはホイホイ実行して遠隔操作されたりしちゃう破綻した人っていますよね。

        • by Anonymous Coward

          ActiveXはまともな使い方よりも悪意ある使い方される物のほうが圧倒的に多かった。
          まともな使い方される奴はほんの一握り。(代わりにそれらの実行頻度は高いんだが)
          あと用途はまともでも脆弱性もワンセットになってるActiveXコンポーネントも多い。
          FlashとかFlashとかFlashとかAcrobatとかJavaとかFlashとかAcrobatとか…orz

          # ActiveX普及率が高いとか言う某国は兎も角

  • 信頼の対象が実行ファイルから仮想マシンに変わっただけだわな。

    • by Anonymous Coward

      仮想マシンに署名がつく流れ?

      • by Anonymous Coward

        データとプログラムの分離が上手いこと出来たとしてもプログラムの構成が激変しまくり…
        配布時点での署名なら可能だろうけど、それは信頼できる手段で入手したハッシュをチェックするだけで良いし。

        # そもそも自分でビルドできるやつが居ない [security.srad.jp]から配布元の保証が役に立たない可能性が……

  • by Anonymous Coward on 2015年09月10日 7時54分 (#2879658)

    同じコードがビルドできるなら署名されたバイナリ使えばいいんじゃないのか。
    バイナリなんてプロセッサのキャッシュサイズに最適化する程度で変わるのに、そんなこともしないならつるしでいいじゃないか。
    それとも、自分でビルドしないと死んじゃう病なんだろうか、全部のソースを確認できるわけでもなし、ビルドしたから安全なんてとても思えないのだが。

    • by Anonymous Coward on 2015年09月10日 8時14分 (#2879660)

      公開されているバイナリに、ソースコードに無い機能がこっそり追加されていたりしないか、
      ソースコードをオプション合わせてコンパイルすれば確認できるようにしよう、ってことでしょ

      親コメント
      • by Anonymous Coward

        だね。

        もしディストリビュータがこういうこと [it.srad.jp]をしても、改変されたものかどうかを第三者が容易に確認できるようになる。
        どの環境でも同一のバイナリが生成されるということは、配られたバイナリと、手元でビルドしたバイナリは全く同じになるはずだから、それこそcmpコマンド [wikipedia.org]一発で。

    • by Anonymous Coward on 2015年09月10日 9時57分 (#2879697)

      ケン・トンプソン「せやな」

      親コメント
    • by Anonymous Coward

      私もよくわからんが、アプリのパッケージ開発者やディストロ開発者を想定したものじゃないかな。
      (要はバイナリに署名をつける側の話)

      「あらゆる環境で同一バイナリ」っていうほどのものじゃなくて、
      「些細なコンパイラのオプションやツールセットのバージョンに影響されない」程度の代物ではないかと思う。

      細かい条件でいちいちバイナリが変化しないことによって、バイナリの署名のやり直しが減ったり、複数人での共同作業がやりやすくなったりする効果はあるだろう。
      例えば、あるRPMのメンテナが交代した場合、新しいメンテナのビルド環境でも旧メンテナと同じバイナリが簡単にビルドできれば嬉しいと思う。

  • by Anonymous Coward on 2015年09月10日 8時16分 (#2879661)

    以下略。

  • by Anonymous Coward on 2015年09月10日 10時09分 (#2879705)

    ソースからビルドするのは、CPUとか環境に最適化したいからだろう?
    どんな環境でも同じバイナリが得られるならば、バイナリに署名でもつけておけばよいのでは?

    #にわかGentooなひとより

    • by Anonymous Coward

      バイナリーパッケージについては、
      architecture(ビルドオプション)毎に一次配布元で生成し、
      丸ごと配布しているが、ハッシュ値か何か同一である事の検証用データだけ配布すれば済むようになれば、
      architectureを増やす事による通信コストが一次配布元およびミラーサイトで減るはずなので、
      きめ細かく環境に最適化したバイナリパッケージが提供できるようになるかもしれないですね。

    • by Anonymous Coward

      RedHat系のrpmパッケージって、もう何年も前から署名付きだったよね。

      セキュリティ問題で頻繁にアップデートされたパッケージが公開されているのに、いちいち自前でビルドして検証なんてやっていられないよ。
      せいぜい、テスト機に運まかせでインストールして、アップデート前と同じ動きをするかどうか確認するのが精いっぱいでさ。

  • >> 近年ではLinuxの世界でも第三者がビルドしたソフトウェアをダウンロードして使うことが普通になっており

    開発元がバイナリを配布してないソフトを
    ディストリビューションの開発元とも違う誰かが
    コンパイルして配ってるなんてこと、普通はないように思うけど。

    • by Anonymous Coward

      普通にあるでしょ。Debianだって、全てのコンパイラを最初から同梱してるわけじゃないし、コンパイル時にしか使わない環境のインストールを全てのユーザーがやるのは筋が悪すぎる。

      • by Anonymous Coward

        そんなのそのソフトウェアの開発元がバイナリ配ればいいだけじゃない?

        • by Anonymous Coward

          必要なライブラリを全部静的にリンクしてですか?

          • by Anonymous Coward

            それができないなら、ユーザの他にだれがコンパイルするんですか?

            • by Anonymous Coward

              コンパイルというか、親コメントの意図は当然動的なリンクを言ってるんだと思うんですけど。

        • by Anonymous Coward
          開発者が ソースコード +| 特定環境用のバイナリしか公開してないマルチプラットホームなアプリって腐るほどありますよね?
          開発元がやればいいのも正論ですけど、実際には開発元がやってないので、第三者が非公式なリポジトリ作って公開なんてのも腐るほどあるので、もう普通のことでしょうね。
    • by Anonymous Coward

      CentOSとかのRHEL互換ディストリだと、インストール・アップグレードを
      全てyumで済まそうとするばかり、どこのものともしれぬ野良レポジトリを
      登録しちゃう面倒臭がり屋さんは多そう

      # epelまでは許そう

  • by Anonymous Coward on 2015年09月10日 11時22分 (#2879748)

    他に、バイナリに差異を生じさせる要素は何があるの?
    「環境」をどの程度の範囲の言葉として使ってるかにもよるけど。

    • by Anonymous Coward on 2015年09月10日 14時46分 (#2879882)

      昆虫の数は環境に含まれるんですかね。

      親コメント
    • by Anonymous Coward

      1) コンパイラのバージョン違い
      2) 実行モジュールがリンクしているライブラリのバージョン違い
      3) autoconf等の環境順応用設定自動化ツールのバージョン違い
      4) autoconf等の環境順応用設定自動化ツールの実行による環境の差異の反映

      RedHat系だと、ディストリビュータがビルドに使用しているバージョンのコンパイラ等が外部に提供されていなかったりして、同じソースパッケージから自動ビルドしても、ディストリビュータ提供のバイナリーと同じバイナリーにはならないのは有名な話。

      • by Anonymous Coward

        いや、それらはなんで「環境」じゃないのかって話。

        • by Anonymous Coward

          「環境に依存しない」ってことは結局「環境を無視してる」ってことですからね。

          バイナリに影響するような変更を無視して「やあ揃った揃った」で済ますのって、
          警告レベルを下げてビルドログが綺麗になったと言うようなもんじゃないのかな…。

          • by Anonymous Coward

            横レスだけど「ビルドに使用した環境の違いによって」ではなく、
            「ビルドに使用した環境の違いなどによって」とあるが、
            「など」に含まれる環境以外の要素とは何なのかって疑問だと思いますよ。

            タイムスタンプとか乱数値がビルド時に算出されて埋まるのであれば環境以外の違いと呼べる…かな?
            # ビルド時刻やRNGの状態まで環境に含むとか言われたら反論しきれんけど…さすがに言わないよね?

      • by Anonymous Coward

        configureスクリプトでautodetectされるライブラリも問題です。たしか、Debian系だと、chrootで隔離された環境に、必要最小限の開発ライブラリやツールをインストールして、ビルドを行っていたはず。

  • by Anonymous Coward on 2015年09月10日 12時03分 (#2879768)

    同一ソースから同一バイナリ、ということなら、
    腹いせにGPLバイナリを紛れ込ませるテロが難しくなるね

    暗黒面に囚われた雇われ開発者よ、C++を使い給え

    • by Anonymous Coward

      Debianのパッケージに対してGPL汚染とか何言ってるのか意味がさっぱりわからないがGPLが嫌いだという強い意思だけは伝わってきた。

  • by Anonymous Coward on 2015年09月10日 12時31分 (#2879791)

    >そのバイナリが本当に安全なのか、バックドアは仕込まれていないか、利用者はその点を注意・確認してから利用するべきだろう。
    どうもこういう話を読むと、
    http://security.srad.jp/story/08/05/15/1636213/ [security.srad.jp]
    を思い出さずにはいられない。

  • by Anonymous Coward on 2015年09月11日 0時23分 (#2880180)

    https://wiki.debian.org/ReproducibleBuilds/About [debian.org] に何故このような取り組みをしているのかが簡単に書いてある。

    あと、reproducible buildsはLinux foundationのCIIの支援を受けて実施されています。
    https://www.coreinfrastructure.org/news/announcements/2015/06/linux-fo... [coreinfrastructure.org]

typodupeerror

開いた括弧は必ず閉じる -- あるプログラマー

読み込み中...