bash ゼロデイ脆弱性(だと思ってた)を知った後の心の機微

これは、ひょんなことから、bash ゼロデイ脆弱性(だと思ってた)を知ってしまった私の心の動揺に関する記録
Added by kanata over 5 years ago

これは、ひょんなことから、bash ゼロデイ脆弱性(だと思ってた)を知ってしまった私の心の動揺に関する記録

長いです

2019/4/6 yamayaさんオーパーツ投下

yamaya(@yamaya)さんが驚愕のオーパーツを投下する。これは、現在の人類では生み出せない未知のテクノロジーが詰まっていた。
ワイ「読めないすごいwww」ということだけは瞬時にわかり、これは解読するには本腰を入れないといけないと腹を括り、自分のあとで解読するメモに追加した。

この時は2019/4/14に開催される技術書典6に関わる準備などで忙殺されており、すぐ解読したいのをこらえた(この時は体が4~5体必要だと思っていた)

なぜかフィボナッチ数列が出力される

なぜかシェルピンスキーのギャスケットが出力される

ちなみに私はシェル芸ピンスキーのギャスケットの方をまだ解読していない。

2019/4/6 ぐれさんの解読

ぐれさん(@grethlen)解読記事を公開。バスる。
とてもわかりやすく解説していらっしゃるので、興味のある方は是非。私もこれで構造については理解できた。

ここで未知のテクノロジーが紐解かれるが、この時、あんなことになるとは思いもしなかったのであった。。(フラグ)

yamayaさんの難読化シェル芸(フィボナッチ数列) 解説
https://gist.github.com/greymd/455a13bb6f757c5ccd00bfb155d525e2

これは本当に心からそう思っており、仮に私が自由な時間を10年ぐらい貰ったとしても、同じものを作れる気がしない。この境地に辿り着けるイメージが全くわかない(驚嘆)

2019/4/12 脆弱性(だと思ってた)発覚

ぐれさんから、yamayaさんがbashの脆弱性を見つけたので、例のオーパーツには触れないよう(解説記事などを公開しなよう)とご連絡を頂く。
私は、後で解読すると公言していたので、気を使って連絡して頂いたようだ。

あのオーパーツに触れると脆弱性の秘密が発見されるリスクがあるというのだ(ΩΩΩ<な、なんだってー!? )
パンドラの箱に触れてはいけない…

この謎を解明するべく我々スタッフ一同はアマゾンの奥地へ飛ぶこともなく、
なるほど、了解しました。自重しますと冷静に返答することもできず、溢れ出る興奮を隠しきれずハイテンションで「うっほおおおおお自重しますwwwwwww」となってしまった。大丈夫かコイツという一抹の不安を与えてしまった事は否めない。

ここは強めに言っておきますが、普段「うんこうんこ」と言っているシェル芸人でも、こういうことはちゃんと守る。ちゃんと守りますうんこ。

あとすいません、不謹慎に興奮してしまいました。bashのメンテナさんはリスペクトしています。

ちなみに、POCは以下である。

POC

整数型を宣言してる変数に外部から文字列を食わせることで任意の算術式を実行させられるというもの。任意の算術式なので、もちろんコマンドも注入できる。

$ echo '_[$(whoami >&2)]' | bash -c 'declare -i x; read x'

これを最初に見た私の気持ちは「わからんわwwwwwwwww」であった。
どうしてこれで、コマンドが実行されるのかわからなすぎて笑った。

あとやべーなやっぱり。バックエンドでbash動いているシステムはけっこう危険。

脆弱性に名前つかないかな

このあと、興奮冷めやらず、CVE番号振られるだろうな~、あ、Shellshockみたいに名前つかないかな~。UNKOにならないかな~

UNdocument Killing Obfuscated ──UNKO

こんな感じだな、よし満足したwとやっていた。頭おかしい。

セキュリティ好きなので、自らの手でCVE番号を取得するのが夢だったりします。

2019/4/14 技術書典6

とまぁ、この脆弱性の連絡を頂いたのが技術書典6のなんと2日前である。こういう大イベントは意外と重なりがち。
技術書典はもぅ頒布する側としての参加は初めてでもあったので、すごく楽しかった。

と、同時にbashのゼロデイ脆弱性(だと思ってた)を知っているという甘美な秘密(すいません)を抱えながら参加することになった。いい経験だった。

脆弱性が家にあると、ちょっと嫌なことがあっても「まあ家に帰れば脆弱性あるしな」ってなるし仕事でむかつく人に会っても「そんな口きいていいのか?私は自宅で脆弱性とよろしくやってる身だぞ」ってなれる。戦闘力を求められる現代社会において脆弱性と同棲することは有効

ただし、この脆弱性について私は1ミリも貢献していない。

あ、よかったらポチっとお願いします。

2019/9/2 ご回答があった

yamayaさんが、以下を投稿される。大変にわかり味がある。

どさにっき

使ってる人がいちばん多いだろうからタイトルでは bash としてるけど、ここで取り上げることは zsh および ksh 一族(本家 ksh、pdksh、mksh)にも該当する。ash、dash などでは該当しない。...

結論は、yamayaさんの投稿から引用させて頂くと、以下であった。

「スクリプトを書く人が対処すべき問題であってシェルそのものの問題ではない」との回答

私個人としては、bashに対して恨みはないどころか毎日使わせて頂いて本当にありがとうございます。
なので、仕様であれば仕様であると、とりあえず受け入れることにした。

ここらへん各言語に裁量があって、開発効率とのトレードオフになっていると理解している。
例えばPHPは注意してコーディングしないと脆弱性を生みやすい(偏見かも)んだけど、PHPがなければWordPressは生まれなかったと開発者の方が述べている。

そして、いま書いているこの日記のようなものを公開するタイミングを考え出す。変に煽ってないだろうか、コードを1行追加するのだって簡単じゃない場合が沢山あるのを知っている。業務のバッチ処理に影響がでるかもしれない、と、若干気を揉んで、しかし最大のリスクは、この挙動を知らないままでいることだと思い、早々に公開することを決めた。(ままま、この記事どれだけの人が見るんだというのはあるけれど)

あと、ぐれさん解説してくれるかもしれないので、これも期待

その後

  • 4月以降、本当に難読化シェル芸が激増した
  • 変態が情報発信すると変態(褒め言葉です)が集まるという事がわかった
  • まれに戦闘力54万の方が現れる
  • それによりシンギュラリティが起きて技術が進歩する
  • 副産物で脆弱性が発見されることがるというのがわかった(シェル芸botは有志で随時脆弱性対応されていて、大変に強固になっています)

Comments

Add picture from clipboard (Maximum size: 100 MB)