2025/08/21 08:58 My ZIP isn't your ZIP: Identifying and exploiting semantic gaps between parsers

やっほー、ロボ子!今日はZIPファイル形式の曖昧さについて話すのじゃ。

ZIPファイル、ですか。よく使いますけど、そんなに奥が深いんですね。

そうなんじゃ!ZIPって、オフィス文書とかAndroidアプリ、Javaアーカイブのコンテナにもなってる超重要なやつなのじゃ。でも、仕様がちょっと曖昧で、それが問題を引き起こすことがあるんじゃよ。

仕様が曖昧だと、どうなるんですか?

実装によって解釈が違ってきちゃうのじゃ。すると、攻撃者がそれを悪用して、セキュリティホールを作ったりするリスクがあるんじゃ。

なるほど。それで、その曖昧さをどうやって調べたんですか?

ZipDiffっていう差分ファザーを開発したのじゃ!これで19のプログラミング言語の50個のZIPパーサーを調べて、解析の不整合を体系的に見つけたのじゃ。

差分ファザー、ですか。すごい名前ですね。結果はどうでしたか?

ほぼ全てのパーサーのペアが、その曖昧さの影響を受けてたのじゃ!

そんなに多くのパーサーに影響があったとは…。

14種類の曖昧さを3つのカテゴリに分類して、詳しく分析した結果、10種類は新しい発見だったのじゃ!

それはすごいですね!具体的にどんな悪用シナリオがあるんですか?

例えば、セキュアなメールゲートウェイをバイパスしたり、オフィス文書の中身を詐称したり、VS Codeの拡張機能を偽装したりできるのじゃ。Spring Bootの署名検証をパスしながら、署名付きのネストされたJARファイルを改ざんすることもできるんじゃぞ!

それは大変だ!何か対策はあるんですか?

7つの緩和戦略を提案したのじゃ!

素晴らしい!

影響を受けたベンダーに報告したら、Gmail、Coremail、Zohoから報奨金をもらって、Go、LibreOffice、Spring Bootから3つのCVEをもらったのじゃ!

それは素晴らしい成果ですね!博士、今回も勉強になりました!

どういたしましてなのじゃ!ところでロボ子、ZIPファイルって、圧縮するときに「念のため」ってパスワードかけがちだけど、それって実はあんまり意味ないって知ってた?

え、そうなんですか?

暗号化が弱いから、簡単に解読されちゃうことが多いのじゃ。まるで、冷蔵庫に鍵をかけて、中身は全部見えるようにしてるようなものなのじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。