Zero-Day Security Vulnerability in Android Processors

A new spyware for Android, named NoviSpy, is linked to zero-day security vulnerabilities in processors.

2 Jan 2025 SintelSedat Akfidan 9 min read
Zero-Day Security Vulnerability in Android Processors

Tools

You may call one or more functions to assist with the user query.

You are provided with function signatures within XML tags: {"type": "function", "function": {"name": "google-surf__search", "description": "Single Google search -> title/url/snippet per result. Results are cached 24h, so repeating a query is free -- prefer re-querying over caching results yourself. For latest/today/breaking queries set SURF_CACHE_TTL_SEARCH_MS=0 to bypass the cache. Default limit 10 (max 20). First call ~4s (Chromium warmup), then ~2s. On CAPTCHA a visible Chrome opens for a human to solve (shared-IP protection); SURF_CLOUD_MODE=true makes it fail-fast instead.", "parameters": {"$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": {"query": {"type": "string", "minLength": 1, "maxLength": 400, "description": "Google search query. Use site: filters and quotes for exact match."}, "limit": {"default": 10, "description": "Max results (default 10).", "type": "integer", "minimum": 1, "maximum": 20}}, "required": ["query"]}}} {"type": "function", "function": {"name": "google-surf__search_parallel", "description": "Run 2-10 Google searches concurrently. Use to compare multiple angles in one call. Each query counts against the internal rate limit (~10/min) -- do not loop this for bulk scraping. First call adds 5-10s pool warmup. Per-query failures are isolated in the results array. Disabled in cloud mode.", "parameters": {"$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": {"queries": {"minItems": 1, "maxItems": 10, "type": "array", "items": {"type": "string", "description": ""}, "description": "2-10 queries to run concurrently."}, "limit": {"default": 10, "description": "Max results per query.", "type": "integer", "minimum": 1, "maximum": 20}}, "required": ["queries"]}}} {"type": "function", "function": {"name": "google-surf__extract", "description": "Fetch one public URL -> clean article text. HTML via Mozilla Readability; academic PDFs (arxiv/biorxiv/Nature/OpenReview/NeurIPS/JMLR/PMLR/Springer/PubMed-via-PMC) auto-detected via Content-Type, %PDF magic, citation_pdf_url meta, and per-domain URL rules. Tiered depth: mode=\"abstract\" returns ~1500 chars (PDF page 1 or HTML meta description) -- cheap survey to triage relevance before paying for full body. mode=\"full\" (default) returns the whole article. Best-effort: failures return an errorInfo instead of throwing.", "parameters": {"$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": {"url": {"type": "string", "description": "Public http(s) URL. Loopback/private IPs blocked unless SURF_ALLOW_PRIVATE=true."}, "max_chars": {"default": 8000, "description": "Truncate body to this many chars (default 8000, set via SURF_EXTRACT_MAX_CHARS).", "type": "integer", "minimum": 200, "maximum": 50000}, "mode": {"default": "full", "description": "Extraction depth. full = whole article body (default; uses Playwright if needed). abstract = cheap survey: PDF page 1 OR HTML meta description (~1500 chars); use to triage relevance before paying for full text. metadata = page count only (PDF). Academic PDFs (arxiv/biorxiv/Nature/OpenReview/NeurIPS/JMLR/PMLR/Springer/PubMed-via-PMC) are auto-detected; abstract mode skips Playwright for them.", "type": "string", "enum": ["full", "abstract", "metadata"]}}, "required": ["url"]}}} {"type": "function", "function": {"name": "google-surf__search_extract", "description": "One-shot Google search + parallel extract of the top results. Default mode=\"abstract\" returns SERP enriched with ~1500-char abstracts per result -- a cheap survey of what the top results actually contain, far fewer tokens than fetching all bodies. Switch to mode=\"full\" only when you need the actual article texts (slower, much more tokens). Per-page extract failures are isolated. Disabled in cloud mode.", "parameters": {"$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": {"query": {"type": "string", "minLength": 1, "maxLength": 400, "description": "Search query."}, "limit": {"default": 5, "description": "Number of results to extract (default 5, max 10).", "type": "integer", "minimum": 1, "maximum": 10}, "max_chars": {"description": "Truncate each result body. Default depends on mode: ~1500 for abstract, 8000 for full (SURF_EXTRACT_MAX_CHARS, capped at 20000 here).", "type": "integer", "minimum": 200, "maximum": 20000}, "mode": {"default": "abstract", "description": "Extraction depth per result. abstract (default) = cheap survey, ~1500 chars/result, ideal for relevance triage. full = whole body per result, slower and far more tokens; only when you actually need the article texts.", "type": "string", "enum": ["full", "abstract"]}}, "required": ["query"]}}} {"type": "function", "function": {"name": "google-surf__health", "description": "MCP server status: cascade mode + transitions, rate-limiter usage, cache size, config. Call this if searches start failing or returning empty -- check cascade.totalCaptchas and rateLimiter.queueSize, and reduce search volume if they are high.", "parameters": {"$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": {}}}} {"type": "function", "function": {"name": "semgrep__semgrep_rule_schema", "description": "\nGet the schema for a Semgrep rule\n\nUse this tool when you need to:\n - get the schema required to write a Semgrep rule\n - need to see what fields are available for a Semgrep rule\n - verify what fields are available for a Semgrep rule\n - verify the syntax for a Semgrep rule is correct\n", "parameters": {"properties": {}, "title": "semgrep_rule_schemaArguments", "type": "object"}}} {"type": "function", "function": {"name": "semgrep__get_supported_languages", "description": "\nReturns a list of supported languages by Semgrep\n\nOnly use this tool if you are not sure what languages Semgrep supports.\n", "parameters": {"properties": {}, "title": "get_supported_languagesArguments", "type": "object"}}} {"type": "function", "function": {"name": "semgrep__semgrep_findings", "description": "\nFetches findings from the Semgrep AppSec Platform Findings API.\n\nThis function retrieves security, code quality, and supply chain findings that have already been\nidentified by previous Semgrep scans and uploaded to the Semgrep AppSec platform. It does NOT\nperform a new scan or analyze code directly. Instead, it queries the Semgrep API to access\nhistorical scan results for a given repository or set of repositories.\n\nDEFAULT BEHAVIOR: By default, this tool should filter by the current repository. The model\nshould determine the current repository name and pass it in the 'repos' parameter to ensure\nfindings are scoped to the relevant codebase. However, users may explicitly request findings\nfrom other repositories, in which case the model should respect that request.\n\nUse this function when a prompt requests a summary, list, or analysis of existing findings,\nsuch as:\n - "Please list the top 10 security findings and propose solutions for them."\n - "Show all open critical vulnerabilities in this repository."\n - "Summarize the most recent Semgrep scan results."\n - "Get findings from repository X" (explicitly requesting different repo)\n\nThis function is ideal for:\n- Reviewing, listing, or summarizing findings from past scans.\n- Providing actionable insights or remediation advice based on existing scan data.\n\nDo NOT use this function to perform a new scan or check code that has not yet been analyzed by\nSemgrep. For new scans, use the appropriate scanning function.\n", "parameters": {"properties": {"issue_type": {"default": "ISSUE_TYPE_SAST", "description": "Type of issue to filter by.", "enum": ["ISSUE_TYPE_SAST", "ISSUE_TYPE_SCA"], "title": "Issue Type", "type": "string"}, "repos": {"default": [], "description": "List of repository names to filter by. Include the owner and repository name, e.g. 'owner/repository'", "items": {"type": "string", "description": ""}, "title": "Repos", "type": "array"}, "status": {"default": "ISSUE_TAB_OPEN", "description": "Status of the issue to filter by.", "enum": ["ISSUE_TAB_OPEN", "ISSUE_TAB_CLOSED", "ISSUE_TAB_IGNORED", "ISSUE_TAB_REVIEWING", "ISSUE_TAB_FIXING"], "title": "Status", "type": "string"}, "severities": {"anyOf": [{"items": {"enum": ["SEVERITY_CRITICAL", "SEVERITY_HIGH", "SEVERITY_MEDIUM", "SEVERITY_LOW"], "type": "string", "description": ""}, "type": "array", "description": ""}, {"type": "null", "description": ""}], "default": null, "description": "Severities of the issues to filter by.", "title": "Severities"}, "confidence": {"anyOf": [{"items": {"enum": ["CONFIDENCE_HIGH", "CONFIDENCE_MEDIUM", "CONFIDENCE_LOW"], "type": "string", "description": ""}, "type": "array", "description": ""}, {"type": "null", "description": ""}], "default": null, "description": "Confidences of the issues to filter by.", "title": "Confidence"}, "autotriage_verdict": {"anyOf": [{"enum": ["VERDICT_TRUE_POSITIVE", "VERDICT_FALSE_POSITIVE"], "type": "string", "description": ""}, {"type": "null", "description": ""}], "default": null, "description": "Autotriage verdict of the issues to filter by. If not provided, findings with any verdict (including unrated) are returned.", "title": "Autotriage Verdict"}, "refs": {"default": [], "description": "List of git refs (branch names) to filter findings by. If not provided, only findings on the primary branch are returned.", "items": {"type": "string", "description": ""}, "title": "Refs", "type": "array"}, "limit": {"default": 10, "description": "Maximum number of findings to return", "title": "Limit", "type": "integer"}}, "title": "semgrep_findingsArguments", "type": "object"}}} {"type": "function", "function": {"name": "semgrep__semgrep_scan_with_custom_rule", "description": "\nRuns a Semgrep scan with a custom rule on provided code content\nand returns the findings in JSON format\n\nUse this tool when you need to:\n - scan code files for specific security vulnerability not covered by the default Semgrep rules\n - scan code files for specific issue not covered by the default Semgrep rules\n", "parameters": {"$defs": {"CodeFile": {"properties": {"path": {"description": "Path of the code file", "title": "Path", "type": "string"}, "content": {"description": "Content of the code file", "title": "Content", "type": "string"}}, "required": ["path", "content"], "title": "CodeFile", "type": "object"}}, "properties": {"code_files": {"description": "List of dictionaries with 'path' and 'content' keys", "items": {"$ref": "#/$defs/CodeFile", "description": ""}, "title": "Code Files", "type": "array"}, "rule": {"description": "Semgrep YAML rule string", "title": "Rule", "type": "string"}}, "required": ["code_files", "rule"], "title": "semgrep_scan_with_custom_ruleArguments", "type": "object"}}} {"type": "function", "function": {"name": "semgrep__semgrep_scan", "description": "\nRuns a Semgrep scan locally on provided code files returns the findings in JSON format.\n\nFiles are expected to be absolute paths to the code files.\n\nUse this tool when you need to:\n - scan code files for security vulnerabilities\n - scan code files for other issues\n", "parameters": {"$defs": {"CodePath": {"properties": {"path": {"description": "Absolute path of the code file", "title": "Path", "type": "string"}}, "required": ["path"], "title": "CodePath", "type": "object"}}, "properties": {"code_files": {"description": "List of dictionaries with 'path' pointing to the absolute path of the code file", "items": {"$ref": "#/$defs/CodePath", "description": ""}, "title": "Code Files", "type": "array"}}, "required": ["code_files"], "title": "semgrep_scanArguments", "type": "object"}}} {"type": "function", "function": {"name": "semgrep__get_abstract_syntax_tree", "description": "\nReturns the Abstract Syntax Tree (AST) for the provided code file in JSON format\n\nUse this tool when you need to:\n - get the Abstract Syntax Tree (AST) for the provided code file - get the AST of a file\n - understand the structure of the code in a more granular way\n - see what a parser sees in the code\n", "parameters": {"properties": {"code": {"description": "The code to get the AST for", "title": "Code", "type": "string"}, "language": {"description": "The programming language of the code", "title": "Language", "type": "string"}}, "required": ["code", "language"], "title": "get_abstract_syntax_treeArguments", "type": "object"}}} {"type": "function", "function": {"name": "semgrep__semgrep_scan_supply_chain", "description": "\nRuns a Semgrep supply chain scan on the provided workspace directory,\nto identify potential third-party security vulnerabilities.\n\nUse this tool when you:\n - change the version of a dependency in a project\n - add a new dependency to a project\n - update the lockfiles of a project\n", "parameters": {"properties": {}, "title": "semgrep_scan_supply_chainArguments", "type": "object"}}} {"type": "function", "function": {"name": "context7__resolve-library-id", "description": "Resolves a package/product name to a Context7-compatible library ID and returns matching libraries.\n\nYou MUST call this function before 'Query Documentation' tool to obtain a valid Context7-compatible library ID UNLESS the user explicitly provides a library ID in the format '/org/project' or '/org/project/version' in their query.\n\nEach result includes:\n- Library ID: Context7-compatible identifier (format: /org/project)\n- Name: Library or package name\n- Description: Short summary\n- Code Snippets: Number of available code examples\n- Source Reputation: Authority indicator (High, Medium, Low, or Unknown)\n- Benchmark Score: Quality indicator (100 is the highest score)\n- Versions: List of versions if available. Use one of those versions if the user provides a version in their query. The format of the version is /org/project/version.\n\nFor best results, select libraries based on name match, source reputation, snippet coverage, benchmark score, and relevance to your use case.\n\nSelection Process:\n1. Analyze the query to understand what library/package the user is looking for\n2. Return the most relevant match based on:\n- Name similarity to the query (exact matches prioritized)\n- Description relevance to the query's intent\n- Documentation coverage (prioritize libraries with higher Code Snippet counts)\n- Source reputation (consider libraries with High or Medium reputation more authoritative)\n- Benchmark Score: Quality indicator (10: