T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/discover.py:15- Finding
Unnecessary Collection and Disclosure of Chrome Account Identity Data
- Content
View full analysis
dict[str, dict[str, Any]]: local_state = chrome_root / "Local State" if not local_state.exists(): return {} try: payload = json.loads(local_state.read_text(encoding="utf-8")) except Exception: return {} info_cache = payload.get("profile", {}).get("info_cache", {}) return {k: v for k, v in info_cache.items() if isinstance(v, dict)} ``` ```python meta = info_cache.get(child.name, {}) profile_name = normalize_name(meta.get("name", "")) or child.name account_name = normalize_name(meta.get("gaia_name", "")) or None display = f"{profile_name} ({account_name})" if account_name and account_name.lower() != profile_name.lower() else profile_name profiles.append({ "browser": "chrome", "profile_dir": child.name, "profile_name": profile_name, "display_name": display, "account_name": account_name, "account_email": normalize_name(meta.get("user_name", "")) or None, "bookmarks_path": str(bookmarks), "history_path": str(history) if history.exists() else None, }) ``` ### Technical Analysis Profile discovery requires identifying browser profile directories and locating bookmark and history files. It does not require collecting the Google account name stored in `gaia_name` or the email address stored in `user_name`. The implementation reads Chrome's `Local State` file, extracts these identity fields, and includes them in the profile object. The `run` function subsequently serializes the entire object to standard output. Consequently, account identity information can be retained in agent transcripts, shell lo ...[truncated 1296 chars]- Remediation
View remediation
