T03 · Remote Payload Retrieval and Execution
- Location
scripts/utils/validation.mjs:27- Finding
Unverified Remote Installer Piped Directly into a Shell
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill mostly matches its Auth0 Swift setup purpose, but it includes unsafe installation guidance and examples that can leak access tokens into logs.
Review this before installing. Only run the bootstrap against the intended Xcode project and Auth0 tenant, avoid the curl-to-shell installer path, prefer pinned dependencies or a reviewed lockfile, and remove any code that logs access tokens, refresh tokens, ID tokens, passwords, MFA tokens, or authorization headers.
scripts/utils/validation.mjs:27Unverified Remote Installer Piped Directly into a Shell
references/integration.md:45OAuth Access Tokens Exposed in Application Logs
scripts/package.json:6Unpinned Runtime Dependencies Create Supply-Chain Exposure
scripts/utils/validation.mjs:74Out-of-Scope Variable Causes Bootstrap Validation Failure
The declared description is about integrating Auth0 authentication into native Apple apps via Auth0.swift features such as Web Auth and biometric credential protection. The supplied code does none of that. Instead, it is a TypeScript utility for test/evaluation infrastructure that reads a JSON file and converts grader definitions between formats. Its primary purpose, language/ecosystem, and behavior are materially unrelated to iOS/macOS/tvOS/watchOS/visionOS authentication integration, so this is a clear description-behavior mismatch.
Referenced artifact was not completely inspected
ocoaPods or Carthage:** Follow the matching installation steps in [Setup Guide](./references/setup.md#sdk-installation). Do not just show the instructions — per
Referenced artifact was not completely inspected
ocoaPods or Carthage:** Follow the matching installation steps in [Setup Guide](./references/setup.md#sdk-installation). Do not just show the instructions — per
Referenced artifact was not completely inspected
ocoaPods or Carthage:** Follow the matching installation steps in [Setup Guide](./references/setup.md#sdk-installation). Do not just show the instructions — per
Referenced artifact was not completely inspected
ocoaPods or Carthage:** Follow the matching installation steps in [Setup Guide](./references/setup.md#sdk-installation). Do not just show the instructions — per
Referenced artifact was not completely inspected
ocoaPods or Carthage:** Follow the matching installation steps in [Setup Guide](./references/setup.md#sdk-installation). Do not just show the instructions — per
Referenced artifact was not completely inspected
- **[API Reference & Testing](./references/api.md)** — Full API reference, configuration options, claims reference, testing checklist, troubleshooting
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
|--------|------|-------------|
| `.useHTTPS()` | — | Use Universal Links (HTTPS) for callback — recommended |
| `.scope(_ scope: String)` | `String` | Space-separated OAuth scopes. Default: `"openid profile email"`. Add `"offline_access"` for refresh tokens |
| `.audience(_ audience: String)` | `String` | API audience (resource identifier). Required for API access tokens |
| `.parameters(_ params: [String: String])` | `[String: String]` | Additional authorize parameters (e.g., `["screen_hint": "signup"]`) |
| `.organization(_ organization: String)` | `String` | Auth0 Organization ID or name |
| `.invitationURL(_ url: URL)` | `URL` | Accept an organization invitation |
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
| `.credentials()` | `Credentials` (async) | Retrieve valid credentials; auto-renews if expired |
| `.credentials(minTTL:)` | `Credentials` (async) | Retrieve with minimum remaining TTL |
| `.canRenew()` | `Bool` | Returns `true` if a refresh token is available |
| `.hasValid(minTTL:)` | `Bool` | Returns `true` if access token is valid for at least `minTTL` seconds |
| `.clear()` | `Bool` | Remove credentials from Keychain |
| `.revoke(headers:)` | `Void` (async) | Revoke refresh token and clear credentials |
| `.enableBiometrics(withTitle:)` | — | Prompt biometric authentication when retrieving credentials |
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
| `.credentials()` | `Credentials` (async) | Retrieve valid credentials; auto-renews if expired |
| `.credentials(minTTL:)` | `Credentials` (async) | Retrieve with minimum remaining TTL |
| `.canRenew()` | `Bool` | Returns `true` if a refresh token is available |
| `.hasValid(minTTL:)` | `Bool` | Returns `true` if access token is valid for at least `minTTL` seconds |
| `.clear()` | `Bool` | Remove credentials from Keychain |
| `.revoke(headers:)` | `Void` (async) | Revoke refresh token and clear credentials |
| `.enableBiometrics(withTitle:)` | — | Prompt biometric authentication when retrieving credentials |
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
| `.credentials()` | `Credentials` (async) | Retrieve valid credentials; auto-renews if expired |
| `.credentials(minTTL:)` | `Credentials` (async) | Retrieve with minimum remaining TTL |
| `.canRenew()` | `Bool` | Returns `true` if a refresh token is available |
| `.hasValid(minTTL:)` | `Bool` | Returns `true` if access token is valid for at least `minTTL` seconds |
| `.clear()` | `Bool` | Remove credentials from Keychain |
| `.revoke(headers:)` | `Void` (async) | Revoke refresh token and clear credentials |
| `.enableBiometrics(withTitle:)` | — | Prompt biometric authentication when retrieving credentials |
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
| `.credentials()` | `Credentials` (async) | Retrieve valid credentials; auto-renews if expired |
| `.credentials(minTTL:)` | `Credentials` (async) | Retrieve with minimum remaining TTL |
| `.canRenew()` | `Bool` | Returns `true` if a refresh token is available |
| `.hasValid(minTTL:)` | `Bool` | Returns `true` if access token is valid for at least `minTTL` seconds |
| `.clear()` | `Bool` | Remove credentials from Keychain |
| `.revoke(headers:)` | `Void` (async) | Revoke refresh token and clear credentials |
| `.enableBiometrics(withTitle:)` | — | Prompt biometric authentication when retrieving credentials |
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
| `.credentials()` | `Credentials` (async) | Retrieve valid credentials; auto-renews if expired |
| `.credentials(minTTL:)` | `Credentials` (async) | Retrieve with minimum remaining TTL |
| `.canRenew()` | `Bool` | Returns `true` if a refresh token is available |
| `.hasValid(minTTL:)` | `Bool` | Returns `true` if access token is valid for at least `minTTL` seconds |
| `.clear()` | `Bool` | Remove credentials from Keychain |
| `.revoke(headers:)` | `Void` (async) | Revoke refresh token and clear credentials |
| `.enableBiometrics(withTitle:)` | — | Prompt biometric authentication when retrieving credentials |
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
| `.credentials()` | `Credentials` (async) | Retrieve valid credentials; auto-renews if expired |
| `.credentials(minTTL:)` | `Credentials` (async) | Retrieve with minimum remaining TTL |
| `.canRenew()` | `Bool` | Returns `true` if a refresh token is available |
| `.hasValid(minTTL:)` | `Bool` | Returns `true` if access token is valid for at least `minTTL` seconds |
| `.clear()` | `Bool` | Remove credentials from Keychain |
| `.revoke(headers:)` | `Void` (async) | Revoke refresh token and clear credentials |
| `.enableBiometrics(withTitle:)` | — | Prompt biometric authentication when retrieving credentials |
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
| `tokenType` | `String` | Token type, usually `"Bearer"` |
| `idToken` | `String` | JWT ID token with user identity claims |
| `refreshToken` | `String?` | Refresh token (requires `offline_access` scope) |
| `expiresIn` | `Date` | Access token expiration date |
| `scope` | `String?` | Granted scopes |
---
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
let credentials = try await Auth0.webAuth().start()
guard credentialsManager.store(credentials: credentials) else {
throw AuthError.keychainWriteFailed
}
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
func fetchData() async throws -> [Item] {
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
Auth0.swift **does not use a client secret**. Native apps use PKCE (Proof Key for Code Exchange), which is secure without a secret.
- `ClientId` and `Domain` in `Auth0.plist` are **not secrets** — they are safe to commit to source control
- Access tokens and refresh tokens are stored in the iOS/macOS **Keychain** by `CredentialsManager` — never in `UserDefaults` or plain files
- No environment variables or `.env` files are needed for the Auth0 configuration
---
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
{
"id": 1,
"prompt": "Add Auth0 authentication to a Swift iOS application using the Auth0.swift SDK.\n\n**Auth0 Credentials:**\n- Domain: `dev-example.auth0.com`\n- Client ID: `abc123def456ghi789jkl012`",
"expected_output": "Working iOS Swift app with Auth0 Web Auth login, secure Keychain credential storage via CredentialsManager, and proper Auth0.plist configuration",
"expectations": [
"Auth0 SDK installed via any valid method (SPM URL, CocoaPods pod line, or Carthage)",
"Has correct import statement (import Auth0)",
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
{
"id": 1,
"prompt": "Add Auth0 authentication to a Swift iOS application using the Auth0.swift SDK.\n\n**Auth0 Credentials:**\n- Domain: `dev-example.auth0.com`\n- Client ID: `abc123def456ghi789jkl012`",
"expected_output": "Working iOS Swift app with Auth0 Web Auth login, secure Keychain credential storage via CredentialsManager, and proper Auth0.plist configuration",
"expectations": [
"Auth0 SDK installed via any valid method (SPM URL, CocoaPods pod line, or Carthage)",
"Has correct import statement (import Auth0)",
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
{
"id": 1,
"prompt": "Add Auth0 authentication to a Swift iOS application using the Auth0.swift SDK.\n\n**Auth0 Credentials:**\n- Domain: `dev-example.auth0.com`\n- Client ID: `abc123def456ghi789jkl012`",
"expected_output": "Working iOS Swift app with Auth0 Web Auth login, secure Keychain credential storage via CredentialsManager, and proper Auth0.plist configuration",
"expectations": [
"Auth0 SDK installed via any valid method (SPM URL, CocoaPods pod line, or Carthage)",
"Has correct import statement (import Auth0)",
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
{
"id": 1,
"prompt": "Add Auth0 authentication to a Swift iOS application using the Auth0.swift SDK.\n\n**Auth0 Credentials:**\n- Domain: `dev-example.auth0.com`\n- Client ID: `abc123def456ghi789jkl012`",
"expected_output": "Working iOS Swift app with Auth0 Web Auth login, secure Keychain credential storage via CredentialsManager, and proper Auth0.plist configuration",
"expectations": [
"Auth0 SDK installed via any valid method (SPM URL, CocoaPods pod line, or Carthage)",
"Has correct import statement (import Auth0)",
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
{
"id": 1,
"prompt": "Add Auth0 authentication to a Swift iOS application using the Auth0.swift SDK.\n\n**Auth0 Credentials:**\n- Domain: `dev-example.auth0.com`\n- Client ID: `abc123def456ghi789jkl012`",
"expected_output": "Working iOS Swift app with Auth0 Web Auth login, secure Keychain credential storage via CredentialsManager, and proper Auth0.plist configuration",
"expectations": [
"Auth0 SDK installed via any valid method (SPM URL, CocoaPods pod line, or Carthage)",
"Has correct import statement (import Auth0)",
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
{
"id": 1,
"prompt": "Add Auth0 authentication to a Swift iOS application using the Auth0.swift SDK.\n\n**Auth0 Credentials:**\n- Domain: `dev-example.auth0.com`\n- Client ID: `abc123def456ghi789jkl012`",
"expected_output": "Working iOS Swift app with Auth0 Web Auth login, secure Keychain credential storage via CredentialsManager, and proper Auth0.plist configuration",
"expectations": [
"Auth0 SDK installed via any valid method (SPM URL, CocoaPods pod line, or Carthage)",
"Has correct import statement (import Auth0)",
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
{
"id": 1,
"prompt": "Add Auth0 authentication to a Swift iOS application using the Auth0.swift SDK.\n\n**Auth0 Credentials:**\n- Domain: `dev-example.auth0.com`\n- Client ID: `abc123def456ghi789jkl012`",
"expected_output": "Working iOS Swift app with Auth0 Web Auth login, secure Keychain credential storage via CredentialsManager, and proper Auth0.plist configuration",
"expectations": [
"Auth0 SDK installed via any valid method (SPM URL, CocoaPods pod line, or Carthage)",
"Has correct import statement (import Auth0)",
No suspicious patterns detected.