gitの脆弱性のアレを作ってみた

先日私が運営メンバーとして参加してるIT勉強会「ssmjp」の100回記念のイベントがありました!
人生で初めてLTをしたのがこの勉強会で、私は途中から参加という形でかれこれ3年ほど運営をやっていますが、たった3年だけど色々な出来事や出会いがあったなあーと振り返っていました。
今後ともご参加いただける皆様が楽しいと思っていただけるイベントを開催していきたいと思っていますのでよろしくお願いいたします。  

さて、そのイベントの小ネタとして、今回「gitの脆弱性のアレ」を作ってみたので、折角なのでちょっとこのブログでご紹介いたします。
(もうネタとしては正直かなり遅い感じはありますが…w)  

Gitの脆弱性(CVE-2017-1000117)とは

GitでのsshURLハンドリングにshellコマンドインジェクションの欠陥が存在し、細工されたレポジトリに対してGitクライアントでcloneアクションを実行した場合に、Gitクライアントを実行したユーザの権限でshellコマンドが実行されてしまうという脆弱性です。

なお、対策としてはGitのアップグレードで、Version 2.14.1以上では対策されています。

参考
CVE-2017-1000117 - Red Hat Customer Portal
Compromise On Checkout - Vulnerabilities in SCM Tools · The Recurity Lablog

例のアレ

さて、皆さんご存知かと思いますが、上記の脆弱性をチェックするためのユニークなリポジトリが公開されて話題になりましたねw

GitHub - greymd/CVE-2017-1000117: Check Git's vulnerability CVE-2017-1000117

こちらのリポジトリの中身を見てみるとsubmoduleに以下のように細工がしてあり、脆弱なgitクライアントにてrecursiveオプション付きでgit cloneすると、fileに記載された内容がshellコマンドとして実行されるようになっているのがわかります。
shellコマンドが実行されると例のアレがターミナルに表示されるわけですw

[submodule "morimori"]
    path = morimori
    url = ssh://-oProxyCommand=sh<file /morimori

このリポジトリは非常に面白くて、他にも色々な方がインスパイアした作品を公開されていました。 GitHub - sasairc/CVE-2017-1000117_wasawasa
GitHub - takehaya/CVE-2017-1000117
GitHub - shogo82148/Fix-CVE-2017-1000117

またノリと勢いで作ってみた

面白くて私もこれらのリポジトリで色々遊んでいたのですが、とある知り合いのエンジニアの方から「tigerszkさんもあのやる夫のAA(※)使って作ってみればいいじゃないですかw」と言われたので、あー面白そうだなあと思い、勉強がてら丁度いいから100回記念イベントの小ネタに作ってしまおうと、今回もノリとその場の勢いで作ってみました。
※昨年末のとあるLTにてノリとその場の勢いでやる夫のAAを制作しました。
ノリとその場の勢いでPocを作った話

そんな経緯にて、先日のssmjpで公開した100回のお祝いメッセージとして作ってみたのがこちらですw

GitHub - tigerszk/ssmjp-100th-message

f:id:tigerszk:20170829135528g:plain

togakushiさんにご助力いただき、ランダムで色が変わって徐々に表示するようなシェルコマンドを実行するようになっています。宜しければ遊んでみてくださいw