注目★★★★★GitHub Advisory
YesWiki の ActivityPub 署名検証に致命的バイパス、認証なしで任意操作可能
30秒で把握
- 1YesWiki の ActivityPub 署名検証が `-1` エラー値を真と判定し、検証を完全に迂回可能
- 2DSA/EC 鍵と RSA アルゴリズムの組み合わせで確実に再現・公式 Docker イメージを含む多数デプロイ対象
- 3未認証の外部からの ActivityPub メッセージで任意処理が実行される危険・即パッチ導入と過去ログの確認が必須
要約
YesWiki の `HttpSignatureService::verifySignature()` が PHP の `openssl_verify()` の戻り値を不正に扱っており、認証なしで ActivityPub 署名検証を迂回できる。`openssl_verify()` が内部エラーで `-1` を返した場合、PHP の真偽値評価により `!(-1) === false` となり検証例外が発生せず、不正な署名でも `processActivity()` が実行される。DSA/EC 公開鍵に RSA アルゴリズムを指定した場合や旧 PHP/OpenSSL 環境で -1 が返され、YesWiki 公式の Docker イメージを含む多くのデプロイメントが影響を受ける。
あなたへの影響
YesWiki を ActivityPub で公開利用しているチームは。
推奨:即座に本脆弱性の修正パッチを適用し、署名検証周辺のログ (エラーコード、検証失敗) を 1 ヶ月分遡って確認し、不審な activity 処理がないかを調査推奨。