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 infiltran en el código de código abierto utilizado por muchas aplicaciones. Aquí te mostramos cómo diseñamos Obsidian para garantizar que la aplicación sea un entorno seguro y privado para tus pensamientos. Menos es más seguro Puede sonar obvio, pero la forma principal en que reducimos el riesgo de ataques a la cadena de suministro es evitar depender de código de terceros. Obsidian tiene un bajo número de dependencias en comparación con otras aplicaciones en 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 preexistentes. Esto nos da control total sobre lo que se ejecuta en Obsidian. - Para funciones utilitarias pequeñas, casi siempre las reimplementamos en nuestro código. - Para 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 bloqueados por versión y solo actualizamos ocasionalmente, o cuando llegan correcciones de seguridad. Leemos las notas de lanzamiento, observamos los cambios en upstream y probamos exhaustivamente antes de cambiar. Este enfoque mantiene nuestro gráfico de dependencias poco profundo con pocas subdependencias. Una superficie más pequeña reduce la posibilidad de que una actualización maliciosa se cuele. Lo que realmente se envía en la aplicación Solo un puñado de paquetes son parte de la aplicación que ejecutas, por ejemplo, Electron, CodeMirror, moment.js. Los otros paquetes nos ayudan a construir 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 fijadas por versión y comprometidas 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 proporciona una pista de auditoría sencilla al revisar cambios. No ejecutamos scripts postinstall. Esto evita que los paquetes ejecuten código arbitrario durante la instalación. Actualizaciones lentas y deliberadas Cuando hacemos actualizaciones de dependencias,: ...