T09 · Insecure Skill Coding Practices
- Location
index.js:40- Finding
Chromium Sandbox Protections Are Explicitly Disabled
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is openly designed to scrape X/Facebook through a logged-in Brave session, but it uses the user's broad browser profile, existing tabs, and weakened browser sandboxing in ways users should review carefully.
Install only if you are comfortable letting this skill use a logged-in browser session to read social-media pages. Prefer a dedicated Brave/Chrome profile containing only the X/Facebook accounts needed for this task, avoid running it against your normal browser profile, and do not run it on sensitive tabs or high-privilege accounts until sandboxing and profile isolation are fixed.
index.js:40Chromium Sandbox Protections Are Explicitly Disabled
index.js:40Automation Reuses the User's Full Default Authenticated Browser Profile
index.js:28CDP Mode Navigates the User's First Existing Browser Tab
The README instructs users to manipulate the browser cookie store path directly (~/.config/google-chrome/Default/Cookies) while the skill's core purpose is to leverage authenticated browser state. Referencing the credential store in this context normalizes direct handling of sensitive session artifacts and can encourage unsafe practices around cookies, which are effectively authentication material for social-media accounts.
**解決**:
1. 手動開啟 Brave,登入 X 或 Facebook 帳號
2. 保持瀏覽器開啟,重新執行技能
3. 或刪除 `~/.config/google-chrome/Default/Cookies` 重新登入
### 問題:提取不到帖子
**原因**:頁面載入不夠或選擇器變更
The documented behavior claims broader cross-platform monitoring and data extraction than what the implementation reportedly provides. This mismatch is dangerous because users and reviewers may authorize access to logged-in sessions under false assumptions, reducing informed consent and hiding what the skill actually does or fails to do.
The README highlights use of an already logged-in Brave session and even shows the returned logged-in account identity, but does not prominently warn that authenticated session context and account metadata may be accessed and surfaced. In a skill specifically designed to reuse live social-media sessions, under-warning the privacy implications materially increases the risk of unauthorized context disclosure.
The natural-language trigger examples are broad enough to overlap with ordinary user requests such as 'look at Trump's latest statements,' making unintended invocation of a privileged browsing skill more likely. Because this skill accesses a logged-in browser session and extracts account-contextual data, accidental triggering can expose private session context or cause silent collection of data the user did not explicitly authorize.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
The skill declares no explicit tool scope or permission boundary even though it is designed to interact with a logged-in browser session and may access environment-backed capabilities. In the context of social-media browsing with authenticated sessions, missing scope declarations can allow broader-than-expected access and make review, enforcement, and user consent much weaker.
The skill description does not prominently warn that it accesses logged-in social-media sessions and may extract account-linked data. In this context, lack of disclosure is particularly risky because authenticated browser automation can expose private or sensitive information and may surprise users who did not intend to grant that level of access.
The trigger phrases are broad enough to match ordinary browsing or social-media requests, which can cause the skill to activate unexpectedly. Because this skill targets logged-in sessions and extracts account-linked content, accidental invocation increases the risk of unintended authenticated access and data exposure.
Referencing 'npx playwright' without a pinned version introduces a supply-chain and reproducibility risk, because different versions may be resolved over time or a compromised upstream package could change behavior. For a skill that automates logged-in browsing, dependency drift can silently alter security properties or data-handling behavior.
This file presents its usage documentation and user-facing error text entirely in Chinese, with no indication that the user can choose another language. That creates a natural-language policy issue because the skill effectively enforces a specific language/locale for interaction without documented opt-in or justification.
The code attaches to an existing local browser over CDP and immediately reuses the first available context and page. That grants the skill visibility and interaction capability over an already-authenticated browsing session, potentially exposing unrelated tabs, cookies, DOM content, and logged-in data far beyond the declared X/Facebook monitoring scope.
The skill launches Brave/Chromium with a persistent profile directory pointing to the user's existing Chrome profile, which exposes all saved cookies, history, and authenticated sessions available in that profile. This breaks least privilege because a task advertised as social-media browsing gains access to the user's broader browser identity and potentially every logged-in site.
The automation intentionally reads logged-in session state from a persistent browser profile but provides no explicit consent flow, warning, or disclosure to the user. In this context, the skill is specifically marketed as using a logged-in browser, so silent reuse of session data increases privacy and trust risks even if no credential material is directly exfiltrated in the code shown.
The file’s natural-language comments are written entirely in Traditional Chinese and describe the skill behavior without offering any language choice or indicating that the locale is region-specific. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy violation.
This code attaches to an existing Brave/Chrome session over CDP or launches a persistent browser context using the user's real profile directory, which exposes authenticated cookies, account state, and potentially unrelated browsing data to the skill. In the context of a social-media scraping skill explicitly designed to browse X/Twitter and Facebook while logged in, this creates a real privacy and account-abuse risk because the skill can access protected content and profile data without any explicit consent gating, profile isolation, or scope restrictions.
The skill attaches to an existing CDP-controlled browser or launches Brave with a persistent user profile directory, which gives it access to whatever authenticated sessions already exist in that profile. In this skill's context, that means it can read logged-in X/Facebook content and account state without establishing a scoped, isolated session, increasing the risk of unauthorized data access and session abuse if the skill is invoked unexpectedly or modified.
The skill launches a persistent logged-in browser profile and inspects login/account UI state to determine whether the user is signed in, but it provides no user-facing disclosure or consent gate. Even if used for benign monitoring, silently reading authenticated session state is privacy-sensitive and can surprise users because it reveals account presence and may enable further authenticated scraping.
The skill makes outbound requests to X/Twitter and Facebook and returns scraped profile/posts data, but there is no explicit disclosure that external sites will be contacted or that retrieved account data may come from an authenticated session. In a logged-in browsing skill, this creates privacy and compliance risk because the user may not realize the action uses their active account context.
The manifest explicitly describes using a logged-in Brave session to access X/Twitter and Facebook pages and extract content, but it does not disclose or constrain the privacy and account-data risks that come with operating inside an authenticated browser context. In a logged-in session, the skill may access personalized content, session-bound data, or perform actions under the user's identity if later implementation is overly broad, making the omission of warnings and scope restrictions a meaningful security concern.
The script connects to an already logged-in Brave session over CDP, navigates to a Facebook profile, detects login state, and extracts page content without any explicit consent gate, warning, or scope restriction. In the context of a social-media browsing skill that is specifically designed to leverage authenticated sessions, this creates a real privacy and data-access risk because it can silently use a user's active account context to collect personalized or access-controlled information.
文件標題下的主要說明全文以繁體中文呈現,且未提供可選語言、雙語說明或任何語言/地區限制的理由。依規則,若技能對語言或地區有實質限制而未提供使用者選擇或合理說明,可能構成語言/locale 政策問題。
The skill metadata and documentation are entirely presented in Chinese, with no indication that other languages are supported or that the user can choose their preferred language. This creates a language-policy concern because the skill appears to impose a specific locale without opt-in or justification.
Multiple user-visible strings, including console logs and error messages, are hard-coded in Traditional Chinese. The file does not provide locale selection, fallback behavior, or opt-in for this language choice, which is a natural-language policy concern under the locale rule.
The function navigates an automated browser to user-specified X/Twitter/Facebook URLs, which triggers network requests to third-party services and may expose system/browser metadata and authenticated session context. In this file there is no explicit disclosure to the user that external network access to these sites will occur.