Subversion仓库中有病毒,该怎么办?

16

假设存在以下情况:

  1. 一份被病毒感染的文件已提交到 Subversion 存储库中。
  2. 服务器上运行了一个反病毒扫描程序,并且还会扫描 Subversion 存储库。

反病毒扫描程序将删除受影响的版本或将其移至隔离区。其结果是存储库损坏了。

如果版本文件可以恢复(从隔离区)该如何解决这个问题?
我有一些要实现的目标:

  1. 不允许禁用或从目录中排除反病毒软件。
  2. 病毒感染的文件不得存储在存储库中。
  3. 存储库必须保持一致和可用。

对于这个小问题,最好的解决方案是什么?


你能否从源代码重建被感染的文件?如果可以的话,从仓库中清除病毒,重新构建并提交。 - AlG
2
最有可能的是,病毒扫描器不会在修订文件中检测到病毒,因为大多数扫描器只扫描文件的感兴趣的位置,而修订文件是一种二进制差异格式,很可能会破坏模式扫描器。 - Bert Huijben
qor72:我不知道哪个文件被感染了,这就是问题所在。 Bert:扫描器检测到了它,这就是我的问题。我也没有想到它 :) - guerda
1
  1. 暂时禁用杀毒软件。
  2. 倾倒-过滤-加载存储库以删除感染文件。
  3. 重新激活病毒扫描器。
  4. 解雇检查感染文件的个人。
- Amardeep AC9MF
Amardeep:这只是一个误报。Dump Filter加载失败,因为文件已经被清理了。好在最终还是有个好结局:文件被隔离了,病毒扫描器得到了签名更新。一切都顺利进行。 - guerda
最佳方案:请向您的IT部门请求将您的代码库添加到排除列表中,或者让杀毒软件仅报告并忽略它们。大多数情况下,这些代码库错误地被视为病毒。 - Петър Петров
4个回答

16

来自FAQ

有些特殊情况下,您可能想要销毁某个文件或提交的所有痕迹(例如某人意外提交了一份机密文件)。但这并不容易,因为Subversion被设计成永远不会丢失信息。修订版本是不可变的树形结构,它们相互依赖。从历史记录中删除一个修订版本将引起连锁反应,在所有后续的修订版本中造成混乱,并可能使所有工作副本无效。

然而,该项目计划在未来实现一个svnadmin obliterate命令,以永久删除信息(请参见问题516)。

与此同时,您唯一的选择是使用svnadmin dump命令导出您的存储库,然后通过svndumpfilter命令(排除错误路径)将转储文件传输到svnadmin load命令中。有关详细信息,请参见Subversion书籍的第5章


除了从备份恢复之外,svndumpfilter 是唯一的解决方法。+1 - rmeador

3
最简单的方法是从病毒提交之前的备份中恢复...

修订版本早于一年。或者更确切地说:> 6000个修订版本旧了。备份无法完成。 - guerda
1
我有很多备份,非常多。如果我在提交之前恢复一个备份,我就会丢失超过6000个修订版本。这是不可行的。 - guerda
你为什么不能将那个文件恢复到有病毒之前的状态呢? - iheanyi

0

如果您是以文件模式(每个源文件一个单独的仓库文件)创建存储库,则可以修复/编辑/替换受感染的文件。
如果您是以数据库模式创建的,则较为困难 - 您可以进行 svndump 然后 svncreate 一个新的存储库,但最好的方法可能是将 SVN 存储库从病毒扫描中排除。


修订文件已感染,因此无法进行任何替换/编辑。 - guerda

0

“AV不允许被禁用或从目录中排除。”

与您的IT部门协商,将您的存储库添加到排除列表中。如果AV支持“仅限信息模式”,最好将其配置为在信息模式下与您的存储库一起使用。大多数情况下,这些旧病毒只是误报。添加预提交挂钩以对任何文件进行病毒扫描,并在被病毒标记时拒绝提交。

如果AV报告旧文件感染,请检查是否为误报。如果不是,则删除该文件并完全忽略其存在于您的历史记录中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接