2010-05-27 10 views
16

Imagínese la siguiente situación:Virus en el repositorio Subversion, ¿qué hacer?

  1. Un virus de archivo infectado se obligaba a un repositorio de Subversion.
  2. Un escáner antivirus se ejecuta en el servidor y también escanea el repositorio de Subversion.

El antivirus eliminará la revisión afectada o la pondrá en cuarentena. La consecuencia es un repositorio roto.

Si el archivo de revisión es recuperable (de cuarentena), ¿cómo resolver este problema?
Tengo algunas metas a alcanzar:

  1. El AV no está permitido estar deshabilitado o excluidos de los directorios.
  2. El archivo infectado con virus no se debe almacenar en el repositorio
  3. El repositorio debe ser coherente y utilizable.

¿Cuál es la mejor solución para este pequeño problema?

+0

¿Puede reconstruir el archivo infectado desde el código fuente? Si puede, fragmente el virus del repositorio, reconstruya y vuelva a comprometerse. – AlG

+2

Lo más probable es que el virusscanner no detecte el virus en el archivo de revisión ya que la mayoría de los escáneres escanean solamente lugares interesantes de archivos y un archivo de revisión es un formato de diferencias binarias que muy probablemente rompe los escáneres de patrones. –

+0

qor72: No sé el archivo infectado, ese es el problema. Bert: El escáner lo detectó, ese es mi problema. No lo he pensado, también :) – guerda

Respuesta

16

Desde el FAQ:

Hay casos especiales en los que puede ser que desee para destruir toda evidencia de un archivo o cometer. (Tal vez alguien cometió accidentalmente un documento confidencial ). Esto no es tan fácil, porque Subversion está deliberadamente diseñado para nunca perder información. Las revisiones son árboles inmutables que se basan en uno otro. La eliminación de una revisión del historial de provocaría un efecto dominó, creando caos en todas las revisiones posteriores de y posiblemente invalidando todas las copias de trabajo.

El proyecto tiene planes, sin embargo, a implementar algún día un comando svnadmin obliterate que realizar la tarea de forma permanente eliminación de información. (Ver issue 516.)

Mientras tanto, su único recurso es a svnadmin volcar su repositorio, entonces tubo de la dumpfile través svndumpfilter (excluyendo el mal camino) en un comando de carga svnadmin. Consulte chapter 5 del libro de Subversion para detalles sobre esto.

+0

svndumpfilter es la única respuesta a la restauración de la copia de seguridad. +1 – rmeador

3

¿La más fácil? Restaurar desde una copia de seguridad desde antes de la confirmación con el virus ...

+0

La revisión es anterior a un año. O mejor dicho:> 6000 revisiones antiguas. La copia de seguridad no lo hará. – guerda

+1

Bueno, supongo que aprendiste una lección. Respaldo temprano y con frecuencia ... – ircmaxell

+1

Tengo copias de seguridad, muchas y muchas cosas. Si restauro una copia de seguridad antes de la confirmación, pierdo> 6000 revisiones. eso no es factible – guerda

0

Si creó el repositorio en modo de archivo (archivo de repositorio único por archivo de origen), entonces probablemente pueda corregir/editar/reemplazar el archivo infectado.
Si ha creado en el modo de DB, entonces es más difícil - se puede svndump continuación svncreate una nueva operación, pero es probablemente más fácil para excluir el repositorio SVN desde la exploración de virus

+0

El archivo de revisión está infectado, por lo que no es posible reemplazar/editar lo que sea posible. – guerda

0

"La AV no se le permite estar deshabilitado o excluidos de los directorios ".

Lucha con tu departamento de TI para agregar tus repositorios en las exclusiones. MEJOR, si el AV admite el "modo solo informativo", hágalo funcionar con sus repositorios en modo solo informativo. La mayoría de las veces, esos viejos virus son simplemente falsos positivos. Agregue los ganchos de precomisión a la exploración de virus de cualquier archivo y rechace la confirmación si está marcada por un virus.

Si el AV informa que el archivo anterior está infectado, verifique si no es falso positivo. Si no es así, y el archivo es realmente un virus antiguo, simplemente compromételo a eliminarlo e ignore por completo su existencia en su historial.

Cuestiones relacionadas