SHA 핀닝(SHA Pinning)은 안전할까? GitHub Actions 공급망 공격의 새로운 취약점
SHA 핀닝(SHA Pinning)이 GitHub Actions에서 의도한 대로 작동하지 않아, 공격자가 악성 코드를 주입할 수 있는 취약점이 발견됨
GitHub Actions는 SHA가 특정 저장소에 속하는지 검증하지 않아, 포크된 저장소의 SHA를 사용하여 공격 가능
커뮤니티에서는 SHA 핀닝의 한계를 지적하며, 태그(Tag) 사용의 위험성과 함께 더 나은 보안 대안을 모색함
공급망 공격(Supply Chain Attack)의 위험성을 강조하며, 코드 검토 및 검증 프로세스의 중요성을 강조
SHA 핀닝(SHA Pinning)의 기술적 취약점
본문에서는 GitHub Actions에서 SHA 핀닝(SHA Pinning)이 완벽한 보안을 제공하지 못하는 이유를 설명한다. 특히, GitHub Actions가 SHA가 특정 저장소에 속하는지 검증하지 않아, 공격자가 포크된 저장소의 SHA를 사용하여 악성 코드를 실행할 수 있다는 점을 지적한다. 이는 GitHub Actions의 설계적 결함(Design Flaw)으로, SHA 핀닝이 제공하는 보안 수준에 대한 근본적인 의문을 제기한다. 이러한 취약점은 공급망 공격(Supply Chain Attack)의 위험을 증폭시킨다.
공격 시나리오 및 실제 사례 분석
기사에서는 공격자가 GitHub Actions의 취약점을 악용하는 구체적인 시나리오를 제시한다. 공격자는 먼저, 대상 액션(Action) 저장소를 포크(Fork)하고, 악성 코드를 추가한 후, 공격 대상 애플리케이션에 풀 리퀘스트(Pull Request)를 보낸다. 이 풀 리퀘스트는 핀된 SHA를 공격자가 제어하는 SHA로 변경하여, 사용자가 인지하지 못하는 사이에 악성 코드를 실행하게 만든다. 이는 GitHub Actions 환경의 신뢰 모델(Trust Model)에 대한 심각한 위협을 제기한다.
커뮤니티의 대응 및 대안 모색
커뮤니티에서는 SHA 핀닝의 한계를 지적하며, 더 안전한 보안 방안을 모색하고 있다. 태그(Tag) 사용의 위험성과 함께, 코드 검토(Code Review) 및 검증 프로세스(Verification Process)의 중요성을 강조한다. 또한, zizmor 또는 pinact와 같은 도구를 사용하여, 불법적인 커밋을 방지하는 방법을 제시한다. 이러한 논의는 GitHub Actions 환경의 보안을 강화하기 위한 실질적인 대안을 제시한다.
GitHub의 개선 방향 및 권고 사항
논의에서는 GitHub가 GitHub Actions의 보안을 강화하기 위해 취해야 할 조치에 대한 제안이 제시된다. 특히, GitHub가 SHA가 특정 저장소에 속하는지 검증하는 기능을 추가하고, 태그의 불변성을 강제해야 한다는 주장이 제기된다. 또한, 자동화된 업데이트(Automated Updates)를 위한 도구 사용을 권장하며, 코드 검토 프로세스(Code Review Process)를 강화하여, 공급망 공격의 위험을 줄여야 한다고 강조한다. 이러한 권고 사항은 GitHub Actions 사용자들에게 실질적인 보안 지침을 제공한다.