Sobre o projeto

Fence é uma GitHub Action destinada a reduzir acesso indesejado à rede e enfraquecer caminhos comuns de escape em jobs de workflow Linux hospedados no GitHub. O projeto é descrito como inicial e em desenvolvimento ativo. Os ambientes suportados são runners x64 hospedados no GitHub usando ubuntu-24.04 ou ubuntu-latest. Quando posicionado como o primeiro passo do job, o Fence permite conexões exigidas pelo GitHub Actions e pelo runner hospedado, além de destinos explicitamente configurados em sua lista de permissões, enquanto bloqueia outras conexões de saída. Ele também desativa, por padrão, o sudo sem senha e o acesso ao Docker ou a contêineres. As proteções permanecem ativas até o término do job, e o job pode falhar se o Fence detectar alterações inesperadas em seus controles. A lista de permissões suporta nomes de host, endereços IPv6, portas TCP e UDP personalizadas, intervalos CIDR e curingas de nome de host de um ou dois níveis. Nomes de host sem qualificação usam TCP porta 443 por padrão, e uma lista de permissões pode conter até 64 entradas únicas. O modo de auditoria registra o que o Fence bloquearia sem aplicar restrições de rede, sudo ou Docker, ajudando os usuários a derivar uma lista de permissões antes de mudar para o modo de bloqueio. Configurações opcionais incluem allow_github_artifacts para acesso limitado a endpoints de armazenamento usados por artefatos do Actions, GitHub Pages e caches, e container_policy: unsafe_preserve para jobs que exigem Docker. A documentação alerta que ambas as opções podem aumentar o risco de exfiltração de dados ou de isolamento. O Fence também grava tabelas de atividade de rede no resumo do job e no log pós-job, incluindo uma linha FENCE_REPORT_JSON legível por máquina disponível por meio da API de logs de job do GitHub. O Fence não é apresentado como um sandbox completo. As conexões necessárias do GitHub e do Azure permanecem disponíveis, o Azure Instance Metadata Service permanece acessível, e o acesso ao Azure WireServer é limitado a processos de host pertencentes ao root. As orientações de segurança recomendam fixar a Action em um SHA de commit completo de uma versão publicada, em vez de usar main. O Fence é distribuído sob a Licença MIT.