apache / apache/cloudstack

DUO Authenticator returns a different number than Google and Microsoft for CloudStack's TOTP.

オープン
#11,776 コメント 3 件 リアクション 0 件 担当者 0 名 GitHub で見る
status:needs-functional-definition
主要言語
Java
スター
3.1k
フォーク
1.4k
平均マージ
6日 19時間
マージ済み PR(30日)
32

説明

### problem

The title mentions DUO Authenticator because I want to stay consistent with the issue I already reported in DUO Security’s GitHub.

The problem occurs when setting up TOTP 2FA for a user in CloudStack. The QR code and seed work correctly in Google Authenticator, Microsoft Authenticator, and my password manager. However, DUO Authenticator generates the wrong rolling PIN (it looks out of sync).

Since the same QR code/seed works in four other apps, I believe this is a bug in DUO Authenticator. Still, since DUO is widely used as an enterprise-grade app, I wonder if CloudStack might be missing some information DUO needs when generating the TOTP.

Below are some sample TOTPs for a test user.

Revealing the Seed : LGV3KCWF3AFZKYB4MWSZBH3R6YWBINJI
QRCode content: otpauth://totp/Company:username?secret=LGV3KCWF3AFZKYB4MWSZBH3R6YWBINJI&issuer=Company

Revealing the Seed : 3JLPXCKBHYR3CHE73T7FNGBS5CDMQRBG
QRCode content: otpauth://totp/Company:username?secret=3JLPXCKBHYR3CHE73T7FNGBS5CDMQRBG&issuer=Company

### versions

ACS 4.20.1

### The steps to reproduce the bug

Setup TOTP on DUO and another app and compare the rolling PIN.

### What to do about it?

Maybe there are optional parameters that can be provided to the Authenticator app while scanning the QRCode that would inform some missing parameters that it fails to assume.

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

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

調査の方向性

まず、提供された otpauth QR コードの内容と記載されている ACS 4.20.1 バージョンを使って不一致を再現し、DUO と他の認証器を比較します。次に、CloudStack の TOTP セットアップと QR コード生成を追跡し、必須パラメーターが欠落しているのか、それとも非互換性が DUO にあるのかを判断します。責任のある側を特定し、確認された動作を文書化またはテストできれば完了です。

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

評価

技術スタック
java
領域
authentication
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
静か
明瞭さ
説明が足りない
初心者へのやさしさ
35/100

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

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