Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-93349-frictionless-command-injection — CVE-2026-93349の概念実証。Frictionless <= 5.20.0rc1のexplore CLIにおけるOSコマンドインジェクションで、悪意あるData Package記述子パスを介して発生する。 | Kitploit
ツール/GitHubGitHub/saiteja-erukude/cve-2026-93349-frictionless-command-injection
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストコマンド&コントロール学習と教育
GitHubsaiteja-erukude/cve-2026-93349-frictionless-command-injection

CVE-2026-93349-frictionless-command-injection

CVE-2026-93349の概念実証。Frictionless <= 5.20.0rc1のexplore CLIにおけるOSコマンドインジェクションで、悪意あるData Package記述子パスを介して発生する。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-93349: Frictionless <= 5.20.0rc1 explore における OS コマンドインジェクション

深刻度: 高、CVSS 3.1 8.8

ベクター: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H

影響を受けるバージョン: すべての Frictionless バージョン <= 5.20.0rc1

コンポーネント: frictionless.console.commands.explore

CWE: CWE-78 (OS コマンドインジェクション)、CWE-20 (不適切な入力検証)

報告者: Sai Teja Erukude


概要

Frictionless の 5.20.0rc1 プレリリースまでのバージョンには、 frictionless explore CLI コマンドにおける OS コマンドインジェクションの脆弱性が存在します。

このコマンドは、ユーザーが指定した Data Package ディスクリプタを読み込み、リソースパスを収集し、 resource.normpath を導出し、それらのパスを単一のコマンド文字列に結合し、 その文字列を直接 に渡します:

os.system
root@kitploit:~
paths = [resource.normpath for resource in resources if resource.normpath]
os.system(f"vd {' '.join(paths)}")

resources[*].path は datapackage.json からのディスクリプタ制御されたメタデータであるため、 攻撃者はリソースパスにシェルのメタ文字を含めることができます。被害者が悪意のあるディスクリプタに対して frictionless explore を実行すると、シェルがそれらのメタ文字を解釈し、注入されたコマンドを実行します。

影響

攻撃者は、frictionless explore を実行しているユーザーのセキュリティコンテキストで任意のコマンドを実行できる可能性があります。

これは、信頼できないプロジェクト、アーカイブ、リポジトリ、または共有データセットから Data Package ディスクリプタを検査、検証、または探索するワークフローに影響を与える可能性があります。

ローカル環境によっては、以下が可能になる場合があります:

  • ユーザーがアクセスできるファイルの読み取りまたは変更。
  • 環境変数およびアプリケーションシークレットへのアクセス。
  • ローカルプログラムまたはスクリプトの実行。
  • データ分析または自動化ワークフローの妨害。

技術的詳細

脆弱なパスは explore コマンドです:

root@kitploit:~
frictionless explore <package>
  -> Package.from_descriptor(...)
  -> Resource.list()
  -> resource.normpath
  -> os.system(f"vd {' '.join(paths)}")

PoC は、resources[0].path に無害なマーカーファイル書き込みペイロードを含む Data Package ディスクリプタを生成します。

Windows では、生成されるパスは & コマンド区切り文字を使用します:

root@kitploit:~
data.csv & echo frictionless_explore_command_injection_triggered>"...\marker.txt" & rem

POSIX システムでは、生成されるパスはセミコロンのコマンド区切り文字を使用します:

root@kitploit:~
data.csv; printf %s frictionless_explore_command_injection_triggered > .../marker.txt; #

ランナーは、インストールされたパッケージから実際の frictionless explore コマンドを呼び出します。 意図された vd ビューアが対話的に起動しないように、子プロセスの PATH をクリアしますが、 シェルが構築されたコマンド文字列を解析する際に、注入されたコマンドは依然として実行されます。

概念実証

package_builder.py は、攻撃者が制御する Data Package ディスクリプタと無害な CSV ファイルを作成します。

run_poc.py はディスクリプタを検証し、frictionless explore を呼び出し、 実行の証拠を出力します。

ローカルのテスト環境でのみ実行してください:

root@kitploit:~
python -m venv .venv
.venv\Scripts\activate
python -m pip install -r requirements.txt
python -B run_poc.py

含まれている requirements.txt は frictionless==5.20.0rc1 を固定しており、この範囲で 確認されている最新の脆弱なプレリリースです。

脆弱なバージョンで期待される証拠:

root@kitploit:~
frictionless_version        : 5.20.0rc1
installed_package           : True
descriptor_valid            : True
listed_resource_count       : 1
raw_path_contains_payload   : True
normpath_contains_payload   : True
explore_returncode          : 0
viewer_launch_disabled      : True
marker_exists               : True
marker_contents
frictionless_explore_command_injection_triggered
success                     : True

重要な証拠は、悪意のあるディスクリプタが有効であり、ディスクリプタ制御されたパスが resource.normpath にまで残り、frictionless explore の実行後に marker.txt が 作成されることです。

ペイロードは意図的に無害です。以下のローカルマーカー文字列を書き込むだけです:

root@kitploit:~
frictionless_explore_command_injection_triggered

シェルセッションを起動したり、ネットワークサービスに接続したり、シークレットを読み取ったり、 データを削除したり、PoC ディレクトリ外のファイルを変更したりすることはありません。

修復

ディスクリプタ制御されたパスをシェルに渡すことを避けてください。

シェルベースの呼び出しを、引数ベクトルを使用する subprocess.run に置き換えてください:

root@kitploit:~
subprocess.run(["vd", *paths], check=False)

これは各リソースパスをリテラル引数として vd に渡します。パス内のシェルメタ文字は、 その単一の argv エントリ内では通常の文字のままであり、実行されません。

特定のパス文字をブラックリストに登録する方法は、シェル構文がプラットフォームやシェルによって 異なるため、より弱い対策です。コマンド呼び出しの境界が根本原因であるため、恒久的な修正では シェルによる解釈を避けるべきです。

推奨されるパッチについては fix.md を参照してください。

クレジット

Sai Teja Erukude によって発見および報告され、VulnCheck を通じて調整されました。

参考資料

  • CVE レコード: https://www.cve.org/CVERecord?id=CVE-2026-93349
  • アップストリーム修正 PR: https://github.com/frictionlessdata/frictionless-py/pull/1820
  • Frictionless リポジトリ: https://github.com/frictionlessdata/frictionless-py
  • CWE-78: https://cwe.mitre.org/data/definitions/78.html
  • CWE-20: https://cwe.mitre.org/data/definitions/20.html
  • ローカルウォークスルー: exploit_walkthrough.md
  • 推奨される修正: fix.md
ツールをダウンロード