
CVE ID: CVE-2025-65899
製品: DifuseHQ Kalmia CMS
影響を受けるバージョン: 0.2.0
脆弱性タイプ: Observable Response Discrepancy(観測可能なレスポンスの相違)
必要な権限: なし
認証されていない攻撃者が有効なユーザー名を列挙でき、標的型のパスワードスプレー攻撃、クレデンシャルスタッフィング、アカウント発見攻撃を可能にします。
メンテナーの承認待ち - https://github.com/DifuseHQ/Kalmia/pull/34
Kalmia CMS バージョン 0.2.0 には、認証メカニズムにユーザー列挙の脆弱性が存在します。このアプリケーションは、無効なユーザー(user_not_found)と、パスワードが誤った有効なユーザー(invalid_password)に対して異なるエラーメッセージを返します。この観測可能なレスポンスの相違により、認証されていない攻撃者がシステム上の有効なユーザー名を列挙でき、その後のパスワードスプレー攻撃やソーシャルエンジニアリングなどの標的型攻撃に悪用される可能性があります。
/kal-api/auth/jwt/create認証システムは一貫したエラーレスポンスを実装しておらず、異なるエラーメッセージを通じてユーザーアカウントの存在に関する情報を漏えいします:
{"message": "user_not_found"} を返す{"message": "invalid_password"} を返すこのレスポンスの違いにより、攻撃者は存在しないユーザーアカウントと有効なユーザーアカウントを区別できます。
攻撃者は存在しないユーザー名で認証を試み、サーバーが User not found を返すレスポンスを確認します。
Burp Suite を使用して認証リクエストを傍受・解析し、攻撃者は無効なユーザー名に対してサーバーが user_not_found を返すことを確認します。これは、そのユーザーがシステムに存在しないことを示しています。
有効なユーザー名と誤ったパスワードでテストすると、Burp Suite は invalid_password を示すサーバーレスポンスを取得し、そのユーザー名がシステムに存在することを確認します。
バックエンドの認証ロジックを解析すると、異なるエラーメッセージを返す欠陥のある実装が明らかになります:
user_not_found を返すinvalid_password を返すこの順次検証プロセスが、ユーザー列挙を可能にする観測可能な相違を生み出します。
cve-2025-65899.py スクリプトはユーザー列挙プロセスを自動化します:
python cve-2025-65899.py <TARGET_URL> [OPTIONS]
url: 対象の Kalmia CMS ベース URL(必須)-u, --user: テストする単一のユーザー名-p, --password: テストに使用するパスワード(必須)-w, --wordlist: 大量ユーザー列挙用のワードリストファイル# Test if specific user exists
python cve-2025-65899.py http://target.com:2727 -u admin -p wrongpass
# Results:
# [+] Valid user: admin (if user exists)
# OR
# (no output if user doesn't exist)
# Enumerate users from wordlist
python cve-2025-65899.py http://target.com:2727 -w users.txt -p wrongpass
# Create a simple wordlist
echo -e "admin\nuser\nadministrator\ntest\nguest" > users.txt
免責事項: この情報は教育および防御目的でのみ提供されます。システムをテストする前に適切な許可を得ていることを確認する責任は利用者にあります。