← 최신 논문
💻 computer science

Vulnerability Abundance: A formal proof of infinite vulnerabilities in code

이 논문은 단일 C 프로그램인 '취약점 공장 (Vulnerability Factory)'이 무한히 많은 고유한 취약점을 포함할 수 있음을 형식적으로 증명하고, 이를 통해 소프트웨어의 전체 취약점 집합이 무한하며, 실제 악용 사례는 취약점의 풍부함과 소프트웨어의 시장 점유율에 따라 결정된다는 '취약점 풍부성 (Vulnerability Abundance)' 개념을 제시합니다.

원저자: Eireann Leverett, Jeroen van der Ham-de Vos

게시일 2026-04-10
📖 3 분 읽기☕ 가벼운 읽기

원저자: Eireann Leverett, Jeroen van der Ham-de Vos

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

1. 핵심 발견: "취약점 공장 (Vulnerability Factory)"

저자들은 C 언어로 작성된 아주 작은 프로그램 하나를 만들었습니다. 이 프로그램의 이름은 **'취약점 공장'**입니다.

  • 비유: 이 공장은 마치 무한한 종류의 도구를 찍어내는 기계와 같습니다.
  • 어떻게 작동하나요? 이 공장은 실행될 때마다 숫자 (1, 2, 3...) 를 하나씩 늘려가며, 그 숫자에 맞춰 새로운 소프트웨어 조각을 만듭니다.
  • 무엇을 만드나요? 각 조각마다 고유의 '해킹 구멍'이 하나씩 박혀 있습니다. 숫자가 100 이 되면 100 번 째 구멍이 생기고, 숫자가 1000 이 되면 1000 번 째 구멍이 생깁니다.
  • 결론: 이 공장은 이론상 무한히 많은 (셀 수 있는 무한대) 서로 다른 해킹 구멍을 만들어낼 수 있습니다. 즉, 소프트웨어에 숨겨진 구멍은 우리가 생각했던 것보다 훨씬 더 많고, 끝이 없다는 것이 수학적으로 증명된 것입니다.

2. 중요한 구분: "구멍"과 "해킹 도구"는 다릅니다

이 논문에서 가장 중요한 점은 **"구멍이 무한하다고 해서, 해커가 그걸 다 이용할 수 있는 건 아니다"**라고 강조한다는 것입니다.

  • 비유 (화학 원소와 산업):

    • 우주에는 수소, 헬륨, 금, 우라늄 등 수많은 원소가 있습니다. (이것이 '무한한 취약점'에 비유됩니다.)
    • 하지만 우리가 일상에서 실제로 많이 쓰는 것은 철, 알루미늄, 구리 등 몇 가지 원소뿐입니다. (이것이 '실제 해킹에 쓰이는 취약점'에 비유됩니다.)
    • 우주에 금이 아주 많다고 해서, 우리가 금으로 만든 물건을 매일 쓰는 건 아닙니다.
  • 현실: 연구에 따르면, 발표된 해킹 구멍 (CVE) 중 실제로 해커들이 공격에 사용하는 경우는 약 6% 미만입니다. 나머지 94% 이상은 구멍이 있긴 하지만, 해커들이 "이걸로 뭘 해볼 가치가 없다"고 생각하거나, 해킹 도구를 만드는 비용이 너무 비싸서 그냥 지나칩니다.

3. 새로운 개념: "취약점의 풍부함 (Vulnerability Abundance)"

저자들은 화학에서 쓰는 **'원소의 풍부함'**이라는 개념을 소프트웨어에 적용했습니다.

  • 비유:
    • C/C++ 언어: 마치 석유처럼, 여기저기서 많이 쓰이지만 누출 (해킹) 이 자주 발생하는 위험한 원료입니다. (메모리 관련 구멍이 매우 풍부함)
    • Rust/Python 언어: 마치 전기태양광처럼, 석유처럼 누출이 적지만 다른 방식의 문제 (로직 오류 등) 가 발생할 수 있습니다.
  • 의미: 우리가 어떤 언어로 프로그램을 많이 만들느냐에 따라, 세상에 떠도는 해킹 구멍의 종류와 비율이 달라집니다. 언어가 바뀌면 구멍의 종류도 바뀝니다.

4. 왜 이것이 중요한가요? (실제 영향)

이론적으로 구멍이 무한하다고 해서 우리가 "아, 포기하자"라고 할 수는 없습니다. 오히려 다음과 같은 전략이 필요합니다.

  1. 모든 구멍을 막을 수 없다: 구멍이 무한히 많으므로, 하나하나 다 찾아서 고치는 것은 '시시포스의 일' (끝없는 노동) 입니다.
  2. 주요 목표에 집중하라: 해커들은 구멍이 많은 곳보다는 **사람들이 많이 쓰는 곳 (시장 점유율이 높은 소프트웨어)**을 노립니다.
    • 비유: 바다에 물고기가 무한히 많다고 해서, 모든 바다를 다 낚시할 수는 없습니다. 대신 물고기가 가장 많이 모인 어장을 찾아서 그곳을 보호하는 것이 훨씬 효율적입니다.
  3. 경제적 접근: 구멍을 막는 비용과 해킹으로 인한 손실 비용을 따져보고, 가장 많이 쓰이는 소프트웨어의 가장 흔한 구멍 (풍부한 구멍) 부터 막는 것이 현명합니다.

5. 결론: 바다를 비우지 말고, 흐름을 읽자

이 논문의 결론은 매우 명확합니다.

"소프트웨어의 해킹 구멍은 무한한 바다입니다. 우리는 이 바다를 완전히 비울 수 없습니다. 하지만 우리는 이 바다의 흐름을 이해할 수 있습니다. 어떤 종류의 구멍이 가장 흔한지, 어디에 가장 많이 분포하는지, 그리고 해커들이 어디로 몰려드는지를 파악하여, 우리의 방어선을 지혜롭게 배치해야 합니다."

한 줄 요약:

"소프트웨어에는 끝없는 해킹 구멍이 있지만, 해커들은 그중에서도 가장 많이 쓰이는 프로그램의 흔한 구멍만 노립니다. 따라서 우리는 모든 구멍을 다 막으려 애쓰기보다, **어떤 구멍이 가장 위험한지 (풍부한지)**를 분석하여 집중적으로 방어해야 합니다."

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →