공급망 공격, 왜 이렇게 자주 발생할까? OS, 패키지, 개발 문화의 문제점 분석
OS 보안 취약성(OS Security Vulnerabilities): OS의 복잡성으로 인해 샌드박싱(Sandboxing) 및 보안 기능 구현이 어렵고, 시스템 전반의 보안 수준이 낮다는 지적
패키지 관리 시스템(Package Management System)의 한계: 패키지 관리자의 보안 기준 미흡과 패키지 업데이트 검증의 어려움으로 인해 공급망 공격의 위험이 증가
개발 문화의 변화: 과거와 달리 코드 검토(Code Review)가 줄어들고, 의존성(Dependency)에 대한 이해 부족으로 인해 보안 취약점이 증가
벤더링(Vendoring)의 대두: 의존성 관리를 위한 벤더링의 장점과 단점, 그리고 Rust 생태계의 보안 우수성에 대한 논의
OS 보안 모델의 근본적인 문제점
토론에서는 유닉스(Unix) 기반 OS의 보안 모델이 현대 소프트웨어 개발 현실에 부합하지 않는다고 지적한다. 특히, 모든 프로그램이 사용자 권한으로 실행되는 구조는 공격 표면(Attack Surface)을 넓히는 주요 원인으로 꼽힌다. 샌드박싱(Sandboxing) 기술의 한계와 OS의 복잡성으로 인해, 보안 강화가 어렵다는 점도 문제로 제기된다. Qubes OS와 같은 VM 기반의 접근 방식이 대안으로 제시되지만, 복잡성 증가라는 단점이 존재한다.
패키지 관리 시스템의 보안 취약성
댓글에서는 패키지 관리 시스템의 보안 기준 미흡과 패키지 업데이트 검증의 어려움을 지적한다. 패키지 관리자(Package Manager)는 방대한 양의 코드를 관리해야 하므로, 모든 업데이트를 꼼꼼히 검토하는 것은 사실상 불가능하다는 것이다. 또한, 악의적인 코드가 삽입된 패키지가 배포될 경우, 광범위한 시스템에 영향을 미칠 수 있다는 점을 강조한다. Trivy와 같은 오픈소스 취약점 스캐너(Vulnerability Scanner)의 취약점 또한 공급망 공격의 위험을 높이는 요인으로 분석된다.
개발 문화 변화와 코드 검토의 중요성
토론에서는 과거에 비해 코드 검토(Code Review)가 줄어들고, 의존성(Dependency)에 대한 이해가 부족해진 점을 문제로 지적한다. 과거에는 개발자들이 사용하는 라이브러리와 도구에 대한 깊이 있는 이해를 바탕으로 코드를 작성했지만, 현재는 'pip install'과 같은 간편한 설치 방식에 의존하는 경향이 강하다는 것이다. 이러한 변화는 공급망 공격의 위험을 증가시키는 요인으로 작용하며, 코드 품질 저하로 이어진다는 비판도 제기된다.
벤더링(Vendoring)의 장단점과 Rust 생태계의 보안 우수성
일부 개발자는 의존성 관리를 위해 벤더링(Vendoring)을 활용하는 것에 대해 논의했다. 벤더링은 의존성 사용을 명확하게 하고, 업데이트 시 변경 사항을 쉽게 관리할 수 있다는 장점이 있다. 하지만, 시스템에 여러 개의 미묘하게 다른 라이브러리 복사본이 존재하게 되어, 코드 검토의 어려움이 증가한다는 단점도 존재한다. 또한, Rust 생태계가 다른 언어에 비해 보안 측면에서 우수하다는 의견도 제시되었으며, crates.io의 적극적인 보안 정책이 그 이유로 언급되었다.