Back to skill

Security audit

Meeting Recorder Assistant

Security checks for vulnerabilities and agentic risk

Overview

This meeting-recording skill is mostly purpose-aligned, but it needs review because it can send sensitive meeting audio to Google's transcription service without clear user disclosure or consent guidance.

Review this skill before installing if meetings may contain confidential, regulated, or personal information. Use it only where recording is allowed, participants have given required consent, and you are comfortable sending audio to Google's speech-recognition service; prefer a pinned dependency set and a local transcription option for sensitive meetings.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/meeting_recorder.py:108
Finding

Meeting audio is transmitted to an external transcription service without explicit disclosure or consent

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Note
Location
requirements.txt:1
Finding

Unnecessary dependencies and open-ended version constraints expand the software supply-chain attack surface

Content
View full analysis
=3.10.0 pydub>=0.25.1 openai>=1.0.0 python-dateutil>=2.8.0 ``` The documented installation command is: ```bash pip install -r requirements.txt ``` ### Technical Analysis All dependencies use lower-bound-only constraints. This permits installation of future releases that were not reviewed with this project and makes builds non-reproducible. The dependency file also lacks integrity hashes. The audited source imports `speech_recognition`, while no project code was found importing or using `openai`, `pydub`, or `python-dateutil`. Installing unused packages unnecessarily increases the number of packages and transitive dependencies trusted by users. There is no evidence in the audited project that any currently named package is malicious. The security concern is the avoidable exposure to future compromised releases, dependency account compromise, unsafe transitive dependencies, or unexpected behavioral changes. ### Attack Path 1. A user follows the README and runs `pip install -r requirements.txt`. 2. The package resolver selects versions satisfying the unrestricted lower bounds, potentially including releases published after this skill was audited. 3. Unused packages and their transitive dependencies are downloaded and installed. 4. If a permitted future release or transitive dependency is compromised, its distributed package content may execute or become available in the user's Python environment. 5. The resulting impact occurs with the permissions of the user or environment performing the installation. This is a prospective supply-chain path; the audit found no proof that the currently available dependency versions are compromised. ### Impact Assessment A compromised dependency could affect the Python ...[truncated 671 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (21)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The code chunk implements only a narrow subset of the declared functionality: action item extraction from an already-existing transcript file, plus simple JSON/Markdown output formatting. There is no code for recording meetings, processing audio, transcribing speech, identifying speakers, generating meeting minutes/summaries, or performing sentiment analysis. This is a material description-versus-behavior mismatch because the declared purpose presents a broad intelligent meeting assistant, while the actual code shown is limited to transcript-based task extraction.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The supplied code only processes pre-existing transcript text files and generates meeting minutes content from them. It does support meeting summarization, action item extraction, decision/topic extraction, and markdown/json output, which partially aligns with the description. However, the declared purpose prominently claims broader capabilities—meeting recording, audio transcription, speaker diarization, and sentiment analysis—that are not implemented anywhere in this code chunk. Because these are central advertised functions rather than incidental details, the description materially overstates the actual behavior shown.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The code only provides basic audio recording and speech-to-text transcription. That partially matches the declared recording/transcription assistant purpose, but the description materially overstates the implemented functionality by claiming several higher-level meeting intelligence capabilities that are absent from the code. There are no obvious undeclared harmful capabilities; the mismatch is that the description promises substantially more than the code delivers.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The documentation encourages recording and transcribing meetings and writing artifacts to local files without any notice about participant consent, legal requirements, sensitive data handling, or file retention. In a meeting-assistant context, this is especially risky because meeting audio and transcripts often contain personal, confidential, or regulated information, making unauthorized capture or storage a significant privacy and compliance issue.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The README promotes recording and transcribing meetings but provides no warning about consent, privacy, retention, or jurisdiction-specific legal requirements. In a meeting-recording skill, this omission materially increases the chance of unauthorized capture or processing of sensitive conversations, which can expose personal data, confidential business information, or create legal/compliance violations.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The natural-language documentation and user-facing examples are presented in Chinese, and the file does not indicate that language selection is optional or user-configurable. This can violate language/locale policy when a skill effectively forces a specific language without explicit opt-in or justification.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
86% confidence
Finding

The skill examples indicate file read/write behavior using local paths like /tmp/meeting_audio.wav and /tmp/transcript.json, but the manifest does not declare any tool scope or permissions. Undeclared file capabilities reduce reviewability and can lead to unexpected access to local data or creation of sensitive artifacts such as recordings and transcripts.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The description's activation language is broad enough to trigger on many generic meeting, recording, or transcription requests. Over-broad routing can cause the assistant to invoke this skill unexpectedly, increasing the chance of unnecessary file creation, handling of sensitive meeting content, or use in contexts where consent and privacy have not been established.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The regex patterns and comments show the skill is designed specifically around Chinese and English phrasing such as Chinese action verbs and English markers like 'action item' and 'by'. This imposes a language/locale assumption in behavior without any user opt-in or explicit justification, which matches the policy-violation category for forced language handling.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The attendee extraction logic hard-codes Chinese labels such as '出席' and '参会人员' alongside English patterns, indicating an implicit language/locale assumption in the skill behavior. Because the file provides no user opt-in, language selection, or documented regional scope, this creates a natural-language locale policy concern under the stated rules.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The transcription path sends meeting audio to Google's remote speech-recognition service, but the skill description does not disclose that sensitive meeting content leaves the local environment. Because meetings often contain confidential business, personal, or regulated information, undisclosed third-party transmission creates a meaningful privacy and data-governance risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The file transcription function uploads audio contents to Google's recognition service without explicitly informing the user that the file will be transmitted over the network. Since uploaded recordings may contain sensitive meeting material, this can violate user expectations, organizational policy, or legal requirements around notice and consent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

This code records microphone input and submits it to an external Google recognition service without an explicit warning at the point of use. In the context of a meeting recorder, users may reasonably assume local handling, so silent network transmission of live speech can expose confidential discussions to a third party without informed consent.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The embedded sample transcript is entirely in Chinese, and the example workflow demonstrates processing that content as the default without any indication that language selection is optional. Under the policy, forcing a specific language without user opt-in can be a natural-language policy violation unless the locale restriction is clearly documented and justified.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
93% confidence
Finding

The dependency uses a lower-bound version specifier only, which allows installation of any newer release, including versions with breaking changes or newly introduced malicious or compromised transitive packages. While this is a common packaging practice and not inherently malicious, it weakens build reproducibility and increases supply-chain risk over time.

Content

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

text
speechrecognition>=3.10.0
pydub>=0.25.1
openai>=1.0.0
python-dateutil>=2.8.0

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
93% confidence
Finding

The package is not strictly pinned, so future installs may resolve to different versions than originally tested. This creates a supply-chain exposure window where an upstream compromise, dependency confusion event, or unsafe release could be pulled into the environment without code changes in the skill itself.

Content

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

text
speechrecognition>=3.10.0
pydub>=0.25.1
openai>=1.0.0
python-dateutil>=2.8.0

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
95% confidence
Finding

Using an unpinned version for the OpenAI client means deployments may automatically consume future releases with API, security, or behavior changes that were not validated for this skill. Because this skill likely processes meeting transcripts and possibly sensitive organizational content, unexpected dependency changes can have broader confidentiality, integrity, or availability consequences than in a less sensitive context.

Content

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

text
speechrecognition>=3.10.0
pydub>=0.25.1
openai>=1.0.0
python-dateutil>=2.8.0

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
93% confidence
Finding

A minimum-only version constraint permits uncontrolled upgrades, reducing reproducibility and exposing the project to accidental adoption of vulnerable or malicious upstream releases. This is generally a hygiene and supply-chain hardening issue rather than evidence of intentional abuse.

Content

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

text
speechrecognition>=3.10.0
pydub>=0.25.1
openai>=1.0.0
python-dateutil>=2.8.0

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest describes automated minutes generation, action item extraction, sentiment analysis, speaker diarization, and meeting summarization. This file only records audio and performs transcription via microphone or audio file, with no code for summarization, diarization, sentiment, minutes, or task extraction.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
98% confidence
Finding

The code forces the recognition language to zh-CN, which can violate language/locale policy when users are not given an opt-in or selection mechanism. No comments or documentation in this file justify the locale restriction as region-specific behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
98% confidence
Finding

The microphone transcription path also forces zh-CN for recognition, which imposes a specific language setting without opt-in. This is a natural-language policy concern because users are not presented with a locale choice or explanation.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.