Menos es más seguro: cómo Obsidian reduce el riesgo de ataques a la cadena de suministro Los ataques a la cadena de suministro son actualizaciones maliciosas que se cuelan en el código fuente abierto utilizado por muchas aplicaciones. Así es como diseñamos Obsidian para garantizar que la aplicación sea un entorno seguro y privado para sus pensamientos. Menos es más seguro Puede parecer obvio, pero la principal forma en que reducimos el riesgo de ataques a la cadena de suministro es evitar depender del código de terceros. Obsidian tiene un bajo número de dependencias en comparación con otras aplicaciones de nuestra categoría. Consulta una lista de bibliotecas de código abierto en nuestra página de Créditos. Funciones como Bases y Canvas se implementaron desde cero en lugar de importar bibliotecas listas para usar. Esto nos da un control total sobre lo que se ejecuta en Obsidian. - Para pequeñas funciones de utilidad, casi siempre las volvemos a implementar en nuestro código. - Para los módulos medianos, los bifurcamos y los mantenemos dentro de nuestra base de código si las licencias lo permiten. - Para bibliotecas grandes como pdf.js, Mermaid y MathJax, incluimos archivos conocidos y con versión bloqueada y solo actualizamos ocasionalmente, o cuando llegan correcciones de seguridad. Leemos las notas de la versión, analizamos los cambios ascendentes y probamos a fondo antes de cambiar. Este enfoque mantiene nuestro gráfico de dependencias poco profundo con pocas subdependencias. Un área expuesta más pequeña reduce la posibilidad de que se cuele una actualización malintencionada. Lo que realmente se envía en la aplicación Solo un puñado de paquetes forman parte de la aplicación que ejecuta, por ejemplo, Electron, CodeMirror, moment.js. Los otros paquetes nos ayudan a crear la aplicación y nunca se envían a los usuarios, por ejemplo, esbuild o eslint. Fijación de versiones y archivos de bloqueo Todas las dependencias están estrictamente ancladas a la versión y confirmadas con un archivo de bloqueo. El archivo de bloqueo es la fuente de verdad para las compilaciones, por lo que obtenemos instalaciones deterministas. Esto nos da una pista de auditoría sencilla al revisar los cambios. No ejecutamos scripts posteriores a la instalación. Esto evita que los paquetes ejecuten código arbitrario durante la instalación. Actualizaciones lentas y deliberadas Cuando hacemos actualizaciones de dependencias, hacemos lo siguiente: ...