Obviamente, no hay una respuesta correcta a esto, pero aquí están mis pensamientos al respecto:
Es una ventaja para un atacante tener el código fuente. Las pruebas / ataques de la caja negra son, por razones obvias, más difíciles. Saber cómo funcionan exactamente las cosas siempre es mejor que adivinar cómo podrían funcionar. Además, las herramientas que buscan en la fuente posibles vulnerabilidades, bien requieren la fuente;)
Pero liberar la fuente también tiene ventajas (al menos en teoría). Más personas leerán el código fuente y los errores relacionados con la seguridad del programa aparecerán más rápido.
Esto es obviamente solo una ventaja bajo dos condiciones:
1. Las personas realmente LEEN el código fuente y reportan problemas.
2. Los desarrolladores solucionan los problemas de manera oportuna.
Ambos puntos son algo controvertidos. La gente detrás de la idea de código abierto a menudo sugiere que el punto 1. pasa mucho (de lo que no estoy seguro) y la práctica demuestra que el punto 2 no es seguido por muchos desarrolladores (sin embargo, si la vulnerabilidad se publicó abiertamente, cualquier usuario es al menos consciente de ello y puede actuar en consecuencia).
Por lo tanto, para los resúmenes, definitivamente es una ventaja que un atacante tenga el código fuente, pero cuantas más personas revisen la fuente, más errores se solucionarán.