CVE-2026-46556
Python 脆弱性の分析と軽減

概要

CVE-2026-46556 is a Server-Side Request Forgery (SSRF) vulnerability in FlaskBB's get_image_info() function, triggered via an unrestricted avatar URL input. It affects all versions of FlaskBB up to and including 2.2.0, and allows any authenticated user to force the server to issue arbitrary HTTP requests to internal endpoints, including cloud metadata services such as AWS IMDSv1 (169.254.169.254). The vulnerability was published on May 19, 2026, and added to the GitHub Advisory Database on May 21, 2026. It carries a CVSS v3.1 base score of 6.5 (Medium) (GitHub Advisory, FlaskBB Advisory).

技術的な詳細

The root cause is CWE-918 (Server-Side Request Forgery): in flaskbb/utils/helpers.py at line 571, the url parameter supplied by the user is passed directly to requests.get(url, stream=True) without any validation of scheme, host, or IP address. The attack chain begins when an authenticated user submits a malicious URL as their avatar via POST /user/settings/user-details; this triggers ValidateAvatarURL.validate() in validators.py:103, which calls check_image() in helpers.py:628, which in turn calls get_image_info(url) — ultimately issuing an unrestricted outbound HTTP GET request. Three exploitation channels are confirmed: direct server-side requests to internal endpoints, internal port scanning via distinct error codes (CONN_REFUSED, NO_CONTENT_LENGTH, TYPE_NOT_ALLOWED, SUCCESS), and triggering of internal APIs (e.g., Elasticsearch on 127.0.0.1:9200). A proof-of-concept archive (submit.zip) has been publicly released (GitHub Advisory, FlaskBB Advisory).

影響

Successful exploitation primarily impacts confidentiality (CVSS Confidentiality: High), with no direct integrity or availability impact. Any authenticated FlaskBB user can leverage this vulnerability to exfiltrate cloud IAM credentials from metadata services (AWS, GCP, Azure), map internal network topology via port scanning, and interact with unauthenticated internal services such as Elasticsearch, etcd, Consul, or CI/CD webhook endpoints. On cloud-hosted deployments, leaked IAM credentials could enable lateral movement to other cloud resources and services beyond the FlaskBB instance itself (GitHub Advisory, FlaskBB Advisory).

エクスプロイテーションのステップ

  1. Obtain authenticated access: Register or log in to a FlaskBB instance running version ≤ 2.2.0 with any standard user account.
  2. Navigate to the avatar settings: Go to Settings → User Details (endpoint: POST /user/settings/user-details).
  3. Inject a malicious URL: In the avatar URL field, enter an internal target such as http://169.254.169.254/latest/meta-data/ (AWS IMDSv1) or http://127.0.0.1:9200/_cat/indices (Elasticsearch).
  4. Submit the form: The server processes the avatar URL through ValidateAvatarURL.validate()check_image()get_image_info()requests.get(url), issuing a GET request to the attacker-specified internal endpoint.
  5. Infer internal topology via error codes: Observe distinct response behaviors (CONN_REFUSED, NO_CONTENT_LENGTH, TYPE_NOT_ALLOWED, SUCCESS) to map open ports and reachable services on the internal network.
  6. Exfiltrate cloud credentials: If the server is hosted on AWS/GCP/Azure, the metadata endpoint returns IAM role credentials, which can be used to authenticate to cloud APIs for lateral movement (GitHub Advisory, FlaskBB Advisory).

妥協の兆候

  • Network: Outbound HTTP GET requests from the FlaskBB server process to 169.254.169.254, 169.254.170.2, metadata.google.internal, or 169.254.169.254 (cloud metadata IPs); connections to loopback (127.0.0.1) or RFC-1918 addresses on non-standard ports (e.g., 9200, 2379, 8500).
  • Logs: Web server access logs showing POST /user/settings/user-details or POST /admin/users/<id>/edit with avatar URL values containing internal IP ranges or metadata service hostnames; application logs showing requests.get() calls to internal addresses.
  • Application Behavior: Repeated avatar URL submissions with varying IP addresses or port numbers in rapid succession, consistent with automated internal port scanning; error patterns in FlaskBB logs matching CONN_REFUSED or TYPE_NOT_ALLOWED for internal hosts.

軽減策と回避策

As of the advisory publication date (May 21, 2026), no patched version of FlaskBB has been released — the advisory lists "None" for patched versions, and all versions ≤ 2.2.0 are affected. Administrators should implement the following mitigations until an official patch is available: (1) restrict outbound HTTP requests from the FlaskBB server using firewall rules or egress filtering to block access to RFC-1918 addresses and cloud metadata IPs (169.254.169.254); (2) deploy an SSRF-aware proxy (e.g., using ssrf-proxy or network-level controls) to intercept and validate outbound requests; (3) consider disabling avatar URL functionality if not required. Monitor the FlaskBB repository for patch releases (GitHub Advisory, FlaskBB Advisory).

コミュニティの反応

The vulnerability was reported by three researchers: woohyunchoi-kentech, programsurf, and yoonsh, and was published by the FlaskBB maintainer (sh4nks) via GitHub's security advisory process. A Loginsoft blog post on Medium referenced the vulnerability in the context of expanding enterprise attack surfaces from trusted software (Loginsoft Medium). No broader media coverage or significant social media discussion has been identified beyond the advisory and aggregator listings.

関連情報


ソースこのレポートは AI を使用して生成されました

関連 Python 脆弱 性:

CVE 識別子

重大度

スコア

テクノロジー

コンポーネント名

CISA KEV エクスプロイト

修正あり

公開日

CVE-2026-47708CRITICAL9.3
  • Python logoPython
  • stata-mcp
いいえはいJul 21, 2026
CVE-2026-47731CRITICAL9.1
  • Python logoPython
  • ait-core
いいえはいJul 21, 2026
CVE-2026-63764HIGH7.7
  • Python logoPython
  • lmdeploy
いいえいいえJul 21, 2026
GHSA-rwj8-pgh3-r573HIGH7.5
  • Python logoPython
  • gitpython
いいえはいJul 21, 2026
CVE-2026-46556MEDIUM6.5
  • Python logoPython
  • flaskbb
いいえいいえJul 21, 2026

無料の脆弱性評価

クラウドセキュリティポスチャーのベンチマーク

9つのセキュリティドメインにわたるクラウドセキュリティプラクティスを評価して、リスクレベルをベンチマークし、防御のギャップを特定します。

評価を依頼する

パーソナライズされたデモを見る

実際に Wiz を見てみませんか?​

"私が今まで見た中で最高のユーザーエクスペリエンスは、クラウドワークロードを完全に可視化します。"
デビッド・エストリックCISO (最高情報責任者)
"Wiz を使えば、クラウド環境で何が起こっているかを 1 つの画面で確認することができます"
アダム・フレッチャーチーフ・セキュリティ・オフィサー
"Wizが何かを重要視した場合、それは実際に重要であることを私たちは知っています。"
グレッグ・ポニャトフスキ脅威および脆弱性管理責任者