T09 · Insecure Skill Coding Practices
- Location
references/calendar.md:265- Finding
Unsafe Solicitation of Primary Apple Account Credentials
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This iCloud skill can access and modify sensitive Apple account data and includes under-scoped background location/status sharing that users should review carefully before installing.
Install only if you trust this publisher with sensitive iCloud access. Do not provide your Apple ID primary password in chat; prefer local interactive authentication and secure keychain storage. Avoid enabling the status wall unless every tracked person has explicitly consented, you understand that location may be sent to AMap and published to a shared calendar, and you know how to stop the daemon and remove its config/log/session files. Use an isolated environment and review destructive calendar deletion and photo download behavior before allowing the agent to run those commands.
references/calendar.md:265Unsafe Solicitation of Primary Apple Account Credentials
scripts/status_wall.py:73Plaintext Credential and Precise-Location Storage Without Permission Enforcement
scripts/status_wall.py:317Disclosure of Precise Find My Coordinates to a Third-Party Geocoding Service
scripts/status_wall.py:157Detached Location-Monitoring Daemon Persists Beyond the Initiating Session
scripts/icloud-photos.py:136Cloud-Controlled Photo Filenames Permit Writes Outside the Download Directory
scripts/icloud_calendar.py:451Broad Calendar Keyword Deletion Lacks Preview and Confirmation
SKILL.md:15Unpinned Third-Party Packages Are Installed Without Integrity Verification
references/calendar.md:72Reminder Setup Recommends a Plaintext Password File Without Access Controls
Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.
})
url = f'https://restapi.amap.com/v3/geocode/regeo?{params}'
req = urllib.request.Request(url, headers={'User-Agent': 'StatusWall/1.0'})
with urllib.request.urlopen(req, timeout=5) as resp:
data = json.loads(resp.read().decode())
if data.get('status') != '1':
This variant highlights a concrete security-relevant mismatch: the description implies broad CRUD management across calendars, Drive, device finding, and reminders, while the documented scripts appear narrower and in some cases read/list-only. Such misrepresentation can cause excessive trust and authorization for access to sensitive personal data, files, and device metadata.
This variant highlights a concrete security-relevant mismatch: the description implies broad CRUD management across calendars, Drive, device finding, and reminders, while the documented scripts appear narrower and in some cases read/list-only. Such misrepresentation can cause excessive trust and authorization for access to sensitive personal data, files, and device metadata.
This variant highlights a concrete security-relevant mismatch: the description implies broad CRUD management across calendars, Drive, device finding, and reminders, while the documented scripts appear narrower and in some cases read/list-only. Such misrepresentation can cause excessive trust and authorization for access to sensitive personal data, files, and device metadata.
This variant highlights a concrete security-relevant mismatch: the description implies broad CRUD management across calendars, Drive, device finding, and reminders, while the documented scripts appear narrower and in some cases read/list-only. Such misrepresentation can cause excessive trust and authorization for access to sensitive personal data, files, and device metadata.
This variant highlights a concrete security-relevant mismatch: the description implies broad CRUD management across calendars, Drive, device finding, and reminders, while the documented scripts appear narrower and in some cases read/list-only. Such misrepresentation can cause excessive trust and authorization for access to sensitive personal data, files, and device metadata.
This variant highlights a concrete security-relevant mismatch: the description implies broad CRUD management across calendars, Drive, device finding, and reminders, while the documented scripts appear narrower and in some cases read/list-only. Such misrepresentation can cause excessive trust and authorization for access to sensitive personal data, files, and device metadata.
This variant highlights a concrete security-relevant mismatch: the description implies broad CRUD management across calendars, Drive, device finding, and reminders, while the documented scripts appear narrower and in some cases read/list-only. Such misrepresentation can cause excessive trust and authorization for access to sensitive personal data, files, and device metadata.
The skill directly discusses handling Apple ID credentials via environment variables or keychain, which is credential access territory in a highly sensitive consumer account context. Even if intended for legitimate authentication, guidance that normalizes pulling secrets into execution context raises the risk of accidental disclosure through process listings, logs, shell history, or downstream scripts.
🔴 密码安全:从环境变量读取,不硬编码
export ICLOUD_EMAIL="user@icloud.com"
export ICLOUD_PASSWORD="xxx" # 或用 keychain
The documentation materially expands an iCloud calendar skill into a persistent surveillance system that continuously polls GPS location, derives semantic places, and broadcasts user status to a shared calendar. This goes far beyond the declared calendar-management purpose and creates a high-risk capability for covert tracking, stalking, and non-consensual monitoring of a household member.
The document instructs background GPS polling every 15 minutes, escalating to every minute during commutes, with automatic status updates, but does not present this as a strong privacy warning or obtain ongoing informed consent. Persistent location collection and sharing is highly invasive and can expose routines, workplaces, and home presence to abuse.
The setup flow incrementally normalizes trust, then escalates to collecting multiple secrets and enabling a persistent monitoring daemon. This pattern is dangerous because it socially engineers users into surrendering credentials and enabling continuous surveillance under the guise of benign family/calendar convenience.
The setup instructions explicitly ask the user for their Apple ID primary password to enable ongoing Find My automation. Requesting a primary account password inside skill documentation is extremely dangerous because it facilitates credential harvesting, account takeover, access to device locations, and compromise of the broader Apple ecosystem tied to the account.
The skill directly instructs collection of highly sensitive credentials, including the Apple ID primary password and app-specific password, in plain setup text. This is credential harvesting behavior with severe consequences: account compromise, access to personal data, device tracking, and downstream abuse of the victim's Apple services.
The script implements a long-running daemon that automatically reads calendars, polls Find My location, infers status, and writes updates into a shared calendar without per-action user invocation. That materially exceeds the declared skill scope of user-requested iCloud operations and creates a covert background automation channel for sensitive personal data.
This logic continuously tracks a person's GPS location, infers home/work/commute behavior, and publishes that derived status to a shared calendar. In skill context, this is especially dangerous because it operationalizes family-member surveillance and exposes sensitive routine/location data far beyond ordinary calendar or file management.
The entire quickstart is written in Chinese and does not offer any language choice or note that the skill is intended only for Chinese-speaking users. Under the policy for natural-language violations, forcing a specific language without user opt-in is a reportable locale/language constraint.
Nearly all user-facing documentation is presented only in Chinese, with no indication that another language is available or that Chinese is required for a justified region-specific reason. This can violate language/locale policy when a skill implicitly forces one language without user opt-in.
The README introduces an external AMap reverse-geocoding dependency that sends device coordinates to a third-party service, but this data flow is not disclosed in the manifest description. Undocumented third-party sharing of precise location data is dangerous because users may believe all processing stays within Apple/iCloud when in fact sensitive GPS data is exposed to another provider.
The README documents a background 'status wall' capability that continuously polls Find My GPS data, derives semantic locations, and infers commuting/presence states for family-collaboration use. This materially expands the skill from ordinary iCloud file/calendar operations into ongoing presence monitoring, which is highly privacy-sensitive and not reflected in the stated skill scope, increasing the risk of covert surveillance or misuse.
The README describes continuous device-location retrieval, one-minute polling, and home/work presence detection without an explicit privacy warning or consent language. In the context of an iCloud skill, this is especially dangerous because it enables continuous tracking of a person's movements and routines, which can facilitate stalking, coercive monitoring, or other privacy harms if used without clear authorization.
The skill declares powerful capabilities through its instructions and example commands—environment variable access, shell execution, file reads/writes, and network access—but does not scope or constrain them via an explicit permission model. In a credentialed iCloud context, missing tool restrictions increases the chance of overbroad access, unintended data exposure, or unsafe command execution.
The trigger phrases are broad and overlap with common requests like checking today's schedule or adding an event. Overbroad invocation can cause the skill to activate in routine contexts and access calendars, photos, files, or location data when a narrower or different tool would have been more appropriate.
The skill includes device-finding and broad personal data access but does not prominently warn about the privacy implications of retrieving location, photos, files, and calendar information. Absent clear warnings and consent boundaries, users may unknowingly authorize highly sensitive account and location access.
The skill instructs the use of Apple ID credentials and session caching but does not provide strong safety guidance about secret handling, storage lifetime, or leakage risk. In an iCloud context, compromised credentials or session tokens can expose photos, files, calendars, reminders, and device-location data across the user's account.
Detected: suspicious.exposed_secret_literal