Misskey: APIが違うユーザー扱いになっている

Created on 15 Apr 2019  ·  15Comments  ·  Source: syuilo/misskey

💡 Summary

ハッシュ化したトークンを扱ってAPI操作をすると違うユーザーとしてAPI操作してしまう。

📝 Steps to Reproduce

  1. app/create でアプリを作成
  2. 作成したシークレットキーでセッショントークンを作成 (auth/session/generate)
  3. ブラウザで認証してアクセストークンを発行する(auth/session/userkey) <=ここまでは自分のアカウントだということがわかった
  4. アクセストークンとシークレットキーをsha256化してハッシュ化
  5. ↑のキーを使って何かしらのAPI操作をする
  6. 自分のアカウントではなく他のアカウントとして操作していることになってる

※ノート削除とか一部機能は通じない???

🐛Bug 🔒Security 🧩API

Most helpful comment

今一度脆弱性がないか確認したあとv11を放棄してv12でやり直すのも選択肢の一つかも。(PHP 6 などのような事例)

All 15 comments

その「ほかのアカウント」は常に同じアカウントですか?

その「ほかのアカウント」は常に同じアカウントですか?

どうやらしばらく置いてたりするとアカウントが変わっているようで・・・。

image

ありがとうございます🙏

たぶんどこかのクエリが抜けていて、認証したアカウントではなく常に最新のアカウントを持ってきているように思える

でも見た感じ問題ないので謎

(これは放おっておけない致命的なバグですね・・・。)

一旦リリース消したほうがいいのでは。原因がわからないまま本リリース(非プレリリース)で出したままにしておくのは、脆弱性を把握していない運用者やユーザーを非常に困惑させると思います。

テーブルの定義に問題がありそう

リリースって消せるのかな?

今一度脆弱性がないか確認したあとv11を放棄してv12でやり直すのも選択肢の一つかも。(PHP 6 などのような事例)

とりあえず 11.1.3 で出します

https://github.com/syuilo/misskey/commit/400cdf0f269fc3b035b897e10323371d4c79c751
この変更を適用するのに、スキーマの同期とかマイグレーションは必要になりますかね?

そう考えてます
なのでアクセストークン作成はできなくなってるかもしれないです
どうやって同期させるか考え中です

TypeORM内部の実装に由来する問題だとしたら、もしかしたらスキーマの同期しなくても大丈夫かもしれないですね

Was this page helpful?
0 / 5 - 0 ratings

Related issues

2vg picture 2vg  ·  3Comments

syuilo picture syuilo  ·  3Comments

no-boot-device picture no-boot-device  ·  3Comments

ibrokemypie picture ibrokemypie  ·  3Comments

marek-lach picture marek-lach  ·  3Comments