セキュリティ

このページは、守れるものと守れないものの両方を書いています。後半が欠けたセキュリティの説明は、読み手に一覧を保証と取り違えさせます。

出発点

パッケージを公開するとは、それを導入するすべての技術者のPCでコードを実行するということです。この製品のセキュリティ上の判断は、まず一つの問いに照らして決めています——この変更は、権限のない公開を容易にしないか。

  • パッケージへの署名(ECDSA P-256)

    署名ファイルはパッケージの中に入っています。署名の対象は、各ファイルのハッシュ、パッケージID、バージョンを含むマニフェストであり、アーカイブのハッシュだけではありません。

    ハッシュだけに署名していた場合、古い正しく署名されたアーカイブを新しいバージョン番号の下に差し込めてしまいます。署名は検証を通り、利用者は既知の脆弱性を含むツールを「更新」として導入することになります。

  • 秘密鍵はサーバーに置きません

    サーバーは検証しかしません。署名は公開者のPC上で、別のツールを使って行います。

    鍵がサーバーにあれば、それを手に入れた相手はパッケージを書き換えて署名し直せます。それでは署名の意味がありません。

  • クライアント側でも検証します

    技術者のPC上のアドインが独自に署名を検証します。その際に使う信頼済み鍵の一覧はサーバーから取得しません

    署名が存在するのは、サーバーを額面どおり信用できないからです。信頼の一覧を同じサーバーから取ってしまえば、その前提が静かに無効になります。

  • 削除できない監査ログ

    すべての公開、すべての権限変更、すべてのチャンネル判断が永続的に記録されます。変更や削除の経路は意図的に用意しておらず、保持期間後の整理の対象にもしていません。

    「このツールはどこから来たのか」は、たいてい何か月も経ってから尋ねられます。その日、削除できたはずの記録は、最初からなかった記録と同じです。

  • 二人承認の原則(任意)

    より広いチャンネルへの配布に別の管理者の承認を必須にできます。申請した本人が自分の申請を承認することはできません。差し戻しに承認は要りません。

    初期状態では無効です。三人のチームでは、この障壁は数週間で「読まずに承認される通知」に変わります。守っているつもりで守っていない検査は、検査がないことより悪い状態です。

  • アーカイブの展開そのものが攻撃面です

    送られたアーカイブはフォルダー外への書き出し(zip-slip)と展開爆弾について検査し、展開後の合計サイズにも上限を設けています。

    アーカイブの展開は無害に見えます。細工されたものは対象フォルダーの外へファイルを書いたり、サーバーのディスクを埋め尽くしたりできます。

  • パスワードなしのログイン

    利用者は自分のアドレスへ届くワンタイムコードでログインします。セッションは短命のトークンで運び、更新トークンはブラウザーのコードから見えることがありません。

    維持すべきパスワード保管庫がなければ、漏えいしうるパスワードのデータベースもありません。また、失効済みの更新トークンが再利用された場合は盗用の兆候とみなし、セッションを打ち切ります。

  • 何を入れるのかが見える

    導入フォルダーには機械可読な構成表(SBOM CycloneDX)と、両方のデータベース向けの移行スクリプトが入っています。

    何がサーバーに入るのかを、入る前に情報システム部門が確認できる必要があります。どこかの依存関係に脆弱性が公表された時、「うちに入っているか」がファイル検索になります。

私たちに守れないもの

これは欠陥ではなく境界です。構造から生じるものであり、そうでないと言うのは嘘になります。

  • 示し合わせた二人の管理者。二人承認の原則が止められるのは一人であって、二人ではありません。
  • サーバーのシステム管理者。データベースとファイルシステムに触れられる相手には、アプリケーション層のどの検査も障壁になりません。
  • 署名鍵のあるPC。鍵はサーバーにありませんが、どこかには存在します。その一台が落ちれば署名も一緒に落ちます。
  • 意図的に隠された悪意ある挙動。パッケージの検査はヒューリスティックであり、隠れようとするコードを捕まえられるとは主張しません。
  • 情報の持ち出し。導入されたツールは技術者本人の権限で動き、その権限が届く範囲はすべて読めます。それを制限するのはOSとネットワークの制御であって、この製品ではありません。
  • バックアップの安全性。データベースの複製は御社の手元にあり、そこに入っているものは稼働中のシステムとまったく同じ価値を持ちます。

脆弱性のご報告

見つけられた場合はご連絡ください。報告は真剣に受け止め、報告者を過程から外すことはせず、修正の公開時期をお伝えします。

security@ypcad.com