rvagg / rvagg/github-webhook-handler

X-Hub-Signature does not match blob signature

オープン
#45 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

主要言語
JavaScript
スター
793
フォーク
121
PR マージ指標
30日以内にマージされた PR はありません

説明

using my own function works but it crash with github-webhook-handler:

    const createComparisonSignature = (body) => {
      const hmac = crypto.createHmac('sha1', process.env.GITHUB_SECRET);
      const self_signature = hmac.update(JSON.stringify(body)).digest('hex');
      return `sha1=${self_signature}`; // shape in GitHub header
    }
    const compareSignatures = (signature, comparison_signature) => {
      const source = Buffer.from(signature);
      const comparison = Buffer.from(comparison_signature);
      return crypto.timingSafeEqual(source, comparison); // constant time comparison
    }
    const { headers, body } = req;
    const signature = headers['x-hub-signature'];
    const comparison_signature = createComparisonSignature(req.body);
    if (!compareSignatures(signature, comparison_signature)) {
      return res.status(401).send('Mismatched signatures');
    } else {
      console.log("signature match")
      const { action, ...payload } = body;
      req.event_type = headers['x-github-event']; // one of: https://developer.github.com/v3/activity/events/types/ 
      req.action = action;
      req.payload = payload;
      next();
    }
    return next()

please let me know if there is any solution

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

issue ではソースファイルもテストも指定されていません。まず github-webhook-handler が req.body をどのように受け取り、解析しているかを追跡し、次に署名検証に使用されるバイト列を元のリクエストボディと比較してください。報告された不一致がなく、有効な X-Hub-Signature が一貫して検証できれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
javascript, node.js
領域
api, backend
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。