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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2021-38297-Go-wasm-Replication — 교육용 개념 증명으로, CVE-2021-38297을 재현합니다. 이는 Go WASM 버퍼 오버플로우로 이어져 저장형 XSS를 발생시킵니다. 취약한 앱 설정, 익스플로잇 재현 단계, 보안 연구를 위한 패치 가이드가 포함되어 있습니다. | Kitploit
도구/GitHubGitHub/paras98/cve-2021-38297-go-wasm-replication
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityCTFPapers & ResearchLearning & EducationBinary ExploitationLabs & Practice
GitHubparas98/cve-2021-38297-go-wasm-replication

CVE-2021-38297-Go-wasm-Replication

교육용 개념 증명으로, CVE-2021-38297을 재현합니다. 이는 Go WASM 버퍼 오버플로우로 이어져 저장형 XSS를 발생시킵니다. 취약한 앱 설정, 익스플로잇 재현 단계, 보안 연구를 위한 패치 가이드가 포함되어 있습니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

🚨 CVE-2021-38297 악용: GO Wasm 버퍼 오버플로우 탐험기 🚨

🌐 취약점 개요 🌐

WebAssembly(WASM) 🌍는 C, C++, Rust, GO와 같은 고급 언어를 최신 웹 브라우저에서 원활하게 실행할 수 있게 해주는 최첨단 바이너리 명령어 형식입니다. 그러나 CVE-2021-38297 🚩의 발견은 GO로 컴파일된 WASM 바이너리의 컴파일 및 로딩 과정에서 심각한 결함을 드러냈습니다. 이 취약점은 GO에서 제공하는 JavaScript WASM 로더(wasm_exec.js)에서 발견되었으며, argv 인수에 데이터를 제한 없이 포함할 수 있었습니다. argv가 WASM의 선형 메모리에 저장되므로, 악의적인 공격자는 이를 이용해 과도하게 큰 argv 입력으로 GO 컴파일 WASM 프로그램의 선형 메모리를 덮어써 예측 불가능하고 위험한 결과를 초래할 수 있습니다. 이 취약점은 GO 1.17.2 이전 버전에서 중요한 문제였습니다. 요약하자면:

  1. 프론트엔드는 각 게시물과 댓글을 렌더링합니다.
  2. 렌더링하는 동안 GO WASM 모듈이 로드되어 argv 변수와 메모리 주소 0x5000에 있는 게시물을 통해 댓글을 처리합니다.
  • toLeetSpeak 및 processSharedVar와 같은 함수가 각각 댓글 및 게시물 콘텐츠에 사용됩니다.
  • 💻 취약한 애플리케이션: Vuln-Twitter 💻

    개념 증명에서는 "Vuln-Twitter"를 소개합니다. 이는 사용자가 게시물과 댓글을 통해 콘텐츠를 생성할 수 있는 모의 소셜 미디어 플랫폼입니다. Node.js 웹 서버와 SQLite를 데이터 저장소로 사용하며, Vuln-Twitter의 프론트엔드는 일반 JavaScript와 함께 동적 콘텐츠 렌더링을 위해 wordprocessor.wasm이라는 GO WASM 모듈을 활용합니다. 특히 이 모듈에는 toLeetSpeak와 같은 메서드가 포함되어 사용자 입력을 스타일리시한 "LeetSpeak"로 변환하여 매력적인 사용자 경험을 제공합니다. Vuln twitter UI

    버퍼 오버플로우 악용

    우리의 탐구에서는 콘텐츠 렌더링 단계에서 중요한 악용 지점을 발견했습니다. 각 댓글은 GO WASM 모듈에 의해 변환됩니다. 특별히 조작된 대형 댓글이 취약점을 트리거하여 버퍼 오버플로우를 일으키고 원래 게시물 내용을 조작할 수 있으며, 이는 고전적인 Stored XSS 공격 벡터를 보여줍니다. 이 취약점은 악의적인 데이터 조작 가능성을 강조할 뿐만 아니라 웹 개발 및 WASM 애플리케이션 맥락에서 안전한 프로그래밍 관행의 광범위한 영향을 강조합니다. 다음은 동일한 작업을 수행하는 코드 부분을 참조하세요.

    렌더링 로직

    댓글 렌더링 시 WASM 선형 메모리 다이어그램:

    렌더링 로직 메모리 악용 흐름

    악용 재현

    이 취약점을 더 자세히 탐구하고자 하는 열성팬과 연구자들을 위해, 특정 취약한 GO 버전을 사용하여 악용 환경을 재현하는 상세한 단계를 제공합니다. 이 실습 접근 방식은 취약점의 메커니즘과 잠재적 완화 전략에 대한 더 깊은 이해를 촉진합니다. 참고: 재현하려면 로컬에 GO 버전 go1.17.1을 설치해야 합니다. 이 시나리오에서 사용된 취약한 버전입니다. 특정 GO 버전 설치에 대한 공식 GO 문서를 참조하세요.

    이제 위 시나리오를 재현해 보겠습니다.

    1. 전체 애플리케이션을 설정하려면 먼저 프로젝트를 클론하세요: git clone [email protected]:gkrishnan724/CVE-2021-38297.git && cd vuln-twitter
    2. npm install을 실행하여 모든 종속성을 설치하세요.
    3. npm run resetDB를 실행하면 몇 개의 게시물과 댓글로 데이터베이스가 초기화됩니다.
    4. npm run dev를 실행하면 로컬 서버가 시작되고 브라우저에서 localhost:3000을 열면 로그인 페이지가 표시됩니다.

    이제 악성 계정으로 로그인해 보겠습니다. 사용자 이름: I_CANT_HACK, 비밀번호: hacker를 사용하세요. 로그인하면 몇 개의 게시물이 있는 피드가 표시됩니다.

    이 게시물이 매우 흥미로워 보입니다:

    Amazon: ready 4 black friday? https://www.amazon.com/blackfriday

    위 기술을 사용하여 Amazon.com의 게시물을 악성 링크로 덮어쓸 수 있다면 어떨까요?

    exploit.txt 파일을 참조하세요. 이 파일에는 주소 0x5000까지 모든 것을 덮어쓰도록 "A"로 채워진 댓글이 포함되어 있습니다. 마지막에 텍스트 ready for black friday? https://evil.com/blackfriday를 볼 수 있습니다. 이 텍스트를 복사하여 위 게시물에 댓글로 달면 원래 게시물을 위 텍스트로 덮어쓸 수 있습니다.

    직접 시도해 보세요 :) 악용

    🛠️ 패치 및 완화 🛠️

    이 취약점의 심각성을 인지하여, 업데이트되고 안전한 GO 버전을 사용하는 포괄적인 패치 전략도 개요를 제공합니다. 이 섹션은 개발자와 시스템 관리자가 애플리케이션을 이러한 취약점으로부터 강화하기 위한 가이드 역할을 하며, 정기적인 소프트웨어 업데이트와 경계적인 보안 관행의 중요성을 강조합니다.

    이 애플리케이션에는 패치 스크립트도 제공했습니다. 이는 최신 GO 버전을 사용합니다.

    1. npm run patchServer 대상 실행

    이렇게 하면 새 버전으로 GO 파일을 다시 컴파일하고 패치 버전으로 서버를 시작합니다.

    이제 게시물이 덮어쓰여지지 않는 것을 확인할 수 있을 것입니다. 콘솔을 관찰하면 대신 Argument length too long 오류가 표시됩니다. 패치

    💡 결론 및 성찰 💡

    CVE-2021-38297의 악용과 완화를 통한 우리의 여정은 WASM을 통한 웹 환경에서 고급 프로그래밍 언어 통합이 제시하는 도전과 기회에 대한 귀중한 통찰력을 제공합니다. 이는 소프트웨어 개발에서 보안 관행에 대한 비판적 검토를 촉구하며, 취약점 관리에 대한 사전 예방적 접근과 안전한 코딩 표준 채택을 독려합니다. 우리의 이해에 기반하여 GO 선형 메모리 레이아웃은 아래와 같다고 생각합니다.

    GO 메모리 레이아웃

    🎓 발표 및 학술 기여 🎓

    카네기 멜론 대학교 학생으로서, CVE-2021-38297에 대한 우리의 조사는 사이버 보안에 대한 광범위한 학술 및 전문 담론에 기여하며, 새로운 기술이 소프트웨어 보안에 미치는 영향에 대한 실용적인 사례 연구를 제공합니다. 검토 가능한 발표 자료는 우리의 발견과 방법론을 더욱 명확히 하여 사이버 보안 커뮤니티 간의 대화와 협력을 초대합니다.

    🌟 크레딧 및 기여 🌟

    이 프로젝트는 헌신적인 학생 및 연구자 팀이 이끄는 공동 연구 및 학문적 탐구의 증거입니다.

    • Paras Saxena (@paras98)
    • Gopala Krishnan (@gkrishnan724)
    • Zhejia Yang (@zildjianpoi)
    • Shubham Kulkarni (@shubhamkulkarni97)
    • Anisha Nilakantan

    기술적 설명

    취약한 애플리케이션: Vuln-Twitter

    이 개념 증명은 여러 사용자가 콘텐츠와 댓글을 게시할 수 있는 소셜 미디어 애플리케이션인 Vuln-Twitter를 보여줍니다. Node.js 기반 웹 서버는 SQLite를 사용하여 게시물 및 댓글 데이터를 저장합니다.

    프론트엔드는 일반 JS와 함께 wordprocessor.wasm이라는 GO WASM 모듈을 사용합니다. 이 모듈은 입력 문자열을 "LeetSpeak"로 변환하는 toLeetSpeak와 같은 메서드를 노출합니다(예: "Hello!"가 "h3ll0!"로 변환됨).

    GO WASM 모듈은 게시물과 댓글을 LeetSpeak로 렌더링하는 데 도움을 줍니다.

    버퍼 오버플로우 악용

    프론트엔드 렌더링 과정에서 서버로부터 게시물과 댓글을 받을 때, 각 댓글은 GO WASM 모듈을 사용하여 "LeetSpeak"로 렌더링됩니다. 각 게시물의 댓글은 GO WASM 모듈 로딩 후 argv 변수의 일부로 전달됩니다.

    또한 GO 모듈에는 0x5000 주소에 있는 문자열을 읽어 간략화된 표현으로 변환하는 processSharedVar() 메서드가 있습니다(예: "How are you?"가 "How r u?"로 변환됨). 원본 게시물은 이 메서드가 접근할 수 있도록 선형 메모리의 0x5000에 명시적으로 추가되어 게시물 내용을 변경합니다.

    🔗 출처 및 추가 자료 🔗

    CVE-2021-38297과 그 광범위한 영향에 대해 더 깊이 알고 싶은 분들을 위해, 공식 보안 게시판부터 기술 블로그 및 학술 논문에 이르기까지 선별된 리소스 및 읽을거리 목록을 제공합니다. 이러한 자료는 취약점, 소프트웨어 보안에 미치는 영향, 웹 애플리케이션의 안전과 무결성을 보장하기 위한 지속적인 노력에 대한 포괄적인 통찰력을 제공합니다.

    • https://www.ibm.com/support/pages/security-bulletin-ibm-event-streams-affected-potential-buffer-overflow-golang-cve-2021-38297-0
    • https://vulmon.com/vulnerabilitydetails?qid=CVE-2021-38297&scoretype=cvssv3
    • https://pedromarquez.dev/blog/2023/2/node_golang_wasm
    • https://nvd.nist.gov/vuln/detail/CVE-2021-38297
    • https://github.com/golang/go/issues/48797
    • https://github.com/golang/go/commit/f63250238be548b7c6c24ae840541102a5cfef99
    • https://jfrog.com/blog/cve-2021-38297-analysis-of-a-go-web-assembly-vulnerability/
    • https://stackoverflow.com/questions/64763007/why-is-webassembly-safe-and-what-is-linear-memory-model
    • https://webassembly.org/
    • https://hacks.mozilla.org/2019/08/webassembly-interface-types/
    • https://blog.protekkt.com/blog/basic-webassembly-buffer-overflow-exploitation-example
    • https://www.usenix.org/system/files/sec20_slides_lehmann.pdf
    • https://xeiaso.net/talks/wasm-abi/

    원본 개발 저장소 : https://github.com/gkrishnan724/CVE-2021-38297

    도구 다운로드