CVE-2026-48558

CVE-2026-48558

NVD 詳細

概要

CISA Adds One Known Exploited Vulnerability to Catalog (CVE-2026-48558)

脆弱性情報(NVD)

影響を受けるバージョン:

概要(日本語): CVE: CVE-2026-48558
説明: SimpleHelp 5.5.15以前および6.0プレリリース版には、OIDC認証フローにおける認証バイパスの脆弱性が存在します。OIDC認証が設定されている場合、ログイン時に送信されるIDトークンが、その暗号署名を検証されることなく受け入れられます。脆弱な設定においては、認証されていないリモートの攻撃者が、任意のIDクレームを含む偽造トークンを送信することで、完全に認証された技術者セッションを取得する可能性があります。一部の設定では、これにより多要素認証をバイパスされる可能性もあります。ユーザーの操作は不要です。

原文: SimpleHelp versions 5.5.15 and prior and 6.0 pre-release versions contain an authentication bypass vulnerability in the OIDC authentication flow. When OIDC authentication is configured, identity tokens submitted during login are accepted without verifying their cryptographic signature. In a vulnerable configuration, a remote, unauthenticated attacker can submit a forged token containing arbitrary identity claims to obtain a fully authenticated technician session. In some configurations, this may also allow bypass of multi-factor authentication. No user interaction is required.

技術詳細

脆弱性の概要

本脆弱性は、SimpleHelpにおけるOIDC(OpenID Connect)認証フローにおいて、IDトークンの署名検証が欠如していることに起因する認証バイパスです。リモートの認証されていない攻撃者が、任意のクレームを含む偽造されたIDトークンを送信することで、正規の技術者セッションを完全に取得できます。これにより、多要素認証のバイパスも一部の設定で可能になります。

根本原因

OIDC認証が設定されている際、ログインプロセス中にクライアントから送信されるIDトークン(JWT形式)の暗号署名を検証する実装が欠落しているか、不適切に実装されています。サーバーは、トークン内のクレーム(例:sub, iss)を信頼する前に、IdP(Identity Provider)の公開鍵を用いた署名検証やkidヘッダの確認を実施していないと推測されます。この検証ロジックの欠落が根本原因です。

攻撃シナリオ

  1. 攻撃者は、任意のJSONペイロード(管理者権限を持つsubクレームや、amrクレームの省略などを含む)を作成し、ヘッダ、ペイロード、空の署名(またはダミー署名)からなる偽造JWTを生成します。
  2. 攻撃者は、この偽造トークンを通常のOIDC認証フローで使用されるログインエンドポイント(例:/api/oidc/loginなど)にPOSTリクエストで送信します。
  3. SimpleHelpサーバーは、署名を検証せずにトークン内のクレームを受け入れ、攻撃者に対して対象ユーザー(例:technician)としての完全なセッションを発行します。

検出方法

ブラックボックステスト

以下の手順で、OIDC認証エンドポイントに対する直接的なトークン送信を試行します。テストには、偽造した未署名JWTを使用します。

  1. JWTの偽造: 以下のような未署名JWTを生成します(ヘッダーにalg:noneを指定する、または署名を空にします)。
    # 注意: これは攻撃の実証例であり、不正アクセスが許可されていない環境では実行しないでください。
    HEADER=$(echo -n '{"alg":"none","typ":"JWT"}' | base64 -w 0 | tr '/+' '_-' | tr -d '=')
    PAYLOAD=$(echo -n '{"iss":"https://your-idp.example.com","sub":"admin-technician","aud":"simplehelp-client-id","exp":9999999999,"iat":1516239022}' | base64 -w 0 | tr '/+' '_-' | tr -d '=')
    FORGED_JWT="${HEADER}.${PAYLOAD}."
    
  2. リクエストの送信: 特定されたOIDCコールバックエンドポイント、または内部APIエンドポイントに、このトークンを送信します。
    curl -X POST "https://<SimpleHelp-URL>/api/auth/oidc" \
      -H "Content-Type: application/json" \
      -d '{"id_token": "<FORGED_JWT>"}'
    
  3. 確認ポイント: HTTPレスポンスで、成功を示すステータスコード(200 OK)と、技術者セッションを示すセッションCookie(例:SH_SESSION_ID)が返されることを確認します。このCookieを使用して保護された管理画面にアクセス可能か検証します。

ホワイトボックステスト

ソースコード(Javaを想定)において、OIDCトークンを処理する認証フィルターやサービスクラスを確認します。

# OIDC認証処理クラスとJWTライブラリの特定
grep -r "IdToken" /path/to/simplehelp/classes --include="*.java" -l
grep -r "JWTVerifier\|SignedJWT\|JWT\.require\|verifySignature" /path/to/simplehelp/libs --include="*.jar"

対策

恒久的対策

開発元が提供する修正済みバージョンへのアップグレードが唯一の恒久的対策です。本脆弱性はSimpleHelp 5.5.16以降で修正されています。

  1. 公式のアドバイザリ(GHSA-m93h-gjv2-fmq2)およびリリースノートを確認します。
  2. 管理コンソールまたはパッケージマネージャーを通じて、サーバーを修正バージョンに更新します。具体的なアップグレード手順は製品ドキュメントに従います。
    # アップグレードコマンドの例(製品のマニュアルに従ってください)
    # sudo systemctl stop simplehelp
    # sudo dpkg -i simplehelp_5.5.16_amd64.deb
    # sudo systemctl start simplehelp
    

暫定対策

パッチが直ちに適用できない場合、以下の回避策を実施することでリスクを軽減できる可能性があります。

  1. OIDC認証の無効化: 管理設定からOIDC認証方式を一時的に無効化し、組み込み認証などの代替手段を使用します。
  2. ネットワークレベルでのアクセス制御: ファイアウォールやリバースプロキシ(Nginx, Apache)を用いて、SimpleHelpのログインエンドポイント(例:/api/auth/, /login)へのアクセスを、信頼できるIPアドレス範囲に厳密に制限します。
  3. WAFルールの適用: Web Application Firewall(WAF)で、id_tokenパラメータにalg: "none"を含むリクエストや、異常に短いJWT(署名部が空)を検知・ブロックするカスタムルールを展開します。

VulnCheck KEV

PoC / Exploit

悪用事例

参考リンク

言及日