Asayomu Tech
注目★★★★★GitHub Advisory

Dulwich checkout に任意ファイル書き込み、Symlink 経由で RCE

30秒で把握

  • 1Dulwich checkout(paths=[]) が symlink 経由の任意ファイル書き込みを許可
  • 2raw os.open() が O_NOFOLLOW なしで対象と中間ディレクトリを追従
  • 3.git/hooks/post-checkout 書き換えにより次回 checkout で RCE

要約

Dulwich の porcelain.checkout(paths=[...]) が symlink 保護を迂回し、攻撃者が任意のファイルへ内容を書き込める脆弱性が判明した。raw os.open() が対象ファイルと中間ディレクトリの symlink を追従し、ユーザー権限でアクセスできる場所を上書きする。.git/hooks/post-checkout に悪意ある内容を書けば、次回の checkout で RCE に至る。原因はパス名だけを検証する _checked_worktree_path() と、O_NOFOLLOW を指定しない os.open() の組み合わせにある。

あなたへの影響

Dulwich で checkout(paths=[...]) を使う日本の開発チームは、修正版の有無を確認するまで不審なリポジトリの checkout を避け、フックファイルの変更を監視してください。

推奨:symlink write-through は、リンク先へ意図せず書き込む問題です。

詳細を読む → 元記事へ※ 本文は元記事をご確認ください (asayomu は要約のみ提供)

関連する記事

※ 外部記事の権利は原著作者に帰属します。著作権削除要請は copyright@asayomu.jp までご連絡ください(受領確認 24h・実処理 72h 以内)。