Google 크롬에 wxallowed 옵션이 필요한 이유는 무엇입니까?

Google 크롬에 wxallowed 옵션이 필요한 이유는 무엇입니까?

OpenBSD에는 우수한 보안 완화 기능도 있습니다. 예: W^X:https://en.wikipedia.org/wiki/W%5EX

그러나 Google Chrome으로 인해 /usr/local FS에는 "wxallowed" 마운트 옵션이 있어야 부팅할 수 있습니다.

"wxallowed"는 지정된 FS에서 W^X를 비활성화합니다.

질문: Google Chrome에 wxallowed가 필요한 품질이 매우 낮은 코드가 있습니까, 아니면 좀 더 복잡한 코드가 있습니까?

전임자. 좋은 예: Firefox는 wxallowed 옵션 없이도 잘 작동하므로 W^X 완화를 사용합니다. 이는 매우 좋습니다.

그러나 또 다른 나쁜 예: LibreOffice는 wxallowed가 없으면 시작되지 않습니다.

답변1

@Kusalananda가 지적했듯이 문제가 있는 포트가 많이 있습니다. 비록 주요 문제는 JIT(Just-In-Time) 컴파일 코드라고 생각되지만 모든 사람을 위해 말할 수는 없습니다. 이는 프로그램이 시작된 후에 컴파일되는 코드입니다. 이 코드는 실행될 수 있도록 어딘가에 작성되어야 합니다. 이렇게 하면 코드가 작성된 페이지도 실행될 수 없기 때문에 W^X가 중단됩니다. 간단한 해결 방법은 wxallowed이러한 일이 발생하도록 설정하는 것입니다 . 하드픽스는 JIT 및 W^X 메모리 페이지를 지원하도록 코드를 다시 작성하는 것입니다(가능한 단점은 코드를 생성하는 노력 외에도 JIT+W^X 코드의 속도 저하를 포함하여 사용자에게 문제를 일으킬 수 있음) 소프트웨어의 성능이 좋을 것으로 예상됩니다).

누군가는 모든 포트를 살펴보고, 코드를 확인하고, 코드가 쓰기 가능한 페이지에서 실행하기에 적합한지 여부에 따라 잠재적으로 많은 변경을 수행하고 해당 변경 사항을 테스트해야 합니다. 일부 소프트웨어에는 많은 작업이 필요할 수 있는 반면, 다른 소프트웨어에는 변경 사항을 구현하는 데 필요한 인력 시간(또는 의지 또는 비용)이 부족할 수 있습니다. 확인하지 않고 응용 프로그램의 메모리 혼합 상태가 얼마나 나쁜지 알 수 있는 방법이 없으므로 W^X가 부족하면 "코드 품질이 좋지 않음"을 나타낼 수도 있고 그렇지 않을 수도 있습니다.

Firefox에서는 최근 JIT+W^X가 발생했습니다..

관련 정보