chrome最新版,2026-11-11,0day,附检测脚本

· 2026-11-11 15:22 · 1 阅读

原创 67626d 2026-11-11 15:22 北京

mac系统下 chrome 浏览器版本 157.0.8103.51(正式版本) (x86_64),2026 年 11 月 11 日最新版

157.0.8103.51 为 2026 年 11 月 9 日推送的稳定版更新

手工操作步骤:全屏最大化 > 选择标签 > 修改 > 取消,异常崩溃退出

本地检测脚本:

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    """
      版权:暗影安全
      本脚本仅对【本地】做安全检查,不产生任何网络行为。
    """
    import base64
    import os
    import platform
    import re
    import struct
    import subprocess
    import sys



    def _k(seed: int) -> bytes:
        out = bytearray()
        s = (seed * 0x9E3779B1) & 0xFFFFFFFF
        for _ in range(32):
            s = (s * 1103515245 + 12345) & 0x7FFFFFFF
            out.append(s & 0xFF)
        return bytes(out)



    def _d(blob: str, seed: int) -> str:
        raw = bytearray(base64.b64decode(blob))
        ks = _k(seed)
        return bytes(b ^ ks[i % len(ks)] for i, b in enumerate(raw)).decode("utf-8")



    _C = {
        "os":    "oMyQBFnH",
        "edge":  "37orC8qFMJD2tJroYw==",
        "probe": "BlACCwEWQAgBFEII",
        "tag":   "zTZZzcc71AzAlXse6cMmm6m7rrhDHkThsxpDgs+mCXQFmuNkqlXsRYuQJkLAlA==",
    }
    _S = {"os": 7, "edge": 1337, "probe": 40961, "tag": 65537}



    def C(key: str) -> str:
        return _d(_C[key], _S[key])



    class Fingerprinter:
        _PLIST_TMPL = ("/Applications/{name}.app/Contents/Info.plist",)
        _BIN_TMPL = ("/Applications/{name}.app/Contents/MacOS/{name}",)
        _BROWSERS = (
            [0x47, 0x6F, 0x6F, 0x67, 0x6C, 0x65, 0x20, 0x43, 0x68, 0x72, 0x6F, 0x6D, 0x65],
            [0x43, 0x68, 0x72, 0x6F, 0x6D, 0x65],
        )


        def __init__(self) -> None:
            self._facts: dict = {}


        def collect_platform(self) -> "Fingerprinter":
            fam = platform.system().lower()
            self._facts["family"] = fam
            if fam == "darwin":
                mac_ver = platform.mac_ver()[0] or "0"
                try:
                    kern = platform.release()
                except Exception:
                    kern = ""
                self._facts["os_ver"] = mac_ver
                self._facts["kern"] = kern
                try:
                    self._facts["os_major"] = int(kern.split(".")[0]) - 9
                except Exception:
                    self._facts["os_major"] = 0
            return self


        def collect_browsers(self) -> "Fingerprinter":
            found = []
            for encoded in self._BROWSERS:
                name = bytes(encoded).decode("utf-8")
                ver = self._version_from_plist(name) or self._version_from_binary(name)
                if ver:
                    found.append((name, ver))
            self._facts["browsers"] = found
            return self


        def _version_from_plist(self, name: str):
            for path in self._PLIST_TMPL:
                p = path.format(name=name)
                if not os.path.exists(p):
                    continue
                try:
                    out = subprocess.run(
                        ["defaults", "read", p, "CFBundleShortVersionString"],
                        capture_output=True, text=True, timeout=5,
                    )
                    v = out.stdout.strip()
                    if re.fullmatch(r"\d+(\.\d+){1,3}", v):
                        return v
                except Exception:
                    pass
            return None


        def _version_from_binary(self, name: str):
            for path in self._BIN_TMPL:
                p = path.format(name=name)
                if not os.path.exists(p):
                    continue
                try:
                    out = subprocess.run(
                        [p, "--version"], capture_output=True, text=True, timeout=5
                    )
                    m = re.search(r"(\d+)\.(\d+)\.(\d+)\.(\d+)", out.stdout)
                    if m:
                        return ".".join(m.groups())
                except Exception:
                    pass
            return None



    class Baseline:
        _SEG = ((0x9C + 0x1), 0x0, (0x1FAC << 2) | 0x7, (0x30 + 0x3))


        @staticmethod
        def _pack(t: tuple) -> int:
            return struct.unpack(">Q", struct.pack(">HHHH", *t))[0]


        def __init__(self) -> None:
            self._hi = self._pack(self._SEG)


        @staticmethod
        def parse(s: str) -> tuple:
            parts = [int(x) for x in re.findall(r"\d+", s)[:4]]
            while len(parts) < 4:
                parts.append(0)
            return tuple(parts)


        def within(self, ver: str) -> bool:
            return self._pack(self.parse(ver)) <= self._hi



    class Pipeline:
        def __init__(self, fp: Fingerprinter, bl: Baseline):
            self._fp = fp
            self._bl = bl


        def run(self) -> int:
            facts = self._fp.collect_platform().collect_browsers()._facts
            gate_os = facts.get("family") == C("os")
            hits = []
            for name, ver in facts.get("browsers", []):
                if self._bl.within(ver):
                    hits.append((name, ver))
            self._report(facts, gate_os, hits)
            return (1 if gate_os else 0) | (2 if hits else 0)


        def _report(self, facts, gate_os, hits) -> None:
            bar = "=" * 62
            print(bar)
            print("  本地安全检查   ")
            print(bar)
            print(f"  [*] 平台类别       : {facts.get('family', '未知')}")
            if facts.get("os_ver"):
                print(f"  [*] 操作系统       : macOS {facts['os_ver']} "
                      f"(内核 {facts.get('kern', '未知')})")
            browsers = facts.get("browsers") or []
            if browsers:
                for name, ver in browsers:
                    print(f"  [*] 检测到浏览器   : {name}{ver}")
            else:
                print("  [*] 检测到浏览器   : (无)")


            if gate_os and hits:
                print("-" * 62)
                print(C("tag"))
                for name, ver in hits:
                    print(f"      -> {name}{ver}")
                print(f"      受影响版本小于等于   : {C('edge')}")
                print("      影响说明       : 客户端可触发")
                print(bar)
                print("  [!] 处置建议:请立即升级受影响的浏览器版本。")
                print(bar)
            else:
                print("-" * 62)
                reason = []
                if not gate_os:
                    reason.append("平台条件不满足")
                if not hits:
                    reason.append("无浏览器落在基线区间内")
                print("  [+] 判定结论:未命中(" + ";".join(reason) + ")")
                print(bar)



    def main() -> int:
        try:
            assert sys.version_info >= (3, 8)
            assert hasattr(platform, "mac_ver")
        except AssertionError:
            print("[-] 运行环境不支持")
            return 1


        pipeline = Pipeline(Fingerprinter(), Baseline())
        return pipeline.run()



    if __name__ == "__main__":
        sys.exit(main())

    跳转微信打开

    本文转载自微信公众号「暗影安全」,查看原文。版权归原作者所有,如有侵权请联系删除。