diff --git a/README.md b/README.md
@@ -2,7 +2,7 @@
PHP2Shell Scanner tells you whether the PHP on your server is affected by PHP2Shell (CVE-2026-109618 and CVE-2026-109619), two unauthenticated remote code execution flaws in the PHP engine. It collects facts on the server itself, with a PHP probe and a POSIX shell script, and a static page computes the verdict entirely in your browser. It understands distribution backports, notices when PHP was patched but not restarted, and reports interim mitigations.
-- **Check page:** <https://sqzer-x.github.io/php2shell-scanner/> (Korean: <https://sqzer-x.github.io/php2shell-scanner/kr/>)
+- **Check page:** <https://php2shell.sqzer.com/> (Korean: <https://php2shell.sqzer.com/kr/>)
- **Advisories:** [GHSA-w8hw-w9fx-j79w](https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w) (CVE-2026-109618, memory corruption during out-of-memory handling) and [GHSA-6wmf-4rv5-p3rp](https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp) (CVE-2026-109619, use-after-free of global state)
- **Fixed upstream in:** 8.2.35, 8.3.36, 8.4.27, 8.5.12
diff --git a/site/index.html b/site/index.html
@@ -66,7 +66,7 @@
<a class="btn btn-download" href="downloads/php2shell-selfcheck.php" download aria-label="Download php2shell-selfcheck.php" title="Download"><svg viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3v12m0 0-5-5m5 5 5-5M4 21h16"/></svg>php2shell-selfcheck.php</a>
</div>
<p class="or">or fetch it on the server</p>
- <div class="cmdline"><code class="cmd" data-download="php2shell-selfcheck.php">curl -fsSLO https://sqzer-x.github.io/php2shell-scanner/downloads/php2shell-selfcheck.php</code><button class="copy" type="button" aria-label="Copy command"><svg class="i-copy" viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="12" height="12" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/></svg><svg class="i-check" viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg></button></div>
+ <div class="cmdline"><code class="cmd" data-download="php2shell-selfcheck.php">curl -fsSLO https://php2shell.sqzer.com/downloads/php2shell-selfcheck.php</code><button class="copy" type="button" aria-label="Copy command"><svg class="i-copy" viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="12" height="12" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/></svg><svg class="i-check" viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg></button></div>
<p class="sha" data-sha-for="php2shell-selfcheck.php"></p>
<ol class="howto">
<li>Set <code>$TOKEN</code> in the file to 12 or more random letters, digits, <code>-</code> or <code>_</code>, for example the output of <code>openssl rand -hex 16</code>.</li>
@@ -82,7 +82,7 @@
<a class="btn btn-download" href="downloads/php2shell-server-check.sh" download aria-label="Download php2shell-server-check.sh" title="Download"><svg viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3v12m0 0-5-5m5 5 5-5M4 21h16"/></svg>php2shell-server-check.sh</a>
</div>
<p class="or">or fetch it on the server</p>
- <div class="cmdline"><code class="cmd" data-download="php2shell-server-check.sh" data-then="sha256sum php2shell-server-check.sh">curl -fsSLO https://sqzer-x.github.io/php2shell-scanner/downloads/php2shell-server-check.sh && sha256sum php2shell-server-check.sh</code><button class="copy" type="button" aria-label="Copy command"><svg class="i-copy" viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="12" height="12" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/></svg><svg class="i-check" viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg></button></div>
+ <div class="cmdline"><code class="cmd" data-download="php2shell-server-check.sh" data-then="sha256sum php2shell-server-check.sh">curl -fsSLO https://php2shell.sqzer.com/downloads/php2shell-server-check.sh && sha256sum php2shell-server-check.sh</code><button class="copy" type="button" aria-label="Copy command"><svg class="i-copy" viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="12" height="12" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/></svg><svg class="i-check" viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg></button></div>
<p class="sha" data-sha-for="php2shell-server-check.sh"></p>
<p class="or">read it, then run it</p>
<div class="cmdline"><code class="cmd">sudo sh php2shell-server-check.sh --logs</code><button class="copy" type="button" aria-label="Copy command"><svg class="i-copy" viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="12" height="12" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/></svg><svg class="i-check" viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg></button></div>
diff --git a/site/kr/index.html b/site/kr/index.html
@@ -66,7 +66,7 @@
<a class="btn btn-download" href="../downloads/php2shell-selfcheck.php" download aria-label="php2shell-selfcheck.php 내려받기" title="내려받기"><svg viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3v12m0 0-5-5m5 5 5-5M4 21h16"/></svg>php2shell-selfcheck.php</a>
</div>
<p class="or">또는 서버에서 바로 받기</p>
- <div class="cmdline"><code class="cmd" data-download="php2shell-selfcheck.php">curl -fsSLO https://sqzer-x.github.io/php2shell-scanner/downloads/php2shell-selfcheck.php</code><button class="copy" type="button" aria-label="명령 복사"><svg class="i-copy" viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="12" height="12" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/></svg><svg class="i-check" viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg></button></div>
+ <div class="cmdline"><code class="cmd" data-download="php2shell-selfcheck.php">curl -fsSLO https://php2shell.sqzer.com/downloads/php2shell-selfcheck.php</code><button class="copy" type="button" aria-label="명령 복사"><svg class="i-copy" viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="12" height="12" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/></svg><svg class="i-check" viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg></button></div>
<p class="sha" data-sha-for="php2shell-selfcheck.php"></p>
<ol class="howto">
<li>파일 안의 <code>$TOKEN</code>을 영문자, 숫자, <code>-</code>, <code>_</code>로 이루어진 12자 이상의 임의 문자열로 바꿉니다. 예를 들어 <code>openssl rand -hex 16</code>의 출력을 쓰면 됩니다.</li>
@@ -82,7 +82,7 @@
<a class="btn btn-download" href="../downloads/php2shell-server-check.sh" download aria-label="php2shell-server-check.sh 내려받기" title="내려받기"><svg viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3v12m0 0-5-5m5 5 5-5M4 21h16"/></svg>php2shell-server-check.sh</a>
</div>
<p class="or">또는 서버에서 바로 받기</p>
- <div class="cmdline"><code class="cmd" data-download="php2shell-server-check.sh" data-then="sha256sum php2shell-server-check.sh">curl -fsSLO https://sqzer-x.github.io/php2shell-scanner/downloads/php2shell-server-check.sh && sha256sum php2shell-server-check.sh</code><button class="copy" type="button" aria-label="명령 복사"><svg class="i-copy" viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="12" height="12" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/></svg><svg class="i-check" viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg></button></div>
+ <div class="cmdline"><code class="cmd" data-download="php2shell-server-check.sh" data-then="sha256sum php2shell-server-check.sh">curl -fsSLO https://php2shell.sqzer.com/downloads/php2shell-server-check.sh && sha256sum php2shell-server-check.sh</code><button class="copy" type="button" aria-label="명령 복사"><svg class="i-copy" viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="12" height="12" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/></svg><svg class="i-check" viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg></button></div>
<p class="sha" data-sha-for="php2shell-server-check.sh"></p>
<p class="or">내용을 확인한 뒤 실행</p>
<div class="cmdline"><code class="cmd">sudo sh php2shell-server-check.sh --logs</code><button class="copy" type="button" aria-label="명령 복사"><svg class="i-copy" viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="12" height="12" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/></svg><svg class="i-check" viewBox="0 0 24 24" width="15" height="15" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg></button></div>
diff --git a/site/lib/judge.js b/site/lib/judge.js
@@ -1212,7 +1212,7 @@ const PROBE_DPKG_MAX = 40;
// Where the page publishes the probe and the server script (the download lines on its tabs).
// The published download location. The page swaps it for its own address, so a
// self-hosted copy points at its own downloads/.
-export const DEFAULT_DOWNLOADS = 'https://sqzer-x.github.io/php2shell-scanner/downloads/';
+export const DEFAULT_DOWNLOADS = 'https://php2shell.sqzer.com/downloads/';
const DOWNLOADS = DEFAULT_DOWNLOADS;
const FETCH_SCRIPT = `curl -fsSLO ${DOWNLOADS}php2shell-server-check.sh\nsha256sum php2shell-server-check.sh`;
const RHEL_NAMES = {
diff --git a/test/remediation.test.mjs b/test/remediation.test.mjs
@@ -25,8 +25,8 @@ const CVES = 'CVE-2026-109618 --cve CVE-2026-109619';
const GREP = 'grep -e CVE-2026-109618 -e CVE-2026-109619';
const MODULE = '8.2.13-1.module+el9.4.0+20827+3f2b0b48';
// The download lines of the page's Server script and PHP probe tabs.
-const FETCH = 'curl -fsSLO https://sqzer-x.github.io/php2shell-scanner/downloads/php2shell-server-check.sh\nsha256sum php2shell-server-check.sh';
-const PROBE = "curl -fsSLO https://sqzer-x.github.io/php2shell-scanner/downloads/php2shell-selfcheck.php\ncurl -s 'https://<site>/<file>.php?k=<TOKEN>'";
+const FETCH = 'curl -fsSLO https://php2shell.sqzer.com/downloads/php2shell-server-check.sh\nsha256sum php2shell-server-check.sh';
+const PROBE = "curl -fsSLO https://php2shell.sqzer.com/downloads/php2shell-selfcheck.php\ncurl -s 'https://<site>/<file>.php?k=<TOKEN>'";
// Every fixture used below, with the verdict it must keep: the remediation work changes no verdict.
const F = {
|