Este informe no está traducido al idioma solicitado. Se muestra en su lugar el informe canónico en inglés.

Evaluación de seguridad versionada

ID del informe: SA-62E2A730

7/5/2026, 9:16:29 PM

qryma-search evaluación de seguridad v6

Informe de certificación de seguridad de la habilidad

Historial de auditorías
Modelo de auditoría: codex Informe histórico
Nombre de la habilidad
qryma-search
Versión
v6
Mantenedor
qryma-ai
Cobertura
12 Archivos escaneados · 770 Líneas analizadas
Versión de la política
No disponible

Gravedad máxima de hallazgo confirmada

Alto

9 hallazgos de seguridad confirmados requieren atención.

Contexto de instalación

Evidencia histórica

Este informe podría no describir el artefacto instalable actualmente. Abra la página actual de la Skill para obtener orientación de instalación.

Abrir la página actual de la habilidad

Este informe no bloquea ni autoriza el manifiesto ni el ZIP.

The skill is a legitimate Qryma web-search wrapper, but it performs real network egress and handles API credentials. Confirmed risks include API key loading from environment and .env files, transmission of the key in an outbound header, a configurable endpoint that can redirect credentials, and documentation that encourages sharing keys with an AI assistant.

Posición del informe

Informe histórico

Abra el historial de auditorías antes de usar este informe para instalar.

Atestación de auditoría

No se puede certificar

La vinculación inmutable requerida está incompleta.

Verificación humana

No verificado

No se ha registrado ninguna verificación humana para este informe.

Cobertura

12 Archivos escaneados · 770 Líneas analizadas

44 elementos mostrados para revisión

Limitaciones

Este informe no afirma ninguna ejecución en tiempo de ejecución ni en entorno aislado y no prueba la ausencia de efectos secundarios.

Cadena de evidencias

Sigue la evidencia desde la vinculación del código fuente hasta el contrato de instalación. La evidencia disponible permite la verificación; no constituye una garantía de seguridad.

  1. Fuente

    Vinculación no disponible

  2. Artefacto

    Identidad incompleta

  3. Auditoría

    Completo

  4. Contrato de instalación

    Abrir el manifiesto para verificar

    Abrir el manifiesto

Capacidades observadas

Observado significa que este informe registró evidencia de respaldo. No registrado no prueba que una capacidad esté ausente.

Contiene scripts

Puede ejecutar código incluido con la habilidad.

No registrado por esta auditoría

Acceso a red

Puede conectarse a servicios externos.

Observado en 17 ubicaciones de evidencia

Acceso al sistema de archivos

Puede leer o escribir archivos locales.

Observado en 2 ubicaciones de evidencia

Variables de entorno

Puede leer valores del entorno del proceso.

Observado en 31 ubicaciones de evidencia

Comandos externos

Puede invocar comandos o programas fuera de la habilidad.

Observado en 14 ubicaciones de evidencia

Elementos de revisión de capacidades (35)
Alto
Generic API/secret keys
adapter = QrymaAdapter(api_key=getattr(args, "api_key", None))
The code accepts an API key through CLI or event parameters and passes it into the adapter/core. Secrets provided this way can appear in process listings, shell history, captured events, or logs.
Alto
Generic API/secret keys
api_key = event.get("api_key") if isinstance(event, dict) else None
The code accepts an API key through CLI or event parameters and passes it into the adapter/core. Secrets provided this way can appear in process listings, shell history, captured events, or logs.
Alto
Generic API/secret keys
adapter = QrymaAdapter(api_key=api_key)
The code accepts an API key through CLI or event parameters and passes it into the adapter/core. Secrets provided this way can appear in process listings, shell history, captured events, or logs.
Alto
Generic API/secret keys
Get your free QRYMA_API_KEY from [qryma.com](https://qryma.com/). Chat with your AI assistant and as
The documentation tells users to provide QRYMA_API_KEY through an AI assistant prompt or similar chat flow. That can disclose a real API key into chat logs, tool transcripts, or third-party model systems.
Alto
Generic API/secret keys
Please configure qryma search with the QRYMA_API_KEY set to ak-your-api-key-here.
The documentation tells users to provide QRYMA_API_KEY through an AI assistant prompt or similar chat flow. That can disclose a real API key into chat logs, tool transcripts, or third-party model systems.
Alto
Generic API/secret keys
从[qryma.com](https://qryma.com/) 获取免费的QRYMA_API_KEY,直接发送给你的AI助手,让他帮你自动配置。
The documentation tells users to provide QRYMA_API_KEY through an AI assistant prompt or similar chat flow. That can disclose a real API key into chat logs, tool transcripts, or third-party model systems.
Alto
Generic API/secret keys
请帮我配置好qryma search,设置QRYMA_API_KEY为ak-your-api-key-here
The documentation tells users to provide QRYMA_API_KEY through an AI assistant prompt or similar chat flow. That can disclose a real API key into chat logs, tool transcripts, or third-party model systems.
Alto
Generic API/secret keys
export QRYMA_API_KEY="ak-your-api-key-here"
The documentation shows storing QRYMA_API_KEY in shell environment state or a plaintext .env file. This is a common setup method, but it creates a real local secret-exposure risk if history or files are not protected.
Alto
Generic API/secret keys
echo 'QRYMA_API_KEY=ak-your-api-key-here' > .env
The documentation shows storing QRYMA_API_KEY in shell environment state or a plaintext .env file. This is a common setup method, but it creates a real local secret-exposure risk if history or files are not protected.
Alto
Generic API/secret keys
adapter = QrymaAdapter(api_key=getattr(args, "api_key", None))
The code accepts an API key through CLI or event parameters and passes it into the adapter/core. Secrets provided this way can appear in process listings, shell history, captured events, or logs.
Alto
Generic API/secret keys
def __init__(self, core: QrymaSearchCore = None, api_key: str = None):
The code accepts an API key through CLI or event parameters and passes it into the adapter/core. Secrets provided this way can appear in process listings, shell history, captured events, or logs.
Alto
Generic API/secret keys
self.core = QrymaSearchCore(api_key=api_key)
The code accepts an API key through CLI or event parameters and passes it into the adapter/core. Secrets provided this way can appear in process listings, shell history, captured events, or logs.
Alto
Hidden file in home directory
env_path = os.path.expanduser("~/.qryma/.env")
The code reads .env or ~/.qryma/.env and extracts QRYMA credentials or endpoint settings. Automatic reads from hidden or local environment files can expose secrets outside the skill package boundary.
Alto
Hidden file in home directory
env_path = os.path.expanduser("~/.qryma/.env")
The code reads .env or ~/.qryma/.env and extracts QRYMA credentials or endpoint settings. Automatic reads from hidden or local environment files can expose secrets outside the skill package boundary.
Alto
Hidden file access
env_path = os.path.expanduser("~/.qryma/.env")
The code reads .env or ~/.qryma/.env and extracts QRYMA credentials or endpoint settings. Automatic reads from hidden or local environment files can expose secrets outside the skill package boundary.
Alto
Hidden file access
env_path = os.path.expanduser("~/.qryma/.env")
The code reads .env or ~/.qryma/.env and extracts QRYMA credentials or endpoint settings. Automatic reads from hidden or local environment files can expose secrets outside the skill package boundary.
Alto
Python environment access
key = os.environ.get("QRYMA_API_KEY")
The code reads QRYMA_API_KEY from the process environment for use as a credential. This is expected for the skill, but it is still real environment-secret access.
Alto
Generic API/secret keys
key = os.environ.get("QRYMA_API_KEY")
The code reads QRYMA_API_KEY from the process environment for use as a credential. This is expected for the skill, but it is still real environment-secret access.
Alto
Generic API/secret keys
m = re.search(r"^\s*QRYMA_API_KEY\s*=\s*(.+?)\s*$", txt, re.M)
The code reads .env or ~/.qryma/.env and extracts QRYMA credentials or endpoint settings. Automatic reads from hidden or local environment files can expose secrets outside the skill package boundary.
Alto
Generic API/secret keys
def __init__(self, api_key: Optional[str] = None, endpoint: Optional[str] = None):
The code accepts an API key through CLI or event parameters and passes it into the adapter/core. Secrets provided this way can appear in process listings, shell history, captured events, or logs.
Alto
Generic API/secret keys
self.api_key = api_key or load_key()
The code accepts an API key through CLI or event parameters and passes it into the adapter/core. Secrets provided this way can appear in process listings, shell history, captured events, or logs.
Alto
Generic API/secret keys
"X-Api-Key": self.api_key,
The code places self.api_key into the X-Api-Key header on the outbound request. This transmits a secret externally and becomes an exfiltration path if the endpoint is redirected.
Alto
Generic API/secret keys
Get your free QRYMA_API_KEY from [qryma.com](https://qryma.com/). Chat with your AI assistant and as
The documentation tells users to provide QRYMA_API_KEY through an AI assistant prompt or similar chat flow. That can disclose a real API key into chat logs, tool transcripts, or third-party model systems.
Alto
Generic API/secret keys
Please configure qryma search with the QRYMA_API_KEY set to ak-your-api-key-here.
The documentation tells users to provide QRYMA_API_KEY through an AI assistant prompt or similar chat flow. That can disclose a real API key into chat logs, tool transcripts, or third-party model systems.
Alto
Generic API/secret keys
从 [qryma.com](https://qryma.com/) 获取免费的 QRYMA_API_KEY,直接发送给你的 AI 助手,让他帮你自动配置。
The documentation tells users to provide QRYMA_API_KEY through an AI assistant prompt or similar chat flow. That can disclose a real API key into chat logs, tool transcripts, or third-party model systems.
Alto
Generic API/secret keys
请帮我配置好 qryma search,设置 QRYMA_API_KEY 为 ak-your-api-key-here
The documentation tells users to provide QRYMA_API_KEY through an AI assistant prompt or similar chat flow. That can disclose a real API key into chat logs, tool transcripts, or third-party model systems.
Alto
Generic API/secret keys
export QRYMA_API_KEY="ak-your-api-key-here"
The documentation shows storing QRYMA_API_KEY in shell environment state or a plaintext .env file. This is a common setup method, but it creates a real local secret-exposure risk if history or files are not protected.
Alto
Generic API/secret keys
QRYMA_API_KEY=ak-your-api-key-here
The documentation shows storing QRYMA_API_KEY in shell environment state or a plaintext .env file. This is a common setup method, but it creates a real local secret-exposure risk if history or files are not protected.
Medio
Python environment access
endpoint = os.environ.get("QRYMA_ENDPOINT")
QRYMA_ENDPOINT from the environment controls the destination used for the later request. If this setting is changed unexpectedly, the API key and queries can be sent to an untrusted service.
Bajo
Hardcoded URL
"default": "https://search.qryma.com/api/web"
The skill performs outbound HTTP requests to the Qryma search API and sends user search queries off-device. Network egress is expected for search, but it is a real data-transfer behavior users must understand.
Bajo
Python HTTP libraries
import urllib.request
The skill performs outbound HTTP requests to the Qryma search API and sends user search queries off-device. Network egress is expected for search, but it is a real data-transfer behavior users must understand.
Bajo
Python HTTP libraries
req = urllib.request.Request(
The skill performs outbound HTTP requests to the Qryma search API and sends user search queries off-device. Network egress is expected for search, but it is a real data-transfer behavior users must understand.
Bajo
Python HTTP libraries
with urllib.request.urlopen(req, timeout=30) as resp:
The skill performs outbound HTTP requests to the Qryma search API and sends user search queries off-device. Network egress is expected for search, but it is a real data-transfer behavior users must understand.
Bajo
Hardcoded URL
QRYMA_URL = "https://search.qryma.com/api/web"
The skill performs outbound HTTP requests to the Qryma search API and sends user search queries off-device. Network egress is expected for search, but it is a real data-transfer behavior users must understand.
Bajo
Hardcoded URL
return "https://search.qryma.com/api/web"
The skill performs outbound HTTP requests to the Qryma search API and sends user search queries off-device. Network egress is expected for search, but it is a real data-transfer behavior users must understand.

Hallazgos de riesgos

Las preocupaciones de seguridad confirmadas están separadas de los elementos que aún deben revisarse.

Preocupaciones de seguridad confirmadas (9)

RISK-001 Alto
Environment file access
# Method 2: Create .env file
The documentation shows storing QRYMA_API_KEY in shell environment state or a plaintext .env file. This is a common setup method, but it creates a real local secret-exposure risk if history or files are not protected.
RISK-002 Alto
Environment file access
echo 'QRYMA_API_KEY=ak-your-api-key-here' > .env
The documentation shows storing QRYMA_API_KEY in shell environment state or a plaintext .env file. This is a common setup method, but it creates a real local secret-exposure risk if history or files are not protected.
RISK-003 Alto
Environment file access
env_path = os.path.expanduser("~/.qryma/.env")
The code reads .env or ~/.qryma/.env and extracts QRYMA credentials or endpoint settings. Automatic reads from hidden or local environment files can expose secrets outside the skill package boundary.
RISK-004 Alto
Environment file access
env_path = ".env"
The code reads .env or ~/.qryma/.env and extracts QRYMA credentials or endpoint settings. Automatic reads from hidden or local environment files can expose secrets outside the skill package boundary.
RISK-005 Alto
Environment file access
env_path = os.path.expanduser("~/.qryma/.env")
The code reads .env or ~/.qryma/.env and extracts QRYMA credentials or endpoint settings. Automatic reads from hidden or local environment files can expose secrets outside the skill package boundary.
RISK-006 Alto
Environment file access
env_path = ".env"
The code reads .env or ~/.qryma/.env and extracts QRYMA credentials or endpoint settings. Automatic reads from hidden or local environment files can expose secrets outside the skill package boundary.
RISK-007 Alto
Environment file access
Create `.env` file:
The documentation shows storing QRYMA_API_KEY in shell environment state or a plaintext .env file. This is a common setup method, but it creates a real local secret-exposure risk if history or files are not protected.
RISK-008 Alto
API Key Sharing Guidance Risks Secret Disclosure
README.md and SKILL.md tell users to ask an AI assistant to configure QRYMA_API_KEY. If users replace the placeholder with a real key, the secret can be stored in chat logs, tool transcripts, or third-party systems.
The documentation explicitly connects QRYMA_API_KEY setup with asking an AI assistant to configure it. This is a clear social-engineering risk for credential exposure.
RISK-009 Alto
Configurable Endpoint Can Receive API Key
scripts/search_core.py loads QRYMA_ENDPOINT from the environment or .env files, then sends self.api_key in the X-Api-Key header to that endpoint. A modified endpoint can receive both user queries and the API key.
The data flow is visible in the source: endpoint configuration is loaded before the request is built, and the API key is attached to the request headers.

Medidas correctivas

Esta auditoría registra correcciones sugeridas. Aplicarlas es responsabilidad de la persona encargada del mantenimiento.

  1. FIX-001
    Alto
    Documentation encourages users to send QRYMA_API_KEY to an AI assistant.
    Replace those instructions with manual setup steps that never ask users to paste real secrets into chat prompts or tool transcripts.
  2. FIX-002
    Alto
    The endpoint can be overridden while the X-Api-Key header is sent to the selected endpoint.
    Restrict endpoint overrides to trusted hosts, require explicit confirmation for custom endpoints, or omit credentials when the endpoint is not the official Qryma API.
  3. FIX-003
    Alto
    The skill automatically reads .env and ~/.qryma/.env for credentials.
    Use an explicit credential path or platform secret store, document file permission requirements, and avoid scanning hidden home-directory files by default.
  4. FIX-004
    Medio
    API keys can be passed on the command line or event payload.
    Prefer environment or managed secret injection and warn users that command-line secrets may appear in shell history, process lists, or logs.
  5. FIX-005
    Bajo
    Search queries are sent to an external API.
    Add clear privacy documentation explaining that queries and request metadata are transmitted to Qryma during use.

Evidencia experta

Identidad inmutable del sujeto, metadatos del escáner, coincidencias descartadas y evidencia a nivel de código fuente.

Sujeto del artefacto

Commit de Marketplace
No disponible
Hash del contenido
No disponible
Hash del árbol
No disponible
Ruta del Skill
No disponible
Hash de la carga de auditoría
No disponible

Metadatos del análisis

Modelo de auditoría: codex

Estado del análisis: Completo

El alcance se limita a los archivos, líneas, métodos y pruebas registrados. No se afirma ninguna ejecución en tiempo de ejecución ni en entorno aislado.

Verificar y exportar

El manifiesto y el archivo de bloqueo vinculan los artefactos de instalación a hashes criptográficos. Esta afirmación de integridad es independiente de la evaluación de seguridad.

Atestación de auditoría: not_attestable