Back to skill

Security audit

senado-federal

Security checks for vulnerabilities and agentic risk

Overview

This skill coherently provides a Python client and guidance for querying public Brazilian Senate open-data APIs, with no hidden persistence, credential use, or data mutation found.

Install this in a normal isolated Python environment and be aware that pip may resolve newer dependency versions because no lockfile or hashes are provided. The skill queries public Senate transparency and legislative APIs only, so review outputs for accuracy and cite exact API URLs when using results in auditable work.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
pyproject.toml:1
Finding

Unpinned Third-Party Dependencies Allow Unreviewed Package Versions

Content
View full analysis
=68.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "senado-federal" version = "1.1.0" description = "Cliente assíncrono para a API de Dados Abertos do Senado Federal" readme = "README.md" license = "MIT" requires-python = ">=3.11" authors = [{name = "olegantonov"}] keywords = ["senado", "senadores", "api", "brasil", "dados-abertos"] dependencies = [ "httpx>=0.27.0", ] [project.optional-dependencies] dev = [ "pytest>=8.0", "pytest-asyncio>=0.23", "pytest-cov>=5.0", "pytest-mock>=3.14", "PyYAML>=6.0", "mypy>=1.11", "ruff>=0.9", ] ``` `requirements.txt:1`: ```text httpx>=0.27.0 ``` `requirements-dev.txt:1`: ```text -e .[dev] ``` `README.md:19-28`: ```bash # Clone o repositório git clone https://github.com/olegantonov/senado-federal.git cd senado-federal # Instale as dependências pip install -r requirements.txt # Para desenvolvimento pip install -r requirements-dev.txt ``` ### Technical Analysis The project permits pip to select any available dependency version equal to or newer than the stated minimum. It does not provide a lock file, exact resolved versions, package hashes, or an installation requirement such as `--require-hashes`. Consequently, installation results can change without any modification to this repository. If a permitted dependency or transitive dependency publishes a compromised release, the documented installation commands may retrieve that release automatically. Build dependencies such as `setuptools` and `wheel` are also not pinned, so creation of an isolated build environment can resolv ...[truncated 1697 chars]
Remediation
View remediation
", "wheel==", ] ``` 5. Generate locks from a trusted index and explicitly configure the approved package repository in CI. 6. Use a controlled dependency-update process that includes vulnerability scanning, changelog review, automated tests, and manual approval. 7. Configure automated dependency monitoring, but do not automatically merge or deploy updates without validation. 8. Update the README to instruct users to install from the hash-locked file rather than directly from open-ended requirement specifications. 9. Run installation and tests in an isolated, least-privileged environment without production credentials. ]]>
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (10)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description says this skill researches Brazil's Federal Senate using official open-data APIs. The actual code does nothing related to Senate data, legislative records, transparency APIs, or even network access. Instead, it reads a local SKILL.md file, parses YAML frontmatter, and validates required metadata fields and constraints. This is a materially different primary purpose and capability set, so the description does not accurately represent the code.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding

Without declared permissions the skill's intent is opaque and cannot be validated.

Content

No source excerpt is available for this finding.

Unverifiable Dependency: setuptools has 10 known advisory(ies) (CVE-2013-1633 (Setuptools vulnerable to Man-in-the-middle attacks); CVE-2025-47273 (setuptools has a path traversal vulnerability in PackageIndex.download that lead); CVE-2024-6345 (setuptools vulnerable to Command Injection via package URL) +7 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Unverifiable Dependency: wheel has 4 known advisory(ies) (CVE-2026-24049 (Wheel Affected by Arbitrary File Permission Modification via Path Traversal in w); CVE-2022-40898 (pypa/wheel vulnerable to Regular Expression denial of service (ReDoS)); CVE-2022-40898 (An issue discovered in Python Packaging Authority (PyPA) Wheel 0.37.1 and earlie) +1 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Unverifiable Dependency: httpx has 2 known advisory(ies) (CVE-2021-41945 (Improper Input Validation in httpx); CVE-2021-41945 (Encode OSS httpx <=1.0.0.beta0 is affected by improper input validation in `http)), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Unverifiable Dependency: pytest has 2 known advisory(ies) (CVE-2025-71176 (pytest has vulnerable tmpdir handling); CVE-2025-71176 (pytest has vulnerable tmpdir handling)), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Unverifiable Dependency: PyYAML has 8 known advisory(ies) (CVE-2019-20477 (Deserialization of Untrusted Data in PyYAML); CVE-2020-1747 (Improper Input Validation in PyYAML); CVE-2020-14343 (Improper Input Validation in PyYAML) +5 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
96% confidence
Finding

The dependency is specified with a lower-bound only (httpx>=0.27.0), which allows future unreviewed versions to be installed and prevents reproducible builds. This increases supply-chain risk and can unexpectedly pull in vulnerable or breaking releases over time, even though the package itself is common and the file shows no sign of malicious intent.

Content

Scanner excerpt · requirements.txt (reported line 1)May include surrounding context.

text
httpx>=0.27.0

Unverifiable Dependency: httpx has 2 known advisory(ies) (CVE-2021-41945 (Improper Input Validation in httpx); CVE-2021-41945 (Encode OSS httpx <=1.0.0.beta0 is affected by improper input validation in `http)), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
83% confidence
Finding

Because the manifest does not pin httpx to a specific version, it is impossible to verify from this file alone whether deployment will use a release affected by known advisories. In a research skill that queries public APIs, httpx is likely network-facing, so unresolved version ambiguity slightly raises the chance of exposure if an unsafe version is installed.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The file’s docstrings and test descriptions are written exclusively in Portuguese, indicating a fixed language choice in user-visible or developer-facing natural language. Under the policy rule, forcing a specific language without offering a choice or documenting a justified locale constraint is a language/locale policy violation.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.