문제

Mozilla Firefox의 xpcsafejsobject 래퍼는 실제로 무엇을합니까?

MDC의 문서는 다음과 같습니다.

이 래퍼는 XPCNativeWrapper의 문제를 해결하기 위해 만들어졌습니다. 특히, 일부 확장자는 기본적으로 구현되지 않은 컨텐츠 정의 객체에 안전하게 액세스 할 수 있기를 원하며 (강력한 동작 보장없이 XPCNativeWrapper의 기본 JavaScript 객체에 액세스 할 수 있기를 원합니다). XPCSJOW는 크롬 코드 사이의 버퍼 역할을합니다.

이것은 나에게 많이 말하지 않습니다. 특히 XPCSafeObject를 통해 객체에 액세스하는 것이 직접 액세스하는 것과 어떻게 다른지 알 수 없습니다.

편집하다: 래퍼의 목적은 일반적으로 특권 코드를 보이지 않는 코드로부터 보호하는 것임을 이해합니다. 내가 이해하지 못하는 것은 (그리고 문서화되지 않는 것) 어떻게 정확히 xpcsafejsobject가이를 수행합니다.

부동산에 접근하기 전에 권한을 떨어 뜨리나요?

도움이 되었습니까?

해결책

일반적으로 포장지의 목적은 비공식 코드와 상호 작용할 때 권한이있는 코드를 보호하는 것입니다. 비공식적 인 코드의 저자는 부작용으로 나쁜 것을 실행하기 위해 속성의 getter를 재정의하는 것과 같이 JavaScript 객체를 재정의하여 악의적 인 일을 할 수 있습니다. 권한이있는 코드가 속성에 액세스하려고하면 불량 코드를 권한있는 코드로 실행합니다. 래퍼는 이것을 방지합니다. 이 페이지 아이디어를 설명합니다.

xpcsafejsobject는 비명적으로 구현되지 않은 JavaScript 객체 (예 : Window, Document 등이 아니라 사용자 정의 객체)에 대한 래퍼를 제공합니다.)

편집 : 구현 방법은 소스 코드 (지금은 완전히로드되지 않습니다.) 또한 xpcsafejsobject on DXR 다른 관련 소스 파일의 경우.

다른 팁

실제로 XPCSafejSobjectWrapper는 Windows 및 문서를 포함한 모든 콘텐츠 개체에 사용됩니다 (실제로 가장 일반적으로 필요한 경우) XSS 공격이 자동으로 권한 에스컬레이션 공격으로 전환되는 것을 막기 위해 발명되었다고 생각합니다 (브라우저 자체에 대한 XSS를 수행 함). . 적어도 지금은 XSS 공격이 발견되면 (그리고 불행히도 사람들이 계속 보일 것입니다) 전체 브라우저를 손상시키지 않습니다. 브라우저가 XSS 공격으로부터 스스로 방어 할 수있는 수동 (따라서 확장에 의해 우발적 오용이 발생하기 쉬운)이었던 XPCnativeWrapper의 자연스러운 발전입니다.

래퍼는 평가를받는 모든 코드가 크롬 권한없이 평가되도록합니다. 이 래퍼없이 객체에 직접 액세스하면 크롬 권한으로 코드가 실행될 수 있으며, 이는 코드가 거의 모든 것을 수행 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top