MS Paint 원격 코드 실행 취약점

MS Paint Remote Code Execution Vulnerability

cve.org ▲ 694 댓글 267 kuberwastaken

요약

마이크로소프트가 MS Paint에서 원격으로 코드를 실행할 수 있는 취약점을 공개하고 고쳤습니다.

마이크로소프트가 10월 13일 CVE(공개 취약점 목록)에 직접 등록한 항목입니다. 윈도에 기본으로 들어 있는 그림 프로그램 MS Paint의 메모리 오류로, 심각도는 '높음'으로 매겨졌습니다.

왜 중요한가

  • 권한도 사용자 조작도 필요 없는 네트워크 공격으로 분류됐습니다. 기본 그림 앱도 공격 통로가 될 수 있다는 뜻입니다.
  • 11.0.0.0부터 11.2605.91.0 이전 버전이 영향을 받으므로, 해당 버전 사용자는 업데이트해야 합니다.

핵심 내용

  • 원인은 범위 밖 읽기(CWE-125, 정해진 메모리 영역 바깥을 읽는 오류)입니다.
  • CVSS 3.1(취약점 심각도 점수) 기준 8.1점이며, 기밀성·무결성·가용성 피해가 모두 '높음'입니다.
  • 다만 공격 조건이 까다로운 편이고, 실제 공격 코드는 아직 확인되지 않았습니다.
  • 마이크로소프트 보안 대응 센터(MSRC)가 권고문과 공식 패치를 함께 냈습니다.
  • 설명은 한 문장뿐이어서 어떤 경로로 공격하는지는 밝히지 않았습니다.

HN 반응

  • 사용자 조작 없이 원격 실행이 된다는 데 놀라는 반응이 많았고, 원인으로는 미리보기용 이미지 디코더설과 Copilot 같은 AI 기능설이 엇갈렸습니다.
  • 마이크로소프트의 보안 강화를 두고 윈도 앱은 여전히 C·C++로 짜여 있다는 지적과, 모든 앱에 인터넷 연결을 붙이는 게 문제라는 반론이 나왔습니다.

댓글

30개 표시 · 전체 267개
  1. pasteleft HN

    Paint가 원격에서, 사용자 조작도 없이 임의의 코드를 실행할 수 있다고요?????

    정보가 진짜 더 필요해요.

  2. sharpshadow HN

    Paint의 이미지 디코딩 엔진은 공유 시스템 구성 요소라서, 썸네일과 미리보기를 만들 때 GUI를 열지 않아도 자동으로 호출됩니다. 그러니 변조된 이미지 파일이 기기에 존재하기만 해도 털릴 수 있습니다.

  3. jasomill HN

    이에 대해 자세한 내용을 알고 계신가요? 공유 시스템 구성 요소가 아니라 Paint 애플리케이션 자체의 네트워크 취약점으로 분류되어 있는 걸 보면, 저는 최근 도입된 Copilot 기능과 관련이 있다고 생각했습니다. 제가 알기로는 그 기능이 이 애플리케이션에서 네트워크와 직접 상호작용하는 유일한 부분이니까요.

  4. bushbaba HN

    일부러 심어 놓은 것 같네요.

  5. hulitu HN

    텔레메트리가 있는 프로그램은 다 가능하죠. 웹 브라우저도요.

  6. weavie HN

    어떻게요?

  7. joshspankit HN

    표현 때문에 비추천을 받은 건 이해하지만, 제가 짐작하는 취지에는 동의합니다.

    1. 텔레메트리는 대개 구현이 허술합니다. 직관적으로는 텔레메트리란 “데이터를 로컬에서 모아 원격 서버로 쏘는 것”이라고 생각하기 쉽지만, 텔레메트리 수집을 더 강력하게 하려고 반환 경로까지 만들어 두는 경우를 우리는 여러 번 봐 왔습니다. 그 반환 경로가 공격 벡터가 될 수 있습니다.

    2. 웹 브라우저는 공격 표면이 엄청나게 넓고 원격 서버에 끊임없이 접속합니다. 업계가 CVE에 선제적으로 대응하는 일은 아주 잘하고 있지만, 구조 자체가 그걸 매우 어렵게 만들기 때문에 브라우저에 RCE가 없다고 단언할 수는 없습니다.

  8. embedding-shape HN

    그 반환 경로가 공격 벡터가 될 수 있습니다

    어떤 반환 경로가 RCE로 이어질 수 있다는 건가요? 말도 안 돼요. 텔레메트리 중에 “백엔드가 아무 명령이나 돌려주면 클라이언트에서 그대로 실행된다”는 구조는 없어요. 그게 가능하다면 텔레메트리를 아주 비정상적인 방식으로 하고 있는 거예요.

    기껏해야 텔레메트리 백엔드가 클라이언트에 설정을 먼저 내려보내는 정도일 텐데, 그 안에 실행 가능한 명령이 들어 있을 리는 없죠. 그건 말이 안 되니까요.

    브라우저에 RCE가 없다고 단언할 수는 없습니다.

    물론 버그(나 보안 문제)가 없다는 걸 증명할 수는 없죠. 하지만 지금 이 순간 브라우저가 대규모로 악용되고 있지도 않고 꽤 오랫동안 그래 오지도 않았으니, 오늘날 널리 쓰이는 브라우저 RCE는 없다고 꽤 자신 있게 말할 수 있어요.

    브라우저의 공격 표면이 꽤 크다는 건 맞아요. 하지만 구멍을 찾아내면 보상이 엄청나기 때문에, 브라우저는 모의 침투 테스트를 가장 많이 받는 종류의 소프트웨어이기도 하죠.

  9. Someone HN

    어떤 반환 경로가 RCE로 이어질 수 있다는 건가요?

    API 프로토콜에는 “반환값은 ‘OK’ 아니면 ‘ERR’”라고 되어 있는데, 공격자가 “Floccinaucinihilipilification”을 보내서 스택에 할당된 3바이트짜리 응답 버퍼를 넘치게 하는 거죠.

  10. embedding-shape HN

    그래요, 그러면 뭔가의 첫 단계가 생기긴 했죠. 하지만 나머지가 어떻게 되어 있느냐에 따라 DoS가 되기도 하고 RCE가 되기도 하겠죠.

    제 말은, “나머지”까지 정말로 RCE로 이어진다면 거기서 또 뭔가 크게 잘못하고 있다는 거예요. 로켓 과학도 아니잖아요.

  11. port11 HN

    딱 그 둘뿐이죠. 텔레메트리가 있는 소프트웨어랑 웹 브라우저만요. 다른 건 어디에도 RCE가 없고요…

  12. monster_truck HN

    diff를 떠 보지 않고 짐작해 보면, 아마 생성형 지우기(generative erase) 같은 AI 쓰레기 기능과 관련이 있을 것 같아요.

    가정을 하나 더 쌓아 보자면, 최근의 그 인증서 난리를 이용해서, 로컬에서 모델을 돌릴 수 있는 PC에 쓰이는 모델의 업데이트 버전이 나온 것처럼 꾸미는 거예요. 그렇게 다운로드·설치된 뒤에 거치는 검증이나 점검 과정에서 범위를 벗어난 접근을 일으키는 망가진 모델을 먹이는 거죠.

  13. johnisom2001 HN

    짐작해 보자면, ... 가정을 쌓아 보자면, ...

    결국 아무 말도 안 하신 거잖아요. 차라리 올리지 않았으면 더 도움이 됐을 거예요.

  14. Oarch HN

    레이먼드 천의 해설 글이 올라올 날을 손꼽아 기다리고 있어요.

  15. fuzzfactor HN

    어제 “현재 패치가 적용된” 시스템을 배포했는데, 그럴 기회가 있었는데도 Paint를 지우지 못했습니다.

    평소에는 OneDrive 같은 성가신 것들을 몇 개씩 86해 왔는데, Paint는 그래도 아직은 해가 없겠거니 하고 그냥 뒀습니다.

    지금은 어느 때보다 정반대가 필요한데, 공격 경로만 슬금슬금 늘어나는군요.

  16. onei HN

    몇 년 전에 지원팀 직원과 통화하면서, 제가 일하던 시스템의 일부를 그 사람이 이해하도록 도운 적이 있습니다. 그가 화면을 공유하고 도식을 그리기 시작했는데, 그게 Paint라는 걸 깨닫기까지 10분이나 걸렸습니다. 그만큼 잘 다루더군요.

    알고 보니 거의 모든 고객이 Paint를 설치해 두었거나 쓸 수 있었기 때문에, 그는 최소공통분모에 맞춰 일하다가 아주 능숙해진 것이었습니다. 이제 개발자들을 놀라게 할 새 도구를 찾아야겠네요.

  17. ethbr1 HN

    여러 고객을 상대하는 지원 업무, 특히 규제 산업에서는 최소공통분모, 즉 보통은 OS 기본 유틸리티에 의존하는 법을 배우게 됩니다.

    그리고 결국 2달러짜리 드라이버나 2,000달러짜리 드라이버나 똑같이 드라이버입니다.

  18. joshspankit HN

    MS 이전에는 이메일을 받는 것만으로 바이러스에 걸리는 일이 불가능하던 시절이 있었습니다. 사용자가 첨부 파일을 직접 클릭해야 했죠. 이메일 자체는 어디까지나 텍스트 프로토콜이니까요.

    그러다 수신 이메일의 HTML을 자동으로 파싱하게 만들었고, 공격자들은 환호했습니다.

  19. stevekemp HN

    이메일이 텍스트 기반이긴 해도 MIME 파싱은 정말 골치 아픕니다(콘솔 기반 이메일 클라이언트를 직접 만들어 본 사람으로서 하는 말입니다).

    mutt의 파싱까지 거슬러 올라가 보면, 오래된 예로 CVE-1999-0940이 있습니다. 하지만 그건 수많은 사례 중 하나일 뿐일 겁니다.

  20. znpy HN

    86한다고요?

  21. yakshaving_jgt HN

    주방에서 일하다 나온 말이에요. 메뉴에서 뺀다, 아니면 어떻게든 주문할 수 없게 만든다는 뜻이죠.

  22. dboreham HN

    조개껍데기도 있죠.

  23. SketchySeaBeast HN

    조개껍데기 86개요? 전 세 개로도 뭘 해야 할지 모르겠는데요.

  24. Grimeton HN

    안녕하세요, 반갑습니다!

    그 대사 알아들었어요.

  25. zdragnar HN

    SketchySeaBeast라면 조개껍데기 세 개로 쓸 방법쯤은 분명 떠올릴 수 있을 텐데요.

  26. fuzzfactor HN

    전통적으로는 상황이 충분히 나빠졌을 때 쓸데없는 짐을 배 밖으로 던져 버리는 걸 말합니다.

    예를 들어 18세기 이후, 튼튼하던 낡은 범선에 물이 새기 시작할 때 같은 경우입니다.

    “deep-six(바다 깊숙이 던져 버리다)”의 숫자판 격입니다.

  27. DANmode HN

    어쩌면 다른 사람이 쓰겠죠,

    마이크로소프트가 …보안 최우선 기업으로 스스로를 재창조하고 나면요?

  28. pjmlp HN

    그랬다고들 합니다. 그래서 지금 Azure의 대부분은 Java, C#, Go, Rust가 섞여 있고 C와 C++는 아주 적습니다.

    그리고 SFI 프로그램도 있고요.

    하지만 이건 윈도 애플리케이션이고, WinDev에서 Rust가 어느 정도 진전을 이루긴 했어도 여전히 C와 C++의 영역입니다. Rust는 예전에 .NET이 받던 것과 똑같은 미지근한 반응을 받고 있고요.

    Paint가 어떤 언어로 작성됐을지 맞혀 보세요.

    그럼에도 마이크로소프트는 윈도, macOS, iOS, 안드로이드 방식의 샌드박싱을 꽤 오래전부터 강화하고 있습니다. 바로 당신이 말한 보안 최우선 기업이 되기 위해서입니다.

  29. NooneAtAll5 HN

    “아무 데나 인터넷 접속 좀 붙이지 마라”가 다른 언어를 써야 가능한 일인 줄은 몰랐네요.

  30. vaylian HN

    윈도 비스타 기억나세요? 취소냐, 허용이냐?

Hacker News에서 보기 ↗