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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Tough-Cookie-v2.5.0-Patched — tough-cookie v2.5.0 패치: MemoryCookieStore에서 Object.create(null)을 사용하여 CVE-2023-26136 프로토타입 오염 취약점 수정, 익스플로잇 데모 및 단위 테스트 포함. | Kitploit
도구/GitHubGitHub/dani33339/tough-cookie-v2.5.0-patched
Static AnalysisVulnerability AnalysisCode AnalysisExploitationWeb SecurityLearning & Education
GitHubdani33339/tough-cookie-v2.5.0-patched

Tough-Cookie-v2.5.0-Patched

tough-cookie v2.5.0 패치: MemoryCookieStore에서 Object.create(null)을 사용하여 CVE-2023-26136 프로토타입 오염 취약점 수정, 익스플로잇 데모 및 단위 테스트 포함.

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
저장소 보기
121년 전아직 검토되지 않음
공유

Tough-Cookie v2.5.0 패치 - 프로토타입 오염 수정

개요

이 저장소는 tough-cookie 패키지 v2.5.0의 패치 버전으로, 심각한 프로토타입 오염(Prototype Pollution) 취약점(CVE-2023-26136)을 해결합니다. 이 취약점은 공격자가 JavaScript 객체에 속성을 주입하여 프로토타입 체인을 조작할 수 있게 합니다. 이로 인해 예상치 못한 동작, 원격 코드 실행과 같은 보안 위험, 이 패키지에 의존하는 애플리케이션에서의 호환성 문제가 발생할 수 있습니다.

취약점 설명

tough-cookie 패키지의 v4.1.3 미만 버전은 rejectPublicSuffixes=false 모드에서 CookieJar를 사용할 때 프로토타입 오염에 취약합니다. 이 취약점은 특히 cookie.domain이 __proto__로 설정된 경우 쿠키를 부적절하게 처리하는 데서 발생합니다. 이를 통해 공격자는 핵심 Object.prototype 객체를 수정하여 애플리케이션 전반에 걸쳐 광범위한 문제를 일으킬 수 있습니다.

CVE-2023-26136에 대한 자세한 내용은 다음을 참조하십시오:

  • NVD - CVE-2023-26136
  • Snyk - Tough-Cookie의 CVE-2023-26136
  • GitHub - Issue #282

프로토타입 오염의 잠재적 위험

프로토타입 오염은 다음과 같은 여러 심각한 위험을 초래할 수 있습니다.

  • 보안 취약점: 기본 Object.prototype을 수정함으로써 공격자는 객체의 동작을 조작하여 권한 상승, 민감한 데이터 접근 또는 애플리케이션의 보안 메커니즘 우회가 가능해집니다.

  • 서비스 거부(DoS): 프로토타입 체인을 오염시키면 시스템에서 예상치 못한 동작을 유발하여 충돌, 무한 루프 또는 리소스 고갈을 일으켜 정상 사용자가 애플리케이션을 사용할 수 없게 만들 수 있습니다.

  • 호환성 문제: Object.prototype을 변경하면 다른 라이브러리나 프레임워크와 상호작용할 때 오류 및 예기치 않은 동작이 발생할 수 있습니다. 프로토타입 체인에 의존하는 종속성이 손상되어 업데이트 중 통합 문제나 결함 있는 애플리케이션 동작이 발생할 수 있습니다.

  • 예기치 않은 애플리케이션 동작: 프로토타입 오염은 데이터 손상, 보안 침해 등 불규칙한 프로그램 동작을 유발할 수 있으며, 추가적인 악용 가능성이 생길 수 있습니다.

주요 수정 사항

이 패치는 MemoryCookieStore 클래스, 특히 putCookie 메서드를 수정하여 프로토타입이 없는 객체를 생성함으로써 프로토타입 오염을 방지합니다. 주요 변경 사항은 다음과 같습니다.

  1. 프로토타입이 없는 객체를 생성하기 위해 {} 대신 Object.create(null) 사용.
  2. cookie.domain = __proto__로 쿠키를 설정할 수 있는 취약점 수정.
  3. 취약점이 제대로 해결되었는지 확인하는 테스트 추가.

패치된 버전 설치

패치된 tough-cookie 버전을 설치하려면 다음 명령어를 사용하십시오:

npm install ./tough-cookie-2.5.0-PATCHED.tgz

수정 사항 테스트

이 저장소에는 프로토타입 오염 취약점이 성공적으로 해결되었는지 확인하기 위한 단위 테스트가 포함되어 있습니다.

prototype_pollution_test라는 이 테스트는 도메인이 __proto__인 쿠키를 설정해도 JavaScript 프로토타입 체인에 영향을 미치지 않는지 구체적으로 확인합니다. 이를 통해 프로토타입 오염이 방지되어 애플리케이션의 무결성이 유지됩니다.

테스트를 실행하고 수정 사항을 확인하려면 다음 명령어를 실행하십시오:

npm test

익스플로잇 시연

원본 버전과 패치된 버전 모두에서 익스플로잇을 시연하려면 아래 단계를 따르십시오.

원본 취약한 버전

취약한 버전의 tough-cookie를 설치합니다:

npm install [email protected] && node index.js

예상 출력:

Polluted object: {
  Slonser: Cookie="Slonser=polluted; Domain=__proto__; Path=/notauth; hostOnly=false; aAge=5ms; cAge=5ms",
  Auth: Cookie="Auth=Lol; Domain=google.com; Path=/notauth; hostOnly=false; aAge=5ms; cAge=5ms"
} EXPLOITED SUCCESSFULLY

이는 객체의 프로토타입이 오염되었음을 나타내며, 원본 버전에 취약점이 존재함을 확인합니다.

패치된 버전

 npm install ./tough-cookie-2.5.0-PATCHED.tgz && node index.js

예상 출력:

EXPLOIT FAILED

이는 익스플로잇이 성공적으로 차단되었음을 보여주며, 프로토타입 오염 취약점이 수정되었음을 확인합니다.

접근 방식 및 수행 단계

tough-cookie v2.5.0의 프로토타입 오염 취약점을 해결하는 과정은 체계적인 단계를 거쳐 수정이 철저하고 효과적이도록 진행되었습니다. 아래는 제가 따른 접근 방식에 대한 개요입니다.

1. 취약점 이해

프로토타입 오염(CVE-2023-26136)을 조사하여 그 영향을 이해하는 것부터 시작했습니다. 이 취약점은 cookie.domain 속성을 통해 프로토타입 체인에 속성을 주입할 수 있게 하여 원격 코드 실행과 같은 보안 위험을 초래할 수 있습니다.

2. 기존 수정 사항 연구

취약점 관련 GitHub 이슈와 토론을 탐색했습니다. 여기에는 프로토타입 오염을 방지하기 위해 Object.create(null)을 사용하는 tough-cookie v4.1.3의 수정 사항이 포함됩니다. 이를 통해 v2.5.0을 수정하는 데 필요한 변경 사항을 식별하는 데 도움이 되었습니다.

3. 취약한 버전과 패치된 버전 분석

v2.5.0과 v4.1.3을 비교하여 차이점을 이해하고 필요한 변경 사항을 정확히 파악했습니다. 주요 수정 사항은 악용을 방지하기 위해 프로토타입이 없는 객체를 사용하는 것이었습니다.

4. 솔루션 구현

MemoryCookieStore 클래스를 업데이트하여 {} 대신 Object.create(null)을 사용하도록 하여 프로토타입 오염이 발생하지 않도록 했습니다.

5. 솔루션 테스트

수정 사항을 확인하기 위해 단위 테스트를 작성하고, 패치된 버전에서 취약점이 어떻게 방지되는지 보여주는 익스플로잇 시연 스크립트(index.js)를 만들었습니다.

6. 수정 사항 문서화

마지막으로 설치 및 테스트 지침을 포함한 수정 사항을 문서화하고, 패치된 버전(tough-cookie-2.5.0-PATCHED.tgz)을 쉽게 배포할 수 있도록 패키징했습니다.

변경 사항 요약

v2.5.0에서 추가/수정된 파일

  • index.js: 취약점 및 수정 사항을 시연하는 메인 스크립트.
  • lib/memstore.js: 프로토타입 오염을 방지하기 위해 수정된 MemoryCookieStore 클래스.
  • test/ietf_data/parser.json: 테스트 데이터의 날짜를 업데이트하기 위해 수정됨.
  • test/prototype_pollution_test.js: 프로토타입 오염이 수정되었는지 확인하는 단위 테스트.
  • tough-cookie-2.5.0-PATCHED.tgz: tough-cookie 패키지의 패치된 버전.
도구 다운로드