CloakHQ/CloakBrowser · critical · BinaryVerificationError
{exc}
Error message
{exc} What it means
The Pro SHA256SUMS manifest's signature failed verification; the underlying RuntimeError message is re-wrapped as BinaryVerificationError so the Pro router treats it as a tampering signal (abort), not a transient failure.
Source
Thrown at cloakbrowser/download.py:591
f"{base}/SHA256SUMS.sig", follow_redirects=True, timeout=10.0
)
sig_resp.raise_for_status()
except Exception as exc:
# Fetch failure is transient, not tampering — raise a plain RuntimeError
# (the router reports it as "unavailable, retry") rather than a
# BinaryVerificationError (which it surfaces as a tampering signal).
raise RuntimeError(
f"Could not fetch the signed SHA256SUMS for Pro {version} ({exc})"
) from exc
manifest_bytes = manifest_resp.content
# _verify_signature / _verify_checksum raise plain RuntimeError; convert to
# BinaryVerificationError so the Pro router treats them as tampering signals
# (re-raise) rather than transient failures (fall back to free).
try:
_verify_signature(manifest_bytes, sig_resp.content)
except RuntimeError as exc:
raise BinaryVerificationError(str(exc)) from exc
manifest_text = manifest_bytes.decode("utf-8")
# Version binding: same forced-downgrade defense as the official path.
declared = _parse_manifest_version(manifest_text)
if declared != version:
raise BinaryVerificationError(
f"Version mismatch in signed Pro SHA256SUMS: requested {version}, "
f"manifest declares {declared or 'none'}. Refusing (possible downgrade)."
)
tarball_name = get_archive_name()
expected = _parse_checksums(manifest_text).get(tarball_name)
if expected is None:
raise BinaryVerificationError(
f"Signature-verified Pro SHA256SUMS has no entry for {tarball_name} — "
f"cannot confirm binary integrity."
)
try:View on GitHub (pinned to d6bad5de26)
Solutions
- Do not retry blindly — verify your network path (DNS, proxy, TLS)
- Update cloakbrowser to the latest version in case of signing key rotation
- Report the incident upstream — this indicates authenticity failure
Defensive patterns
Strategy: try-catch
Try / catch
from cloakbrowser.download import BinaryVerificationError
try:
install()
except BinaryVerificationError as e:
security_alert(f"Pro manifest signature failure: {e}")
raise # never bypass Prevention
- Never catch-and-continue BinaryVerificationError
- Audit DNS/TLS paths when it fires — suspect MITM
- Keep the library updated for signing-key rotations
When it happens
Trigger: _verify_signature(manifest_bytes, sig_resp.content) failing during a Pro download — wrong/invalid signature over the manifest.
Common situations: MITM or compromised mirror serving altered manifests; CDN misconfiguration; signature key rotation mismatch with an old client.
Related errors
- Version mismatch in signed Pro SHA256SUMS: requested {versio
- Version mismatch in signed SHA256SUMS: requested {requested}
- Signature-verified Pro SHA256SUMS has no entry for {tarball_
- Could not fetch a signed SHA256SUMS (SHA256SUMS + SHA256SUMS
AI-assisted analysis of CloakHQ/CloakBrowser@d6bad5de26 (2026-08-28).
Data as JSON: /api/errors/86b5e7c372df6a3d.
Report an issue: GitHub.