Manfred Paul는 Pwn2Own Berlin 2025에서 Firefox의 IonMonkey JavaScript JIT 컴파일러에 존재하는 취약점(CVE-2025-4919, ZDI-25-291)을 악용했습니다. 이 취약점은 선형 표현식을 단순화하는 데 사용되는 ExtractLinearSum 함수 내부에 존재했습니다. 이 함수는 Modulo 수학 공간을 잘못 처리하여 경계 검사에 문제를 일으켰습니다. ExtractLinearSum을 사용하는 TryEliminateBoundsCheck 함수는 잠재적인 정수 오버플로우를 고려하지 않고 경계 검사를 병합했습니다. 이 결함으로 인해 대형 타입 배열의 경계 검사를 우회할 수 있었습니다. 이 취약점을 악용하려면 대형 타입 배열을 생성하고 인덱스를 조작하여 경계 외 읽기 또는 쓰기를 트리거했습니다. 이 익스플로잇은 비트 연산을 사용하여 래핑 덧셈을 강제하고 경계 검사 제거를 오도했습니다. BigInt는 익스플로잇을 방해할 수 있는 컴파일러 최적화를 방지하는 데 사용되었습니다. 이 취약점의 근본 원인은 ExtractLinearSum 함수의 다양한 호출 지점에서 일관되지 않은 수학 공간 처리입니다. 루프 분석을 위해 ExtractLinearSum을 사용하는 Ion 컴파일러의 다른 부분에도 유사한 취약점이 존재할 수 있습니다. Mozilla는 Firefox 138.0.4에서 이 취약점을 패치했습니다. 이 익스플로잇은 JIT 컴파일러에서 검사되지 않은 정수 연산의 위험성을 보여주었습니다.
ExtractLinearSum함수 내부에 존재했습니다. 이 함수는Modulo수학 공간을 잘못 처리하여 경계 검사에 문제를 일으켰습니다.ExtractLinearSum을 사용하는TryEliminateBoundsCheck함수는 잠재적인 정수 오버플로우를 고려하지 않고 경계 검사를 병합했습니다. 이 결함으로 인해 대형 타입 배열의 경계 검사를 우회할 수 있었습니다. 이 취약점을 악용하려면 대형 타입 배열을 생성하고 인덱스를 조작하여 경계 외 읽기 또는 쓰기를 트리거했습니다. 이 익스플로잇은 비트 연산을 사용하여 래핑 덧셈을 강제하고 경계 검사 제거를 오도했습니다. BigInt는 익스플로잇을 방해할 수 있는 컴파일러 최적화를 방지하는 데 사용되었습니다. 이 취약점의 근본 원인은ExtractLinearSum함수의 다양한 호출 지점에서 일관되지 않은 수학 공간 처리입니다. 루프 분석을 위해ExtractLinearSum을 사용하는 Ion 컴파일러의 다른 부분에도 유사한 취약점이 존재할 수 있습니다. Mozilla는 Firefox 138.0.4에서 이 취약점을 패치했습니다. 이 익스플로잇은 JIT 컴파일러에서 검사되지 않은 정수 연산의 위험성을 보여주었습니다.