Prevalence of Cross-File Dependencies in Terraform and Their Resolution by Security Scanners
이 논문은 대규모 테라폼(Terraform) 데이터셋을 분석하여 파일 간 의존성이 널리 퍼져 있으며 종종 보안 민감 리소스와 연관되어 있음을 밝히는 한편, 통제된 실험을 통해 현대의 보안 스캐너들이 이러한 복잡한 파일 간 관계를 해결하는 데 있어 다양하지만 유의미한 능력을 갖추고 있음을 입증함으로써, 이들이 다중 파일 추론을 처리할 수 없다는 가설에 이의를 제기한다.
원본 논문은 CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
현대 디지털 세상에서 우리의 앱, 은행, 스트리밍 서비스를 구동하는 거대한 서버와 네트워크는 더 이상 수작업으로 만들어지지 않습니다. 대신 엔지니어들은 컴퓨터 언어로 된 지침을 작성하여 클라우드에 무엇을 구축할지 알려줍니다. 이 관행을 '코드로서의 인프라(Infrastructure as Code)'라고 부릅니다. 이를 통해 팀은 복잡한 시스템을 텍스트 파일로 정의할 수 있으며, 모든 서버, 방화벽, 스토리지 버킷이 매번 동일한 정밀도로 생성되도록 보장할 수 있습니다. 이 작업을 위한 가장 인기 있는 도구 중 하나는 테라폼(Terraform)이라 불립니다. 이것은 마치 설계도 판독기처럼 작동하여, 이러한 텍스트 지침을 받아 실제 작동하는 기술로 변환합니다. 하지만 집 설계도가 수십 페이지에 걸쳐 나뉘어 있고 다른 페이지를 참조하는 메모가 적혀 있는 것처럼, 이러한 코드 파일들은 결코 고립되어 있지 않습니다. 이들은 서로 얽혀 있으며, 한 파일이 다른 파일을 호출하고 값을 주고받으며, 모든 조각이 조립되었을 때만 존재하는 하나의 시스템을 구축합니다.
이러한 시스템의 보안은 이 지침들의 정확성에 달려 있습니다. 코드상의 단 한 번의 실수, 예를 들어 실수로 디지털 문을 열어두는 행위는 민감한 데이터를 전체 인터넷에 노출시킬 수 있습니다. 수년 동안 연구자들과 보안 전문가들은 이 설계도를 스캔하여 실수를 찾아내도록 설계된 도구들이 파일 사이의 연결 관계에는 눈이 멀어 있을 수 있다고 우려해 왔습니다. 지배적인 믿음은 이러한 스캐너들이 한 번에 하나의 파일만 읽을 수 있어, 파일들 사이의 공간에 숨겨진 위험한 비밀들을 놓칠 수 있다는 것이었습니다. 만약 어떤 파일이 "기본 설정을 사용하라"고 말하고, 다른 파일이 그 기본값을 "모두에게 공개"로 정의했다면, 스캐너는 첫 번째 파일을 개별적으로는 안전하다고 보고 두 번째 파일도 개별적으로는 안전하다고 판단하여, 그 위험한 조합을 포착하지 못할 수도 있습니다. 본 논문은 이 가설을 방대한 양의 실제 코드 집합을 통해 테스트하고, 도구들이 정말로 모두의 생각처럼 제한적인지 확인하고자 했습니다.
연구진은 먼저 테라폼을 사용하는 62,000개 이상의 공개 프로젝트로 구성된 방대한 라이브러리를 수집했습니다. 그들은 이 프로젝트들이 실제로 파일 간의 연결에 얼마나 자주 의존하는지 이해하고자 했습니다. 이 프로젝트들의 관계를 매핑함으로써, 그들은 파일 간의 연결이 드문 예외가 아니라 이러한 시스템이 구축되는 표준적인 방식임을 발견했습니다. 실제로 그들이 연구한 모든 프로젝트 중 3분의 1 이상이 한 파일이 다른 파일에 의존하는 최소 하나 이상의 연결을 포함하고 있었습니다. 이러한 연결은 고르게 분포되어 있지 않았습니다. 그것들은 소수의 복잡한 프로젝트에 집중되어 있었던 반면, 많은 단순한 프로젝트들은 연결이 거의 없거나 전혀 없었습니다. 파일들이 연결되는 가장 흔한 방식은 공유 폴더를 가리키는 것이었는데, 프로젝트가 공통된 코드 조각을 찾기 위해 자신의 디렉토리 구조를 위로 올라가거나 가로질러 접근하는 방식이었습니다. 이 패턴은 엔지니어들이 업무를 조직하는 방식이 자연스럽게 여러 파일을 가로지르는 의존성의 그물을 형성한다는 것을 보여주었습니다.
그다음 연구는 핵심적인 질문을 던졌습니다. 이러한 연결이 종종 시스템의 가장 민감한 부분으로 이어지는가 하는 점입니다. 연구진은 데이터베이스에 누가 접근할 수 있는지 또는 어떤 컴퓨터 간의 통신이 허용되는지와 같은 보안 설정을 제어하는 다른 파일에 의존하는 사례를 찾았습니다. 그들은 9,000개 이상의 프로젝트에서 이러한 교차 파일 연결이 실제로 이러한 중요한 보안 제어 장치들을 가리키고 있음을 발견했습니다. 이는 이러한 시스템의 안전이 한 파일의 값을 연결을 통해 다른 파일의 보안 규칙까지 추적하는 능력에 달려 있음을 의미했습니다. 만약 도구가 그 경로를 따라갈 수 없다면, 그 도구는 잘못된 그림을 보고 있는 것이며, 파일들이 서로 꿰매어진 방식 때문에 발생하는 취약점을 놓칠 가능성이 컸습니다.
문제의 규모를 파악한 후, 연구진은 도구들이 실제로 이러한 경로를 따라갈 수 있는지 확인하기 위해 직접 실험에 착수했습니다. 그들은 가장 대중적인 4개의 보안 스캐너를 사용하여 통제된 실험을 설계했습니다. 그들은 같은 폴더 내의 파일 간의 단순한 연결부터, 값이 여러 모듈을 거쳐 최종 목적지에 도달하기 전까지 여러 층을 통과하는 복잡한 체인에 이르기까지, 자신들이 발견한 실제 세계의 연결 관계를 모방한 일련의 테스트 케이스를 만들었습니다. 그들은 위험한 설정이 다른 파일에 숨겨져 있을 때 스캐너가 이를 찾아낼 수 있는지, 아니면 위험 요소가 동일한 파일에 직접 작성되어 있을 때만 찾아낼 수 있는지를 테스트했습니다.
결과는 이러한 도구들이 근본적으로 교차 파일 연결에 눈이 멀어 있다는 오랜 믿음에 도전했습니다. 연구 결과, 도구들의 능력은 단순한 '예/아니오'의 문제가 아니라 하나의 스펙트럼이라는 것이 밝혀졌습니다. 테스트된 모든 도구는 한 파일에 정의된 변수가 같은 폴더 내의 다른 파일에서 사용되는 것과 같은 가장 단순한 연결은 추적할 수 있었습니다. 그들은 모두 이러한 기본적인 시나리오에서 위험을 성공적으로 포착했습니다. 그러나 연결이 더 복잡해짐에 따라 도구들은 갈라지기 시작했습니다. 4개의 스캐너 중 오직 하나인 체크오브(Checkov)만이 값이 여러 계층의 모듈을 통과하거나 특수 설정 파일에 의해 덮어쓰여지는 경우와 같은 가장 복잡한 경로를 따라갈 수 있었습니다. 다른 도구들은 직접적인 연결은 처리할 수 있었지만, 중간 단계가 포함되거나 변수 오버라이드 파일과 같은 특정 유형의 파일이 개입되면 추적을 놓치는 경우가 많았습니다.
이러한 발견은 스캐너가 교차 파일 참조를 따라갈 수 없다는 일반적인 가정이 너무 광범위하게 적용되어 정확하지 않다는 점을 시사합니다. 도구들이 그 작업을 수행할 능력이 없는 것이 아니라, 특정 도구와 연결의 복잡도에 따라 그 능력이 크게 달라진다는 것입니다. 가장 단순한 사례만 처리할 수 있는 도구에 의존하는 팀들에게는, 코드의 더 복잡한 배선 속에 숨겨진 보안 문제를 놓칠 수 있는 실질적인 위험이 존재합니다. 연구진은 도구들이 발전해 왔지만, 업계가 각 도구가 무엇을 보고 무엇을 보지 못하는지에 대해 더 정밀해질 필요가 있다고 결론지었습니다. 도구가 모든 오류를 잡아낼 것이라고 가정하기보다는, 특히 코드가 깊은 층위의 연결에 의존할 때 자신이 선택한 스캐너의 구체적인 한계를 이해해야 합니다. 이 연구는 단순한 교차 파일 위험은 포착되지만, 더 깊고 복잡한 위험은 더 유능한 도구나 다른 접근 방식을 필요로 한다는 것을 보여줌으로써 이러한 한계의 명확한 지도를 제공합니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.