TimeForest は TimeTree の非公式サードパーティクライアントです。 この文書は TimeForest のコードに関する脆弱性の報告方法を説明します。 TimeTree 本体の問題は、TimeTree の公式窓口へ報告してください。
脆弱性を見つけた場合は公開 Issue を作成せず、GitHub の非公開報告を利用してください。
- リポジトリの Security タブを開きます。
- Report a vulnerability を選択します。
- 再現手順、影響範囲、可能であれば PoC を添えてください。
個人プロジェクトのため SLA は設定していません。 セッションや Cookie の扱いに関係する問題は優先して確認します。
TimeForest はパスワードを受け取りません。 ログインは TimeTree 自身のログインページで行い、各クライアントは TimeTree が発行したセッションを利用します。
セッションはブラウザの _session_id Cookie を利用します。
Cookie を直接扱うのは Service Worker だけで、コンテンツスクリプトへ値を渡しません。
書き込み API は Service Worker を経由します。
declarativeNetRequest は、拡張自身の対象リクエストについて Origin を timetreeapp.com に合わせる目的で使用し、対象ドメインと XHR に限定しています。
アカウントごとに独立した Electron partition を使用し、Cookie を分離します。 認証付き API リクエストは main process から行います。
renderer が利用する preload bridge(window.host)は、TimeTree の /api/* に必要な JSON 操作へ範囲を限定しています。
任意 URL の取得、shell 実行、任意ファイルアクセス用の API は公開していません。
TimeTree の session token はサーバーの永続ストレージへ保存しません。 呼び出し元の httpOnly Cookie からリクエストごとに読み取り、TimeTree へ転送します。
backend proxy は許可した /api/v*/ の JSON API を固定ホスト timetreeapp.com へ中継します。
redirect は追跡しません。
timetreeapp.com 上の同一オリジンで動作し、TimeTree Web の既存セッションを使用します。
この形態では TimeForest の外部 proxy へ session token を渡しません。
対象:このリポジトリの Chrome 拡張、デスクトップクライアント、Web クライアント、ユーザースクリプト、backend proxy。
対象外:TimeTree 本体、OpenStreetMap、Nominatim などの外部サービス。
現在のデスクトップ配布物はコード署名していません。 Windows または macOS が初回起動時に警告を表示する場合があります。
各 Release には配布ファイルの SHA-256 checksum を含め、ダウンロード後の破損や差し替えを確認できるようにしています。