CVE-2024-23263
Overview
Advisory: Apple Security Advisory
Impact:
Description: Processing maliciously crafted web content may prevent Content Security Policy from being enforced
Researchers: Johan Carlsson (joaxcar)
| Attribute | Value |
|---|---|
| CVE | CVE-2024-23263 |
| Bugzilla | 264811 |
| Component | WebKit |
| Bug Class | LogicError |
| Severity | medium |
| Commit | 15bdd42ec40b5b90… |
| Advisory | Apple Advisory |
Root Cause Analysis
A logic issue was addressed with improved validation.
Files Changed
Source Files
Tools/Scripts/update-angle
Patch Preview
diff --git a/Tools/Scripts/update-angle b/Tools/Scripts/update-angle
index ef380ec9a7f7..d8f402d3a9e8 100755
--- a/Tools/Scripts/update-angle
+++ b/Tools/Scripts/update-angle
@@ -2,6 +2,7 @@
set -e
cd "$(dirname "$0")/../../Source/ThirdParty/ANGLE"
ANGLE_DIR="$PWD"
+ANGLE_TARGET_COMMIT="origin/main"
regenerate_changes_diff() {
echo "Regenerating changes.diff."
@@ -42,11 +43,12 @@ regenerate_program_version_id() {
usage() {
SCRIPT_NAME=$(basename "$0")
- echo "USAGE: $SCRIPT_NAME [-h|--help] -[--regenerate-changes-diff[-main]]"
+ echo "USAGE: $SCRIPT_NAME [-h|--help] -[--regenerate-changes-diff[-main]] [commit]"
echo " -h | --help Print this help message."
echo " --regenerate-changes-diff Regenerate ANGLE changes.diff to last upstream merge."
echo " --regenerate-changes-diff-main Regenerate ANGLE changes.diff to upstream origin/main."
echo " --regenerate-program-version-id Regenerate ANGLE ANGLEShaderProgramVersion.h."
+ echo " commit The ANGLE commit to update to. Defaults to origin/main"
}
if [ ! -z "$1" ] ; then
@@ -90,10 +92,14 @@ if [ ! -z "$1" ] ; then
echo
echo "Success."
exit 0
+
+ elif [ "${1:0:2}" = -- ]; then
+ echo "ERROR: Unrecognized argument: $1"
+ usage
+ exit 1
+ else
+ ANGLE_TARGET_COMMIT="$1"
fi
- echo "ERROR: Unrecognized argument: $1"
- usage
- exit 1
fi
echo "This script helps you update the copy of ANGLE in Source/ThirdParty/ANGLE"
@@ -136,7 +142,7 @@ wait_for_rebase_to_complete() {
cleanup_after_successful_rebase_and_exit() {
cd "$ANGLE_DIR"
echo
- regenerate_changes_diff "origin/main"
+ regenerate_changes_diff "$ANGLE_TARGET_COMMIT"
git --no-pager diff -b --cached "$LAST_ROLL_COMMIT_HASH" -- Compiler.cmake GLESv2.cmake
echo
echo "Rebase complete!"
@@ -155,7 +161,7 @@ cleanup_after_successful_rebase_and_exit() {
echo "Press Enter to continue after fixing build:"
read -r
regenerate_program_version_id
- regenerate_changes_diff "origin/main"
+ regenerate_changes_diff "$ANGLE_TARGET_COMMIT"
echo "Generating contents of commit message into commit-message.txt."
echo "Be sure to copy out this file's contents and delete it before committing."
echo "Update ANGLE to $(git log -1 ${COMMIT_HASH} --format=%cs) (${COMMIT_HASH}))" > commit-message.txt
@@ -196,8 +202,9 @@ cd "$ANGLE_DIR"
echo "Downloading latest ANGLE via git clone."
# Remove all files including hidden ones, but not . or ..
rm -rf ..?* .[!.]* ./*
-git clone --branch main https://chromium.googlesource.com/angle/angle .
+git clone https://chromium.googlesource.com/angle/angle .
echo "Successfully downloaded latest ANGLE."
+git checkout -q "$ANGLE_TARGET_COMMIT"
echo "Commit hash: "
COMMIT_HASH=$(git rev-parse HEAD)
echo "$COMMIT_HASH"
@@ -222,7 +229,7 @@ sed -i.bak -e "s/<string>[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]<\/string>/<s
rm ANGLE.plist.bak
echo "Translating gni build files to cmake."
-git checkout origin/main -- src/compiler.gni src/libGLESv2.gni src/libANGLE/renderer/d3d/BUILD.gn
+git checkout "$ANGLE_TARGET_COMMIT" -- src/compiler.gni src/libGLESv2.gni src/libANGLE/renderer/d3d/BUILD.gn
./gni-to-cmake.py src/compiler.gni Compiler.cmake
./gni-to-cmake.py src/libGLESv2.gni GLESv2.cmake
./gni-to-cmake.py src/libANGLE/renderer/d3d/BUILD.gn D3D.cmake --prepend 'src/libANGLE/renderer/d3d/'
@@ -244,7 +251,7 @@ git replace --graft "$LAST_ROLL_COMMIT_HASH" "$PREVIOUS_ANGLE_COMMIT_HASH"
git checkout -b rebased-webkit-changes
echo "Rebasing WebKit's local changes on latest ANGLE main."
-if ! git rebase origin/main; then
+if ! git rebase "$ANGLE_TARGET_COMMIT"; then
echo
echo "There is now a temporary git repo in Source/ThirdParty/ANGLE with a"
echo "rebase in progress. You must resolve the merge conflict and continue"