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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-14871 — osTicketのajax.tickets.phpにおけるBOLA/IDOR脆弱性 | 責任ある開示 | Kitploit
ツール/GitHubGitHub/jfoz1010/cve-2026-14871
脆弱性分析エクスプロイトウェブアプリケーション悪用情報収集ペネトレーションテスト学習と教育
GitHubjfoz1010/cve-2026-14871

CVE-2026-14871

osTicketのajax.tickets.phpにおけるBOLA/IDOR脆弱性 | 責任ある開示

リポジトリを見る
1ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-14871 - osTicketのajax.tickets.phpにおけるBOLA / IDOR

壊れたオブジェクトレベル認可(BOLA): 安全でない直接オブジェクト参照(IDOR)
include/ajax.tickets.php → viewField() 関数
@JF0x0r 氏による報告 · 2026年3月27日 ステータス: 修正済み - osTicket v1.17.8 / v1.18.4 で修正版リリース


概要

項目詳細
脆弱性BOLA / IDOR(壊れたオブジェクトレベル認可)
対象osTicket v1.18-git - コミット 2570d69
コンポーネントinclude/ajax.tickets.php
関数viewField() - 805〜806行
エンドポイントGET /scp/ajax.php/tickets/{ticket_id}/field/{field_id}/view
CVSS 4.0スコア8.2 HIGH - AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N
CWECWE-862(認可の欠如)、CWE-639(ユーザー制御キーによる認証バイパス)
ステータス✅ 修正済み — osTicket v1.17.8 および v1.18.4 で修正

自己紹介

私はJuan Felipe Oz(@JF0x0r)です。オープンソースセキュリティに情熱を注ぐセキュリティ研究者です。バウンティのためにこの活動をしているのではなく、人々が依存するツールは安全であるべきだと信じているからです。何かを見つけたときは、責任を持って報告し、適切に文書化し、修正がリリースされた後に公開しています。


発見した内容

osTicketのAJAXサブシステムを手動でコードレビューしていたとき、ajax.tickets.phpに何か異常があることに気付きました。viewField()関数はチケットフィールドデータを表示するリクエストを処理します。チケットオブジェクトの取得とフィールドの存在確認は行いますが、リクエストを行ったエージェントが実際にそのチケットへのアクセス権限を持っているかを決してチェックしていません。

checkStaffPerm()の呼び出しなし。部署の検証なし。何もありません。

つまり、認証されたエージェントであれば誰でも、たとえ単一の部署に厳密に制限されているエージェントでも、ticket_idとfield_idを知っているか推測するだけで、システム内の他のどの部署のチケットフィールドでも読み取ることができます。これらは連続する整数のため、列挙は簡単です。

この問題を特に明確にしているのは、同じファイル内のすぐ上にある姉妹関数editField()との比較です。editField()は$ticket->checkStaffPerm($thisstaff, Ticket::PERM_EDIT)を正しく呼び出し、違反時にはHTTP 403を返します。書き込みに対する修正はすでに実装されていましたが、読み取りには単に適用されていなかったのです。


概念実証: ライブデモ

管理されたラボ環境で、エクスプロイトのエンドツーエンドの完全なデモを録画しました。

PoC Video — BOLA/IDOR osTicket

動画では以下の流れを説明しています:

  • 2つの分離された部署(Dept-AとDept-B)によるラボ環境のセットアップ
  • アクセスがDept-Aのみに制限された状態で認証されたエージェントagent_a
  • Dept-Bの機密チケットを標的とした不正リクエストの作成
  • 制限されたチケットフィールドデータが露出した状態で、サーバーがHTTP 200を返す
  • パッチ適用後のリプレイでは、HTTP 403 — アクセス拒否が表示される

このリポジトリのexploit.pyスクリプトは、全チェーン(認証 → 列挙 → 不正なフィールドアクセス)を自動化し、手動テストを超えて問題が拡大することを確認するために評価中に使用されました。


影響

  • 機密データの開示 - 全部署にわたって、どのエージェントでも機密チケットフィールドを読み取れる
  • 水平方向の権限昇格 - 部署の境界が完全にバイパスされる
  • 大量列挙 - 連続したticket_id / field_id整数により、一括スクレイピングが容易になる
  • マルチテナント機密性の侵害 - osTicketの部署分離モデルという中核的な設計原則を無効化する

修正内容

viewField()への1行の挿入です。チケットオブジェクトの取得直後に、editField()がすでに正しく行っている処理をそのまま反映します。完全な技術的詳細、差分、CVSSの内訳は添付のレポートに記載されています。

📄 BOLA_IDOR_osTicket_Report_v2.pdf

✅ 公式パッチ(osTicketチームが確認済み)

osTicketはこの報告を確認し、要求されたフィールドの解決/レンダリングの前に$ticket->checkStaffPerm($thisstaff)を追加することで緩和策を実装しました。これはeditField()にすでに存在するチェックを反映したものです。スタッフはフィールドデータを表示する前に、親チケットへのアクセス権を持っている必要があります。

osTicketは、完全なエクスプロイト手順を公開する前に、短期間のアップグレード猶予期間を設けることを推奨しています。このリポジトリはその指針に従っています - 以下の開示タイムラインを参照してください。


開示タイムライン


このリポジトリのファイル

root@kitploit:~
.
├── README.md                        # This file
├── BOLA_IDOR_osTicket_Report_v2.pdf # Full technical disclosure report
├── exploit.py                       # PoC automation script
└── PoC_osTicket.mov                 # Local copy of the demo video

責任ある開示

私は何かを公開する前に、この問題をosTicketセキュリティチームに非公開で報告しました。このリポジトリは、責任ある開示期間の経過後にのみ公開され、公式パッチがリリースされた今、完全な詳細レポートを利用可能にしています。osTicketのメンテナでご質問がある場合は、GitHub経由で直接お気軽にお問い合わせください。


@JF0x0r による発見 · オープンソースのセキュリティは重要です。

ツールをダウンロード
詳細リファレンス
パッチコミットd590a9770d25159fb7741681f36e23a35f1fb5e9
修正バージョンv1.17.8 · v1.18.4
公式ダウンロードosticket.com/download
リリース種別緊急セキュリティリリース
謝辞Juan Felipe Oz(@JF0x0r)
日付イベント
2026年3月27日脆弱性を発見し文書化
2026年3月27日[email protected]に報告書を送付
2026年6月17日osTicketが問題を確認し、検証用の緩和パッチを共有
2026年6月17日osTicketが修正を含むv1.17.8およびv1.18.4をリリース(コミットd590a9770d25159fb7741681f36e23a35f1fb5e9)
—GitHub CNAによるCVE採番待ち