パスワードを忘れた? アカウント作成
13555855 story
プログラミング

AIはコンパイル済みバイナリからでも作者のGitHubアカウントを特定できる? 40

ストーリー by hylom
関数名の傾向とかはありそうだが 部門より
あるAnonymous Coward曰く、

ソースコードには作者ごとの特徴が現れることから、ソースコードから著者を特定できるというシステムが過去に話題になった。しかし、 米プリンストン大学などの研究によれば、GitHub上で公開されているソースコードを機械学習させることで、それをコンパイルしたバイナリからでも作者のGitHubアカウントを特定することができたという(The Register)。

ソースコードの特徴から作者を特定するというのは、古くから知られた技術であるが、コンパイルされたバイナリではそうした特徴の多くが失われるため、特定は不可能と考えられていた。しかし今回の研究では、機械学習を用いることで逆コンパイルされたソースコードからでも作者が特定できたとのこと。特にGitHubに多くのコードを挙げているプログラマーや、高いスキルを持つプログラマーほど正確に特定できたという。

この技術はマルウェアの作者特定に役立つとみられている。一方で、匿名でソフトウェアを公開したいプログラマーには難しい事態となるだろう。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by chi (11062) on 2018年03月20日 18時19分 (#3379184) 日記

    AIを使って、プログラマーの癖を隠したソースに変換すればいいんじゃないかな。
    そしてAIを使って、隠した癖を暴くソフトを作って。。。略

  • このソフトの作者は、過去にバグの多いソフトを作ったプログラマである。

    みたいな事がわかるようになるんですかね。

  • そこからバレちゃう、iPhoneアプリはほとんどそう

    • by Anonymous Coward

      VSとかも割とコンパイル環境の情報ダダ漏れのバイナリ吐くよね。
      それをソースコードレベルの開発者と同定できる情報と呼べるかっていうとあやしいけど。

      • by Anonymous Coward

        なんでVC++にしか/PDBALTPATH:無いんだろうな?

  • by ymasa (31598) on 2018年03月20日 22時15分 (#3379317) 日記

    まだAIが独り歩きしている。
    なんかAIというコンピューターモジュールがあって誰でも使えるとでもいうのかね?

    • by Anonymous Coward on 2018年03月20日 23時45分 (#3379359)

      独り歩きするAIとかいよいよSFが実現してて怖すぎんだろ...。

      親コメント
      • by ymasa (31598) on 2018年03月21日 18時54分 (#3379774) 日記

        独り歩きするAIとかいよいよSFが実現してて怖すぎんだろ...。

        AIが独り歩きしていると思ってる人もいるかもしれません。

        親コメント
      • by Anonymous Coward

        独りよがりが止まらないAI、と書くとちょっと幸せな気分になれませんか

        • by Anonymous Coward

          ためらわないのがAIですからね

    • by Anonymous Coward

      何かしら機械学習を使ってるものの総称=AIでもういいんじゃないの?

      # AIの意味を厳密化するために "intelligence" の要件を厳しくすると、世の中intelligentでない人間だらけに。

    • by Anonymous Coward

      最近は、AIとコンピュータがほぼ同義で使われてますからね。
      おまえAIについて何もわかってないだろ、と突っ込みたくなったら、AIをコンピュータに置き換えればその衝動も抑えられますよ。

      • by ymasa (31598) on 2018年03月21日 16時22分 (#3379682) 日記

        そうですね、いまのはコンピューターと置き換えられちゃいますね。

        いまのAIが決められた判断を決められたようにやる程度から抜け出してないかなあと思うわけです。
        もちろん機械学習をして判断に利用する本当のAIもありますけどね。

        AI製品をみるとなにか機械学習してますか?というのとその学習によってなにか判断は変わりますか?と思ってしまう。そしてその判断は結局人間が作っているに過ぎない。

        親コメント
    • by Anonymous Coward

      これさ、逆コンパイルしたソースを、オリジナルを教師データにした学習結果に照らして作者を当てたってことだよね?
      単に逆コンパイラが正確にオリジナルを再現した、と言ってるだけでは。
      AIとあまり関係ないような。

      • by Anonymous Coward

        パターンマッチングの性能の問題で人工知能じゃないっですね。

        • by Anonymous Coward

          それ言ったら今のAIの大半が人工知能じゃなくなっちゃうけどね。
          これは学習というフェーズがあるだけ巷に溢れてる似非AIよりマシだと思うよ。

  • by Anonymous Coward on 2018年03月20日 19時02分 (#3379212)

    ゆうちゃんはネット上のサンプルを切り貼りして作ってたし

    • by Anonymous Coward

      どういう分野でコピペが多いかで、特徴が出るためバレるとみた。

  • by Anonymous Coward on 2018年03月20日 19時42分 (#3379244)

    Java・.NET Frameworkとかの中間言語系の言語は変数名まで含まれているし、Delphi系とかもクラス名は見えるし、そうでなくても外部公開の関数名とかリソースの文字列もはよめる。
    そこらへんからある程度の傾向はつかめるとは思う。
    でもそうじゃなくて逆コンパイルした結果から特定ってのは凄いね。
    CとかC++の逆コンパイルの結果なんて最適化のせいか逆コンパイルの性能不足かで何やってるかなんて検討もつかないのに。

    • by Anonymous Coward

      >Java・.NET Frameworkとかの中間言語系の言語は変数名まで含まれているし、Delphi系とかもクラス名は見えるし、そうでなくても外部公開の関数名とかリソースの文字列もはよめる。
      >そこらへんからある程度の傾向はつかめるとは思う。

      ゲームのバイナリから「○○ン〇なめたい(コーダの氏名付き)」ってコメントを見つけられたのは
      言語は何だったのでしょうか

      #あれ、これ、ちゆ12歳で知った知識だったような気がする

      • by Anonymous Coward on 2018年03月20日 20時31分 (#3379265)

        「元祖西遊記スーパーモンキー大冒険」でしょうか。
        ファミコン時代のゲームなので言語としてはアセンブリですが、リソース・画像なのであんまり言語は関係ないです。
        exeとかならバイナリエディタやリソースエディタで覗いて、apkとかjarとかならzipとして解凍したら画像が入ってたみたいな感じでしょうかね。

        親コメント
        • by Anonymous Coward

          あの頃は余った領域に変なデータ入ってるゲームよくありましたっけね(今もかな?)

          • by Anonymous Coward

            コメントアウトされた変なコード入ってるWebサイトはよくありますね。

      • by Anonymous Coward

        ネットアイドルちゆは、日本語に堪能なプログラマを応援しています。

      • by Anonymous Coward

        マルウェアの実行ファイルは難読化するだろうから、その辺は忘れていいよ

    • by Anonymous Coward

      GUIDから追跡はできないのかな。

      • by Anonymous Coward

        現状のGUID/UUID v4にはMACアドレスなどは含まれてないので、まぁ、よほど特徴のある乱数を個人で生成しているとかでない限り、難しいというか無理なのでは。

        • by Anonymous Coward

          UUIDv4はGUIDじゃないぞ。

  • by Anonymous Coward on 2018年03月20日 20時21分 (#3379259)

    一応他人のモジュールを含むバイナリも解析できた、と書いてあるが、最近話題になる国家犯罪みたいなレベルのマルウェアだと大量の開発者の手が絡むから、その中の1人1人を解析出来るんだろうか。

  • by Anonymous Coward on 2018年03月21日 2時09分 (#3379407)

    > 特定は不可能と考えられていた

    ほんとかよ。この頃リバースエンジニアリングとかあまりやっていないから少し前の話になるが、GCC 4.8ぐらいのころだと-O2などでも関数の区切りが(インライン展開されないことも当然ままあるので)明瞭であることも多かったし、switch文を使っているか関数ポインタを使っているか、エラー処理にgotoを使っているかどうかなど分かることはたくさんあった。

    マルウェア対策にあたっているような研究機関ならある程度作者を特定するような技術を持っていても不思議じゃないと思う。

    • by Anonymous Coward

      GitHubの様に定量的に観測できる環境が必要だったんだよ

      • by Anonymous Coward

        定量的に観測できることで逆に過学習のリスクが高まった気がします。

        GitHub一強になってしまったので過学習でも実用上問題ないのかもしれません。
        そもそも他のデータソースが少なすぎて過学習かどうかすら評価できないかもしれません。

typodupeerror

Stay hungry, Stay foolish. -- Steven Paul Jobs

読み込み中...