security – ¿Manera segura de `enable-local-variables`?

Pregunta:

Heredé mi archivo .emacs de un amigo hace unos 18 años. Enterrado en el medio está el siguiente comentario ominoso que advierte sobre las implicaciones de seguridad de la función enable-local-variables :

;; Date: Wed, 7 Dec 1994 11:57:50 -0600
;; From: blob@syl.dl.nec.com (David Blob)
;; Subject: Self-extracting emacs elisp code
;;
;; With all this talk about self extracting mail "viruses", a friend
;; showed me that in emacs (which I use to read mail, along with vm)
;; has the ability to self-extract elisp code. This feature seems to
;; be turned on by default, and it not only applies to mail read with
;; emacs, but rather every file visited (when the feature is on, of
;; course).
;;
;; The way it works is by having a line which reads "Local Variables:"
;; followed by the lisp variables you would like to set...well, it may
;; seem petty, but you can execute programs, make connections and much
;; more through cleverly written elisp code contained within.
;;
;; It's simple to turn off, at any rate...
;;
;; (setq enable-local-variables  f) ;; turns off feature  (in emacs 19)
;; (setq enable-local-variables  1) ;; makes it ask first (in emacs 19)
;; (setq inhibit-local-variables t) ;; turns off feature  (in emacs 18)
;;
;; Anyhow, I think the risks here speak for themselves...
;;
(setq enable-local-variables '())

Así que nunca he usado la función de local-variables aunque parece que podría ser bastante útil. ¿Hay alguna forma de enable-local-variables que haga algo útil sin exponerme a ataques de inyección de código arbitrarios?

Respuesta:

Hace 18 años, tenías razón al estar preocupado. Pero el tiempo ha pasado. Desde Emacs 22, hay un mecanismo incorporado decente para incluir en la lista blanca las variables locales seguras. Los detalles están documentados en el manual de Emacs Lisp . Los aspectos más importantes son:

  • Los autores de Lisp pueden declarar valores seguros para cada variable. Esta es una lista blanca: si el programador Lisp no ha hecho nada especial, todos los valores se consideran inseguros.
  • Si enable-local-variables se establece en t (el valor predeterminado), Emacs establecerá automáticamente valores seguros y solicitará confirmación si un archivo intenta establecer un valor inseguro. Una vez que el usuario ha aprobado un valor para una variable dada, esto se registra automáticamente y Emacs no volverá a preguntar sobre el mismo valor para la misma variable.
  • Si enable-local-variables se establece en :safe , Emacs establecerá automáticamente valores seguros e ignorará los demás.

Por lo tanto, puede mantener la configuración predeterminada si no le importa que se le solicite, o use (setq enable-local-variables :safe) para obtener los beneficios comunes (estilo de sangría, formato de marca de tiempo, etc.) sin riesgo y sin interfaz de usuario invasión.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım