Parece que até a resposta atualmente aceita realmente não aborda a parte da sua pergunta, como evitar que alguém acesse acidentalmente um commit antigo, use esse estado mais antigo da base de código em uma nova ramificação e introduza uma vulnerabilidade antiga novamente.
IMHO a única maneira certa de abordar isso é:
documentando as correções de erros e as vulnerabilidades rigidamente no documento "notas de versão" (ou "log de alterações") do sistema
certificando-se de que todos os desenvolvedores que acessam versões mais antigas do código leiam as notas de versão, verifique quais problemas foram resolvidos na versão do código que veio depois da versão que eles usarão
Ao reutilizar uma versão mais antiga ou ramificar de uma versão mais antiga da base de código, é claramente a responsabilidade dos desenvolvedores não fazer isso cegamente. É claro que eles devem checar os bugs e vulnerabilidades já corrigidos, para não apresentá-los novamente. O registro VCS, no entanto, não é realmente um bom lugar para encontrar esse tipo de informação, porque geralmente existem todos os tipos de alterações mencionados, em um nível de abstração muito baixo.
As notas de versão, no entanto, devem conter uma seção "novos recursos" e uma seção "problemas resolvidos". E o último deve ser o primeiro local a verificar antes de ramificar de uma versão mais antiga.