Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Open-Source-Seal-Security — 오픈소스 패키지가 tough-cookie 2.5.0을 사용하는 문제 수정 - CVE-2023-26136, | Kitploit
도구/GitHubGitHub/ronmadar/open-source-seal-security
Static AnalysisVulnerability AnalysisCode AnalysisSupply Chain SecurityLearning & Education
GitHubronmadar/open-source-seal-security

Open-Source-Seal-Security

오픈소스 패키지가 tough-cookie 2.5.0을 사용하는 문제 수정 - CVE-2023-26136,

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

SEAL SECURITY PROJECT : 오픈소스 엔지니어 태스크

tough-cookie V2.5.0 패키지의 새 버전을 생성하여 치명적인 취약점 CVE-2023-26136을 수정합니다. 이 프로젝트는 Node.js V20으로 작성되었습니다.

tough-cookie 패키지 4.1.3 이전 버전은 rejectPublicSuffixes=false 모드에서 CookieJar를 사용할 때 쿠키를 잘못 처리하여 Prototype Pollution에 취약합니다. 이 문제는 객체가 초기화되는 방식 때문에 발생합니다.

https://nvd.nist.gov/vuln/detail/CVE-2023-26136

Prototype Pollution은 JavaScript에 영향을 미치는 취약점입니다. Prototype Pollution은 객체와 같은 기존 JavaScript 언어 구조의 프로토타입에 속성을 주입할 수 있는 능력을 말합니다. JavaScript는 proto, constructor, prototype과 같은 마법 속성을 포함한 모든 Object 속성을 변경할 수 있게 합니다. 공격자는 이러한 속성을 조작하여 다른 값을 주입함으로써 기본 객체의 JavaScript 애플리케이션 객체 프로토타입을 덮어쓰거나 오염시킵니다. 그런 다음 Object.prototype의 속성은 프로토타입 체인을 통해 모든 JavaScript 객체에 상속됩니다. 이런 일이 발생하면 JavaScript 예외를 유발하여 서비스 거부를 일으키거나, 애플리케이션 소스 코드를 변조하여 공격자가 주입한 코드 경로를 강제함으로써 원격 코드 실행으로 이어질 수 있습니다.

프로토타입 오염이 발생하는 두 가지 주요 방식은 다음과 같습니다.

  • 안전하지 않은 Object 재귀 병합
  • 경로 기반 속성 정의

중요 사항: https://github.com/salesforce/tough-cookie/issues/282 https://security.snyk.io/package/npm/tough-cookie/2.5.0

=> MemoryCookieStore 클래스의 취약점을 수정하려면 cookie.domain이 __proto__로 설정될 때 프로토타입 오염을 방지하도록 putCookie 메서드를 수정해야 합니다.

https://github.com/salesforce/tough-cookie/pull/283

a. tough_cookie_2.5.0\node_modules\tough-cookie\lib\memstore.js 변경

memstore.js에서 새 객체 생성의 모든 발생 지점이 {} Object.create(Object.prototype)에서 Object.create(null)로 변경되었습니다. 이렇게 하면 오염될 수 있는 프로토타입 속성이 없는 객체 인스턴스를 사용하게 됩니다.

  • 예: console.log(a = Object.create(null)); 객체 a에는 속성(또는 __ proto __)이 없습니다.

b. 새 파일 생성, /node_modules/tough-cookie/lib/test-unit.js vanilla JS에서 사용하며, tests 폴더의 cookie_jar_test.js 파일에 있는 "Issue #282 - Prototype pollution" 테스트를 위한 것입니다.

명령어: node test-unit.js

c. 새 파일 생성, /node_modules/tough-cookie/lib/testVerifyVulnerable.js 취약한 동작이 수정되었는지 검증합니다.

명령어: node testVerifyVulnerable.js

  1. change.diff : https://github.com/ronmadar/Open-Source-Seal-Security/blob/cf768f1932f087c30ebec7fe60c3fca323b4e54b/change.diff

a. 일반 패키지 tough-cookie V 2.5.0

명령어: npm install [email protected] && node index.js

b. 변경 사항이 포함된 압축 패키지 tough-cookie V 2.5.0 tgz 형식

명령어: npm install ./tough-cookie-2.5.0-PATCHED.tgz && node index.js

c.

  • 취약점: 이 취약점은 Object.prototype에 newProperty라는 새 속성을 추가하여 직접 수정함으로써 발생합니다. 즉, JavaScript 환경의 모든 객체가 이 속성을 상속받게 되어 의도치 않게 동작이 변경될 수 있습니다.

잠재적 피해 -

  • Prototype Pollution: Object.prototype에 직접 속성을 추가하면 전체 프로토타입 체인을 오염시킬 위험이 있습니다. 이로 인해 프로토타입 체인을 탐색하는 모든 객체가 영향을 받을 수 있으므로 애플리케이션 전반에서 예기치 않은 동작이 발생할 수 있습니다.

  • 보안 위험: 웹 애플리케이션 환경에서 공격자는 프로토타입 오염을 악용하여 객체와 속성을 조작할 수 있으며, 이는 권한 상승, 정보 유출과 같은 보안 취약점으로 이어질 수 있습니다.

  • 호환성 문제: Object.prototype과 같은 핵심 프로토타입을 수정하면 표준 동작에 의존하는 다른 라이브러리나 프레임워크와의 호환성 문제가 발생할 수 있습니다. 이는 종속성을 통합하거나 업데이트할 때 오류나 예기치 않은 동작을 유발할 수 있습니다. d. 위에 작성함.

  1. tough-cookie 2.5.0의 포크된 GitHub 저장소 링크 https://github.com/ronmadar/tough-cookie

이 프로젝트 설치 방법

  1. 이 프로젝트를 clone하세요.
도구 다운로드