少ないほど安全:Obsidianがサプライチェーン攻撃のリスクを軽減する方法 サプライチェーン攻撃は、多くのアプリで使用されているオープンソースコードに忍び込む悪意のあるアップデートです。アプリがあなたの考えにとって安全でプライベートな環境であることを保証するために、Obsidian をどのように設計するかは次のとおりです。 少ないほど安全 当たり前のことのように聞こえるかもしれませんが、サプライチェーン攻撃のリスクを軽減する主な方法は、サードパーティのコードに依存しないことです。Obsidian は、このカテゴリの他のアプリと比較して依存関係の数が少ないです。オープンソースライブラリのリストは、クレジットページをご覧ください。 Bases や Canvas などの機能は、既製のライブラリをインポートする代わりに、ゼロから実装されました。これにより、Obsidian で実行される内容を完全に制御できます。 - 小さなユーティリティ関数の場合、ほとんどの場合、コードに再実装します。 - 中程度のモジュールの場合は、それらをフォークし、ライセンスで許可されている場合はコードベース内に保持します。 - pdf.js、Mermaid、MathJax などの大規模なライブラリには、既知の正常なバージョン ロック ファイルが含まれており、たまに、またはセキュリティ修正が行われたときにのみアップグレードします。リリースノートを読み、アップストリームの変更を確認し、切り替える前に徹底的にテストします。 このアプローチでは、依存関係グラフを浅く保ち、サブ依存関係がほとんどありません。対象領域が小さいほど、悪意のあるアップデートがすり抜ける可能性が低くなります。 アプリに実際に出荷されるもの 実行するアプリの一部であるパッケージは、Electron、CodeMirror moment.jsなど、ほんの一握りです。他のパッケージは、アプリの構築に役立ち、esbuild や eslint など、ユーザーに出荷されることはありません。 バージョンのピン留めとロックファイル すべての依存関係は厳密にバージョン固定され、ロックファイルでコミットされます。ロックファイルはビルドの信頼できる情報源であるため、決定論的なインストールを取得します。これにより、変更をレビューする際の簡単な監査証跡が得られます。 ポストインストールスクリプトは実行しません。これにより、インストール中にパッケージが任意のコードを実行するのを防ぎます。 ゆっくりとした意図的なアップグレード 依存関係の更新を行うと、次のことを行います。 ...