From 8001de5392dc52962a89997e6d505338dd1c8b46 Mon Sep 17 00:00:00 2001 From: Allen Date: Thu, 28 May 2026 17:50:21 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=97=A0=E5=AF=86?= =?UTF-8?q?=E7=A0=81=E8=AE=BF=E9=97=AEBUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/server/cli.js | 2 +- ui/server/index.js | 2 +- ui/server/services/pilotdeckConfig.js | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ui/server/cli.js b/ui/server/cli.js index 21610281..172f6563 100755 --- a/ui/server/cli.js +++ b/ui/server/cli.js @@ -188,7 +188,7 @@ function ensureFrontendBuild() { } async function startServer() { - const host = process.env.HOST || '0.0.0.0'; + const host = process.env.HOST || '127.0.0.1'; const port = process.env.SERVER_PORT || '3001'; await assertPortAvailable(port, host); ensureFrontendBuild(); diff --git a/ui/server/index.js b/ui/server/index.js index 61f5816c..65fca90b 100755 --- a/ui/server/index.js +++ b/ui/server/index.js @@ -2940,7 +2940,7 @@ async function getFileTree(dirPath, maxDepth = 3, currentDepth = 0, showHidden = } const SERVER_PORT = process.env.SERVER_PORT || 3001; -const HOST = process.env.HOST || '0.0.0.0'; +const HOST = process.env.HOST || '127.0.0.1'; const DISPLAY_HOST = getConnectableHost(HOST); const VITE_PORT = process.env.VITE_PORT || 5173; diff --git a/ui/server/services/pilotdeckConfig.js b/ui/server/services/pilotdeckConfig.js index 015cae01..2a864f87 100644 --- a/ui/server/services/pilotdeckConfig.js +++ b/ui/server/services/pilotdeckConfig.js @@ -82,7 +82,7 @@ export function buildDefaultPilotDeckConfig() { }, webui: { runtime: { - host: '0.0.0.0', + host: '127.0.0.1', serverPort: 3001, vitePort: 5173, proxyPort: 18080, @@ -313,7 +313,7 @@ export function buildRuntimeEnv(config) { PROXY_PORT: process.env.PROXY_PORT || proxyPort, SERVER_PORT: process.env.SERVER_PORT || String(runtime.serverPort ?? 3001), VITE_PORT: process.env.VITE_PORT || String(runtime.vitePort ?? 5173), - HOST: process.env.HOST || String(runtime.host ?? '0.0.0.0'), + HOST: process.env.HOST || String(runtime.host ?? '127.0.0.1'), API_TIMEOUT_MS: String(runtime.apiTimeoutMs ?? 120000), PILOTDECK_MEMORY_ENABLED: normalized.memory?.enabled ? '1' : '0', }; From ca89093c8043266772580cb771a92af54e4bc562 Mon Sep 17 00:00:00 2001 From: Allen Date: Thu, 28 May 2026 17:54:54 +0800 Subject: [PATCH 2/4] fix: critical security vulnerabilities - default auth bypass & network exposure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Two design flaws combine to allow any device on the same LAN to fully control the user machine without any authentication. ## Changes ### 1. Default listen address: 0.0.0.0 → 127.0.0.1 (already in previous commit) - ui/server/index.js - ui/server/services/pilotdeckConfig.js - ui/server/cli.js ### 2. DISABLE_LOCAL_AUTH default: true → false (this commit) - ui/server/constants/config.js - Changed from opt-out (must set =0 to enable auth) to opt-in (must set =1 to disable auth) ## Impact - Remote Code Execution via /shell WebSocket - Arbitrary file read/write/delete - API Key theft in plaintext via /api/config/provider - Full project download as ZIP - Git repo manipulation (commit, push, delete branches) - SSRF via /api/config/test-connection ## Reproduction Any device on the same WiFi can access http://:3001 with zero credentials. See SECURITY_REPORT.md for full details. --- ui/server/constants/config.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ui/server/constants/config.js b/ui/server/constants/config.js index 37570f6f..5e42da74 100644 --- a/ui/server/constants/config.js +++ b/ui/server/constants/config.js @@ -9,9 +9,9 @@ export const IS_PLATFORM = process.env.VITE_IS_PLATFORM === 'true'; /** * When true, skip JWT login/register in the web UI (single-user local mode). - * Set PILOTDECK_DISABLE_LOCAL_AUTH=0 or false to require username/password again. + * Set PILOTDECK_DISABLE_LOCAL_AUTH=1 or true to disable authentication. * @type {boolean} */ export const DISABLE_LOCAL_AUTH = - process.env.PILOTDECK_DISABLE_LOCAL_AUTH !== '0' && - process.env.PILOTDECK_DISABLE_LOCAL_AUTH !== 'false'; + process.env.PILOTDECK_DISABLE_LOCAL_AUTH === '1' || + process.env.PILOTDECK_DISABLE_LOCAL_AUTH === 'true'; From 24b19938b3cce7d31c04e883535cd24c6456f638 Mon Sep 17 00:00:00 2001 From: Allen Date: Tue, 2 Jun 2026 11:19:21 +0800 Subject: [PATCH 3/4] Add bin, snake game preview and snapshot --- bin/pilotdeck | 138 +++++++++++++++++++++++++++++++++++++++++ snake-game-preview.png | Bin 0 -> 129593 bytes snake-snapshot.yml | 0 3 files changed, 138 insertions(+) create mode 100755 bin/pilotdeck create mode 100644 snake-game-preview.png create mode 100644 snake-snapshot.yml diff --git a/bin/pilotdeck b/bin/pilotdeck new file mode 100755 index 00000000..d5c9185b --- /dev/null +++ b/bin/pilotdeck @@ -0,0 +1,138 @@ +#!/usr/bin/env bash +set -euo pipefail + +SOURCE="${BASH_SOURCE[0]}" +while [[ -L "$SOURCE" ]]; do + SOURCE_DIR="$(cd "$(dirname "$SOURCE")" && pwd)" + LINK_TARGET="$(readlink "$SOURCE")" + if [[ "$LINK_TARGET" == /* ]]; then + SOURCE="$LINK_TARGET" + else + SOURCE="$SOURCE_DIR/$LINK_TARGET" + fi +done +INSTALL_DIR="$(cd "$(dirname "$SOURCE")/.." && pwd)" +CONFIG_FILE="${PILOTDECK_CONFIG_PATH:-$HOME/.pilotdeck/pilotdeck.yaml}" +MAX_PORT_TRIES="${PILOTDECK_MAX_PORT_TRIES:-20}" + +fail() { printf "pilotdeck: %s\n" "$1" >&2; exit 1; } +warn() { printf "pilotdeck: %s\n" "$1" >&2; } + +is_port_free() { + local port="$1" + if command -v lsof >/dev/null 2>&1; then + ! lsof -nP -iTCP:"$port" -sTCP:LISTEN >/dev/null 2>&1 + elif command -v ss >/dev/null 2>&1; then + ! ss -tlnH "sport = :$port" 2>/dev/null | grep -q . + else + ! (echo >/dev/tcp/127.0.0.1/"$port") 2>/dev/null + fi +} + +find_free_port() { + local base="$1" + local offset candidate + for ((offset = 0; offset < MAX_PORT_TRIES; offset++)); do + candidate=$((base + offset)) + if is_port_free "$candidate"; then + printf "%s" "$candidate" + return 0 + fi + done + return 1 +} + +git_remote_url() { + git -C "$INSTALL_DIR" remote get-url origin 2>/dev/null || printf "unknown" +} + +git_branch_name() { + git -C "$INSTALL_DIR" branch --show-current 2>/dev/null || printf "unknown" +} + +COMMAND="start" +while [[ $# -gt 0 ]]; do + case "$1" in + start) + COMMAND="start" + shift + ;; + status|info) + COMMAND="status" + shift + ;; + help|-h|--help) + COMMAND="help" + shift + ;; + --port|-p) + [[ $# -ge 2 ]] || fail "--port requires a value" + SERVER_PORT="$2" + shift 2 + ;; + --port=*) + SERVER_PORT="${1#--port=}" + shift + ;; + --config) + [[ $# -ge 2 ]] || fail "--config requires a value" + CONFIG_FILE="$2" + shift 2 + ;; + --config=*) + CONFIG_FILE="${1#--config=}" + shift + ;; + *) + fail "unknown argument: $1" + ;; + esac +done + +if [[ "$COMMAND" == "help" ]]; then + cat <] [--config ] + pilotdeck status + pilotdeck help + +HELP + exit 0 +fi + +if [[ "$COMMAND" == "status" ]]; then + SERVER_BASE="${SERVER_PORT:-3001}" + NEXT_SERVER_PORT="$(find_free_port "$SERVER_BASE" || printf "%s" "$SERVER_BASE")" + printf "Installation: %s\n" "$INSTALL_DIR" + printf "Remote: %s\n" "$(git_remote_url)" + printf "Branch: %s\n" "$(git_branch_name)" + printf "Config: %s\n" "$CONFIG_FILE" + printf "Default URL: http://localhost:%s\n" "$SERVER_BASE" + printf "Next start: http://localhost:%s\n" "$NEXT_SERVER_PORT" + exit 0 +fi + +SERVER_BASE="${SERVER_PORT:-3001}" +GATEWAY_BASE="${PILOTDECK_GATEWAY_PORT:-18789}" +SERVER_PORT="$(find_free_port "$SERVER_BASE")" || fail "could not find a free UI port from ${SERVER_BASE}" +PILOTDECK_GATEWAY_PORT="$(find_free_port "$GATEWAY_BASE")" || fail "could not find a free gateway port from ${GATEWAY_BASE}" +PILOTDECK_GATEWAY_URL="ws://127.0.0.1:${PILOTDECK_GATEWAY_PORT}/ws" + +export PILOTDECK_CONFIG_PATH="$CONFIG_FILE" +export SERVER_PORT PILOTDECK_GATEWAY_PORT PILOTDECK_GATEWAY_URL + +if [[ "$SERVER_PORT" != "$SERVER_BASE" ]]; then + warn "UI port ${SERVER_BASE} is busy; using ${SERVER_PORT} instead." +fi +if [[ "$PILOTDECK_GATEWAY_PORT" != "$GATEWAY_BASE" ]]; then + warn "Gateway port ${GATEWAY_BASE} is busy; using ${PILOTDECK_GATEWAY_PORT} instead." +fi + +node "$INSTALL_DIR/scripts/bootstrap-pilotdeck-config.mjs" + +printf "pilotdeck: starting at http://localhost:%s\n" "$SERVER_PORT" +export PILOTDECK_SKIP_DEFAULT_PROJECT=1 +cd "$INSTALL_DIR/ui" +exec npm run start:built diff --git a/snake-game-preview.png b/snake-game-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..e2ed1dce9d0515c3db67a2cd2f26306e6e1c7e18 GIT binary patch literal 129593 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
  • iq0<1CvOEf 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 Date: Tue, 2 Jun 2026 11:28:23 +0800 Subject: [PATCH 4/4] Add PR sync workflows and security report --- .github/workflows/sync-existing-prs.yml | 281 ++++++++++++++++++++++++ .github/workflows/sync-pr-to-feishu.yml | 227 +++++++++++++++++++ SECURITY_REPORT.md | 208 ++++++++++++++++++ 3 files changed, 716 insertions(+) create mode 100644 .github/workflows/sync-existing-prs.yml create mode 100644 .github/workflows/sync-pr-to-feishu.yml create mode 100644 SECURITY_REPORT.md diff --git a/.github/workflows/sync-existing-prs.yml b/.github/workflows/sync-existing-prs.yml new file mode 100644 index 00000000..817c706f --- /dev/null +++ b/.github/workflows/sync-existing-prs.yml @@ -0,0 +1,281 @@ +name: Sync Existing PRs to Feishu Bitable + +on: + workflow_dispatch: + inputs: + state: + description: 'PR state to sync' + required: true + default: 'all' + type: choice + options: + - all + - open + - closed + - merged + limit: + description: 'Max number of PRs to sync (0 = all)' + required: false + default: '0' + type: string + +jobs: + sync-existing: + runs-on: ubuntu-latest + concurrency: + group: feishu-sync-existing + cancel-in-progress: false + env: + LARK_APP_ID: ${{ secrets.LARK_APP_ID }} + LARK_APP_SECRET: ${{ secrets.LARK_APP_SECRET }} + BITABLE_APP_TOKEN: ${{ secrets.BITABLE_APP_TOKEN }} + BITABLE_TABLE_ID: ${{ secrets.BITABLE_TABLE_ID }} + steps: + - name: Check secrets + run: | + if [ -z "$LARK_APP_SECRET" ]; then + echo "::error::LARK_APP_SECRET is not set, skipping." + exit 1 + fi + + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Install lark-cli + run: npm install -g @larksuite/cli + + - name: Configure lark-cli + shell: bash + run: | + echo "$LARK_APP_SECRET" | lark-cli config init --app-id "$LARK_APP_ID" --brand feishu --app-secret-stdin + lark-cli auth status + + - name: Fetch and sync PRs + shell: bash + env: + GH_TOKEN: ${{ github.token }} + STATE: ${{ inputs.state }} + LIMIT: ${{ inputs.limit }} + REPO: ${{ github.repository }} + run: | + set -eo pipefail + + GH_ARGS=("--json" "number,title,state,isDraft,author,headRefName,baseRefName,headRefOid,url,body,createdAt,updatedAt,closedAt,mergedAt,mergedBy,labels,milestone,assignees,reviewRequests") + + if [ "$STATE" = "merged" ]; then + GH_ARGS+=("--state" "closed" "--search" "is:merged") + elif [ "$STATE" != "all" ]; then + GH_ARGS+=("--state" "$STATE") + else + GH_ARGS+=("--state" "all") + fi + + if [ "$LIMIT" != "0" ] && [ -n "$LIMIT" ]; then + GH_ARGS+=("--limit" "$LIMIT") + else + GH_ARGS+=("--limit" "9999") + fi + + echo "Fetching PRs with: gh pr list ${GH_ARGS[*]}" + PRS=$(gh pr list "${GH_ARGS[@]}") + TOTAL=$(echo "$PRS" | jq 'length') + echo "Found $TOTAL PRs to sync" + + fmt_date() { + local raw="$1" + [ -z "$raw" ] || [ "$raw" = "null" ] && echo "" && return + date -d "$raw" '+%Y-%m-%d %H:%M:%S' 2>/dev/null || echo "$raw" + } + + FAIL_COUNT=0 + SUCCESS_COUNT=0 + + while read -r PR; do + PR_NUMBER=$(echo "$PR" | jq -r '.number') + echo "--- Processing PR #$PR_NUMBER ---" + + COMMITS=0 + ADDITIONS=0 + DELETIONS=0 + CHANGED_FILES=0 + + STATS_OK=true + PR_DETAIL="" + for attempt in 1 2 3; do + if PR_DETAIL=$(gh pr view "$PR_NUMBER" --json "additions,deletions,changedFiles,commits" 2>/dev/null); then + break + fi + echo " gh pr view attempt $attempt failed, retrying..." + sleep 2 + if [ "$attempt" -eq 3 ]; then + echo " ::warning::gh pr view failed after 3 attempts for PR #$PR_NUMBER" + STATS_OK=false + fi + done + + if [ "$STATS_OK" = true ] && [ -n "$PR_DETAIL" ]; then + COMMITS=$(echo "$PR_DETAIL" | jq -r '.commits | length // 0' 2>/dev/null) || COMMITS=0 + ADDITIONS=$(echo "$PR_DETAIL" | jq -r '.additions // 0' 2>/dev/null) || ADDITIONS=0 + DELETIONS=$(echo "$PR_DETAIL" | jq -r '.deletions // 0' 2>/dev/null) || DELETIONS=0 + CHANGED_FILES=$(echo "$PR_DETAIL" | jq -r '.changedFiles // 0' 2>/dev/null) || CHANGED_FILES=0 + fi + + PR_STATE=$(echo "$PR" | jq -r '.state') + IS_DRAFT=$(echo "$PR" | jq -r '.isDraft') + MERGED_AT_RAW=$(echo "$PR" | jq -r '.mergedAt // empty') + + if [ -n "$MERGED_AT_RAW" ]; then + STATUS="Merged" + elif [ "$PR_STATE" = "CLOSED" ]; then + STATUS="Closed" + elif [ "$IS_DRAFT" = "true" ]; then + STATUS="Draft" + else + STATUS="Open" + fi + + CREATED_AT=$(fmt_date "$(echo "$PR" | jq -r '.createdAt // empty')") + UPDATED_AT=$(fmt_date "$(echo "$PR" | jq -r '.updatedAt // empty')") + CLOSED_AT=$(fmt_date "$(echo "$PR" | jq -r '.closedAt // empty')") + MERGED_AT_FMT=$(fmt_date "$(echo "$PR" | jq -r '.mergedAt // empty')") + + TITLE=$(echo "$PR" | jq -r '.title // empty') + AUTHOR=$(echo "$PR" | jq -r '.author.login // empty') + BRANCH=$(echo "$PR" | jq -r '.headRefName // empty') + BASE_BRANCH=$(echo "$PR" | jq -r '.baseRefName // empty') + HEAD_SHA=$(echo "$PR" | jq -r '.headRefOid // empty') + URL=$(echo "$PR" | jq -r '.url // empty') + BODY=$(echo "$PR" | jq -r '.body // empty' | head -c 5000) + LABELS=$(echo "$PR" | jq -r '[.labels[]?.name] | join(", ")') + MILESTONE=$(echo "$PR" | jq -r '.milestone.title // empty') + ASSIGNEES=$(echo "$PR" | jq -r '[.assignees[]?.login] | join(", ")') + REVIEWERS=$(echo "$PR" | jq -r '[.reviewRequests[]? | (.login // .name)] | join(", ")') + MERGED_BY=$(echo "$PR" | jq -r '.mergedBy.login // empty') + + if [ "$STATS_OK" = true ]; then + FIELDS=$(jq -n \ + --arg title "$TITLE" \ + --argjson pr_number "$PR_NUMBER" \ + --arg pr_index "[$PR_NUMBER]" \ + --arg author "$AUTHOR" \ + --arg repo "$REPO" \ + --arg status "$STATUS" \ + --arg url "$URL" \ + --arg branch "$BRANCH" \ + --arg base_branch "$BASE_BRANCH" \ + --arg head_sha "$HEAD_SHA" \ + --arg body "$BODY" \ + --arg created_at "$CREATED_AT" \ + --arg updated_at "$UPDATED_AT" \ + --arg closed_at "$CLOSED_AT" \ + --arg merged_at "$MERGED_AT_FMT" \ + --arg merged_by "$MERGED_BY" \ + --argjson commits "${COMMITS:-0}" \ + --argjson additions "${ADDITIONS:-0}" \ + --argjson deletions "${DELETIONS:-0}" \ + --argjson changed_files "${CHANGED_FILES:-0}" \ + --arg labels "$LABELS" \ + --arg milestone "$MILESTONE" \ + --arg assignees "$ASSIGNEES" \ + --arg reviewers "$REVIEWERS" \ + '{ + "PR标题": $title, "PR编号": $pr_number, "PR索引": $pr_index, + "作者": $author, "仓库": $repo, "状态": $status, "链接": $url, + "分支名称": $branch, "目标分支": $base_branch, "Head SHA": $head_sha, + "PR描述": $body, "创建时间": $created_at, "更新时间": $updated_at, + "提交数": $commits, "新增行数": $additions, "删除行数": $deletions, + "变更文件数": $changed_files, "标签": $labels, "里程碑": $milestone, + "指派人": $assignees, "审查人": $reviewers, "合并人": $merged_by + } + | if $closed_at != "" then . + {"关闭时间": $closed_at} else . end + | if $merged_at != "" then . + {"合并时间": $merged_at} else . end') + else + FIELDS=$(jq -n \ + --arg title "$TITLE" \ + --argjson pr_number "$PR_NUMBER" \ + --arg pr_index "[$PR_NUMBER]" \ + --arg author "$AUTHOR" \ + --arg repo "$REPO" \ + --arg status "$STATUS" \ + --arg url "$URL" \ + --arg branch "$BRANCH" \ + --arg base_branch "$BASE_BRANCH" \ + --arg head_sha "$HEAD_SHA" \ + --arg body "$BODY" \ + --arg created_at "$CREATED_AT" \ + --arg updated_at "$UPDATED_AT" \ + --arg closed_at "$CLOSED_AT" \ + --arg merged_at "$MERGED_AT_FMT" \ + --arg merged_by "$MERGED_BY" \ + --arg labels "$LABELS" \ + --arg milestone "$MILESTONE" \ + --arg assignees "$ASSIGNEES" \ + --arg reviewers "$REVIEWERS" \ + '{ + "PR标题": $title, "PR编号": $pr_number, "PR索引": $pr_index, + "作者": $author, "仓库": $repo, "状态": $status, "链接": $url, + "分支名称": $branch, "目标分支": $base_branch, "Head SHA": $head_sha, + "PR描述": $body, "创建时间": $created_at, "更新时间": $updated_at, + "标签": $labels, "里程碑": $milestone, + "指派人": $assignees, "审查人": $reviewers, "合并人": $merged_by + } + | if $closed_at != "" then . + {"关闭时间": $closed_at} else . end + | if $merged_at != "" then . + {"合并时间": $merged_at} else . end') + fi + + # --- Find existing record by PR索引 keyword --- + RECORD_ID="" + + SEARCH_RESULT=$(lark-cli base +record-search \ + --base-token "$BITABLE_APP_TOKEN" \ + --table-id "$BITABLE_TABLE_ID" \ + --as bot \ + --format json \ + --json "{\"keyword\":\"[$PR_NUMBER]\",\"search_fields\":[\"PR索引\"],\"select_fields\":[\"PR索引\"],\"limit\":200}" 2>&1) || true + + if echo "$SEARCH_RESULT" | jq -e '.ok == true' > /dev/null 2>&1; then + RECORD_ID=$(echo "$SEARCH_RESULT" | jq -r --arg idx "[$PR_NUMBER]" ' + .data as $d | + if ($d.record_id_list | length) == 0 then empty + elif ($d.fields | length) == 0 then $d.record_id_list[0] + else + ($d.fields | to_entries | map(select(.value == "PR索引")) | .[0].key // null) as $col | + if $col == null then $d.record_id_list[0] + else + [ $d.data | to_entries[] | select( + (.value[$col] | tostring) == $idx + ) | .key ] | .[0] as $row | + if $row == null then empty + else $d.record_id_list[$row | tonumber] + end + end + end // empty' 2>/dev/null) || true + fi + + # --- Upsert --- + ARGS=( + --base-token "$BITABLE_APP_TOKEN" + --table-id "$BITABLE_TABLE_ID" + --as bot + --json "$FIELDS" + ) + if [ -n "$RECORD_ID" ]; then + echo " Updating existing record: $RECORD_ID" + ARGS+=(--record-id "$RECORD_ID") + else + echo " Creating new record" + fi + if lark-cli base +record-upsert "${ARGS[@]}" > /dev/null 2>&1; then + SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) + else + echo " ::warning::upsert failed for PR #$PR_NUMBER, skipping" + FAIL_COUNT=$((FAIL_COUNT + 1)) + fi + + sleep 1 + done < <(echo "$PRS" | jq -c '.[]') + + echo "=== Sync complete: $SUCCESS_COUNT succeeded, $FAIL_COUNT failed ===" + if [ "$FAIL_COUNT" -gt 0 ]; then + echo "::warning::$FAIL_COUNT PR(s) failed to sync" + fi diff --git a/.github/workflows/sync-pr-to-feishu.yml b/.github/workflows/sync-pr-to-feishu.yml new file mode 100644 index 00000000..2e4411fb --- /dev/null +++ b/.github/workflows/sync-pr-to-feishu.yml @@ -0,0 +1,227 @@ +name: Sync PR to Feishu Bitable + +on: + pull_request: + types: [opened, closed, reopened, edited, synchronize, converted_to_draft, ready_for_review] + pull_request_review: + types: [submitted] + +jobs: + sync-pr: + runs-on: ubuntu-latest + if: github.event.pull_request.head.repo.full_name == github.repository + concurrency: + group: feishu-pr-${{ github.event.pull_request.number }} + cancel-in-progress: false + env: + LARK_APP_ID: ${{ secrets.LARK_APP_ID }} + LARK_APP_SECRET: ${{ secrets.LARK_APP_SECRET }} + BITABLE_APP_TOKEN: ${{ secrets.BITABLE_APP_TOKEN }} + BITABLE_TABLE_ID: ${{ secrets.BITABLE_TABLE_ID }} + steps: + - name: Check secrets + run: | + if [ -z "$LARK_APP_SECRET" ]; then + echo "::error::LARK_APP_SECRET is not set, skipping." + exit 1 + fi + + - name: Install lark-cli + run: npm install -g @larksuite/cli + + - name: Configure lark-cli + run: | + echo "$LARK_APP_SECRET" | lark-cli config init --app-id "$LARK_APP_ID" --brand feishu --app-secret-stdin + lark-cli auth status + + - name: Determine PR Status + id: status + run: | + if [ "${{ github.event.pull_request.merged }}" = "true" ]; then + echo "pr_status=Merged" >> "$GITHUB_OUTPUT" + elif [ "${{ github.event.action }}" = "closed" ]; then + echo "pr_status=Closed" >> "$GITHUB_OUTPUT" + elif [ "${{ github.event.pull_request.draft }}" = "true" ]; then + echo "pr_status=Draft" >> "$GITHUB_OUTPUT" + else + echo "pr_status=Open" >> "$GITHUB_OUTPUT" + fi + + - name: Build Fields JSON + id: fields + env: + PR_TITLE: ${{ github.event.pull_request.title }} + PR_NUMBER: ${{ github.event.pull_request.number }} + PR_AUTHOR: ${{ github.event.pull_request.user.login }} + PR_REPO: ${{ github.event.repository.full_name }} + PR_STATUS: ${{ steps.status.outputs.pr_status }} + PR_URL: ${{ github.event.pull_request.html_url }} + PR_BRANCH: ${{ github.event.pull_request.head.ref }} + PR_BASE_BRANCH: ${{ github.event.pull_request.base.ref }} + PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }} + PR_BODY: ${{ github.event.pull_request.body }} + PR_CREATED_AT: ${{ github.event.pull_request.created_at }} + PR_UPDATED_AT: ${{ github.event.pull_request.updated_at }} + PR_CLOSED_AT: ${{ github.event.pull_request.closed_at }} + PR_MERGED_AT: ${{ github.event.pull_request.merged_at }} + PR_MERGED_BY: ${{ github.event.pull_request.merged_by.login }} + PR_COMMITS: ${{ github.event.pull_request.commits }} + PR_ADDITIONS: ${{ github.event.pull_request.additions }} + PR_DELETIONS: ${{ github.event.pull_request.deletions }} + PR_CHANGED_FILES: ${{ github.event.pull_request.changed_files }} + PR_LABELS: ${{ join(github.event.pull_request.labels.*.name, ', ') }} + PR_MILESTONE: ${{ github.event.pull_request.milestone.title }} + PR_ASSIGNEES: ${{ join(github.event.pull_request.assignees.*.login, ', ') }} + PR_REVIEWERS: ${{ join(github.event.pull_request.requested_reviewers.*.login, ', ') }} + PR_REVIEW_TEAMS: ${{ join(github.event.pull_request.requested_teams.*.slug, ', ') }} + REVIEW_AUTHOR: ${{ github.event.review.user.login }} + EVENT_NAME: ${{ github.event_name }} + run: | + ALL_REVIEWERS="" + [ -n "$PR_REVIEWERS" ] && ALL_REVIEWERS="$PR_REVIEWERS" + [ -n "$PR_REVIEW_TEAMS" ] && ALL_REVIEWERS="${ALL_REVIEWERS:+$ALL_REVIEWERS, }$PR_REVIEW_TEAMS" + [ -n "$REVIEW_AUTHOR" ] && ALL_REVIEWERS="${ALL_REVIEWERS:+$ALL_REVIEWERS, }$REVIEW_AUTHOR" + REVIEWERS=$(echo "$ALL_REVIEWERS" | tr ',' '\n' | sed 's/^ *//' | grep -v '^$' | sort -u | paste -sd ', ') || true + + fmt_date() { + local raw="$1" + [ -z "$raw" ] || [ "$raw" = "null" ] && echo "" && return + date -d "$raw" '+%Y-%m-%d %H:%M:%S' 2>/dev/null || echo "$raw" + } + CREATED_AT=$(fmt_date "$PR_CREATED_AT") + UPDATED_AT=$(fmt_date "$PR_UPDATED_AT") + CLOSED_AT=$(fmt_date "$PR_CLOSED_AT") + MERGED_AT=$(fmt_date "$PR_MERGED_AT") + + BODY_TRUNCATED=$(printf '%s' "$PR_BODY" | head -c 5000) + + STATS_ARGS="" + if [ "$EVENT_NAME" = "pull_request" ]; then + STATS_ARGS=$(jq -n \ + --argjson commits "${PR_COMMITS:-0}" \ + --argjson additions "${PR_ADDITIONS:-0}" \ + --argjson deletions "${PR_DELETIONS:-0}" \ + --argjson changed_files "${PR_CHANGED_FILES:-0}" \ + '{"提交数": $commits, "新增行数": $additions, "删除行数": $deletions, "变更文件数": $changed_files}') + fi + + BASE_FIELDS=$(jq -n \ + --arg title "$PR_TITLE" \ + --arg author "$PR_AUTHOR" \ + --arg repo "$PR_REPO" \ + --arg status "$PR_STATUS" \ + --arg url "$PR_URL" \ + --arg branch "$PR_BRANCH" \ + --arg base_branch "$PR_BASE_BRANCH" \ + --arg head_sha "$PR_HEAD_SHA" \ + --arg body "$BODY_TRUNCATED" \ + --arg created_at "$CREATED_AT" \ + --arg updated_at "$UPDATED_AT" \ + --arg closed_at "$CLOSED_AT" \ + --arg merged_at "$MERGED_AT" \ + --arg merged_by "${PR_MERGED_BY:-}" \ + --arg labels "$PR_LABELS" \ + --arg milestone "${PR_MILESTONE:-}" \ + --arg assignees "$PR_ASSIGNEES" \ + --arg reviewers "$REVIEWERS" \ + --argjson pr_number "$PR_NUMBER" \ + --arg pr_index "[$PR_NUMBER]" \ + '{ + "PR标题": $title, + "PR编号": $pr_number, + "PR索引": $pr_index, + "作者": $author, + "仓库": $repo, + "状态": $status, + "链接": $url, + "分支名称": $branch, + "目标分支": $base_branch, + "Head SHA": $head_sha, + "PR描述": $body, + "创建时间": $created_at, + "更新时间": $updated_at, + "标签": $labels, + "里程碑": $milestone, + "指派人": $assignees, + "审查人": $reviewers, + "合并人": $merged_by + } + | if $closed_at != "" then . + {"关闭时间": $closed_at} else . end + | if $merged_at != "" then . + {"合并时间": $merged_at} else . end') + + if [ -n "$STATS_ARGS" ]; then + FIELDS=$(echo "$BASE_FIELDS" "$STATS_ARGS" | jq -s '.[0] * .[1]') + else + FIELDS="$BASE_FIELDS" + fi + + echo "Fields: $FIELDS" + echo "$FIELDS" > /tmp/fields.json + + - name: Find Existing Record + id: find + env: + PR_NUMBER: ${{ github.event.pull_request.number }} + run: | + RECORD_ID="" + + RESULT=$(lark-cli base +record-search \ + --base-token "$BITABLE_APP_TOKEN" \ + --table-id "$BITABLE_TABLE_ID" \ + --as bot \ + --format json \ + --json "{\"keyword\":\"[$PR_NUMBER]\",\"search_fields\":[\"PR索引\"],\"select_fields\":[\"PR索引\"],\"limit\":200}" 2>&1) || true + + echo "Search raw result: $RESULT" + + if echo "$RESULT" | jq -e '.ok == true' > /dev/null 2>&1; then + RECORD_ID=$(echo "$RESULT" | jq -r --arg idx "[$PR_NUMBER]" ' + .data as $d | + if ($d.record_id_list | length) == 0 then empty + elif ($d.fields | length) == 0 then $d.record_id_list[0] + else + ($d.fields | to_entries | map(select(.value == "PR索引")) | .[0].key // null) as $col | + if $col == null then $d.record_id_list[0] + else + [ $d.data | to_entries[] | select( + (.value[$col] | tostring) == $idx + ) | .key ] | .[0] as $row | + if $row == null then empty + else $d.record_id_list[$row | tonumber] + end + end + end // empty' 2>/dev/null) || true + fi + + echo "Found record_id: ${RECORD_ID:-}" + echo "record_id=$RECORD_ID" >> "$GITHUB_OUTPUT" + + - name: Sync to Feishu Bitable + env: + RECORD_ID: ${{ steps.find.outputs.record_id }} + run: | + FIELDS=$(cat /tmp/fields.json) + echo "Writing to Bitable: $FIELDS" + ARGS=( + --base-token "$BITABLE_APP_TOKEN" + --table-id "$BITABLE_TABLE_ID" + --as bot + --json "$FIELDS" + ) + if [ -n "$RECORD_ID" ]; then + echo "Updating existing record: $RECORD_ID" + ARGS+=(--record-id "$RECORD_ID") + else + echo "Creating new record" + fi + + for attempt in 1 2 3; do + if lark-cli base +record-upsert "${ARGS[@]}"; then + echo "Upsert succeeded" + exit 0 + fi + echo "::warning::Upsert attempt $attempt failed, retrying..." + sleep 2 + done + echo "::error::Upsert failed after 3 attempts" + exit 1 diff --git a/SECURITY_REPORT.md b/SECURITY_REPORT.md new file mode 100644 index 00000000..2664d109 --- /dev/null +++ b/SECURITY_REPORT.md @@ -0,0 +1,208 @@ +# PilotDeck 安全漏洞报告 + +**报告日期:** 2026-05-28 +**影响版本:** 当前 main 分支(所有版本) +**严重程度:** 🔴 严重(Critical) + +--- + +## 一、漏洞概述 + +PilotDeck 存在两个设计缺陷,组合后导致同一局域网下的任何设备无需任何身份认证即可完全控制用户电脑。 + +| 缺陷 | 位置 | 说明 | +|------|------|------| +| 默认监听 `0.0.0.0` | `ui/server/index.js:2943` 等 3 处 | 服务暴露在所有网络接口,局域网可直接访问 | +| 默认关闭认证 | `ui/server/constants/config.js:15` | `DISABLE_LOCAL_AUTH` 默认为 `true`,跳过全部 JWT 验证 | + +**一句话总结:** 用户启动 PilotDeck 后,同一 WiFi 下的任何人在浏览器输入 `http://<用户IP>:3001` 即可无密码访问全部 API,包括读写文件、窃取密钥、执行系统命令。 + +--- + +## 二、影响范围 + +### 谁会受影响 + +- 所有使用默认配置启动 PilotDeck 的用户 +- 尤其是在公司办公网络、咖啡厅、酒店等共享 WiFi 环境下的用户 + +### 攻击者能做什么 + +| 危害等级 | 攻击行为 | 对应 API | +|---------|---------|---------| +| 🔴 远程代码执行 | 通过 WebSocket 获得完整系统终端 | `/shell` WebSocket | +| 🔴 文件读取 | 读取用户电脑上任意文件的完整内容 | `GET /api/projects/:name/file` | +| 🔴 文件写入/删除 | 覆写或递归删除用户文件 | `PUT /api/.../file`, `DELETE /api/.../files` | +| 🔴 密钥窃取 | 获取 AI Provider API Key 明文 | `GET /api/config/provider` | +| 🔴 项目打包下载 | 将整个项目目录打包为 ZIP 下载 | `GET /api/projects/:name/download` | +| 🟠 配置篡改 | 修改服务配置、权限设置 | `PUT /api/config`, `PUT /api/settings/permissions` | +| 🟠 聊天记录泄露 | 读取用户所有对话历史 | `GET /api/projects/:name/sessions` | +| 🟠 Git 仓库操控 | 提交、推送、删除分支 | `POST /api/git/push` 等 | +| 🟡 SSRF | 利用服务器向内网发起请求 | `POST /api/config/test-connection` | + +--- + +## 三、复现步骤 + +### 环境 + +- 攻击者和受害者连接在同一局域网(如同一 WiFi) +- 受害者以默认配置启动 PilotDeck + +### 步骤 1:确认服务暴露 + +攻击者在自己设备的浏览器中输入: + +``` +http://<受害者IP>:3001 +``` + +无需登录,直接进入 PilotDeck Web UI。 + +### 步骤 2:窃取 API Key + +```bash +curl http://<受害者IP>:3001/api/config/provider +``` + +返回结果(明文 API Key): + +```json +{ + "exists": true, + "provider": { + "type": "openai", + "baseUrl": "https://api.deepseek.com/v1", + "apiKey": "sk-xxxxxxxxxxxxxxxxxxxx", + "model": "deepseek-v4-pro" + } +} +``` + +### 步骤 3:读取任意文件内容 + +```bash +curl "http://<受害者IP>:3001/api/projects/<项目名>/file?filePath=pilotdeck.yaml" +``` + +返回文件完整内容。 + +### 步骤 4:获取远程终端 + +```javascript +const ws = new WebSocket("ws://<受害者IP>:3001/shell"); +ws.onopen = () => ws.send(JSON.stringify({ + type: "init", + projectPath: "/tmp", + initialCommand: "whoami && cat /etc/passwd", + isPlainShell: true +})); +ws.onmessage = (e) => console.log(e.data); +``` + +攻击者获得受害者系统的完整 shell 权限。 + +--- + +## 四、根本原因分析 + +### 缺陷 1:监听地址默认为 `0.0.0.0` + +以下三处硬编码了 `0.0.0.0`: + +``` +ui/server/index.js:2943 + const HOST = process.env.HOST || '0.0.0.0'; + +ui/server/services/pilotdeckConfig.js:85 + host: '0.0.0.0', + +ui/server/services/pilotdeckConfig.js:316 + HOST: process.env.HOST || String(runtime.host ?? '0.0.0.0'), + +ui/server/cli.js:191 + const host = process.env.HOST || '0.0.0.0'; +``` + +`0.0.0.0` 意味着接受来自所有网络接口的连接。对于本地桌面工具,应默认仅监听 `127.0.0.1`。 + +### 缺陷 2:认证默认关闭 + +```javascript +// ui/server/constants/config.js:15-17 +export const DISABLE_LOCAL_AUTH = + process.env.PILOTDECK_DISABLE_LOCAL_AUTH !== '0' && + process.env.PILOTDECK_DISABLE_LOCAL_AUTH !== 'false'; +``` + +当环境变量 `PILOTDECK_DISABLE_LOCAL_AUTH` 未设置时,`undefined !== '0'` 为 `true`,导致认证被完全跳过。`authenticateToken` 中间件直接返回数据库中第一个用户,所有受保护的 API 变为完全开放。 + +### 两个缺陷的叠加效应 + +单独来看各有一定合理性(方便容器部署 / 降低使用门槛),但组合起来 = **全网络暴露 + 无认证 = 局域网内任何人完全控制用户电脑**。 + +--- + +## 五、建议修复方案 + +### 修复 1:默认监听地址改为 `127.0.0.1`(优先级:P0) + +```diff +# ui/server/index.js:2943 +- const HOST = process.env.HOST || '0.0.0.0'; ++ const HOST = process.env.HOST || '127.0.0.1'; + +# ui/server/services/pilotdeckConfig.js:85 +- host: '0.0.0.0', ++ host: '127.0.0.1', + +# ui/server/services/pilotdeckConfig.js:316 +- HOST: process.env.HOST || String(runtime.host ?? '0.0.0.0'), ++ HOST: process.env.HOST || String(runtime.host ?? '127.0.0.1'), + +# ui/server/cli.js:191 +- const host = process.env.HOST || '0.0.0.0'; ++ const host = process.env.HOST || '127.0.0.1'; +``` + +### 修复 2:认证默认改为开启(优先级:P0) + +```diff +# ui/server/constants/config.js:15-17 +- export const DISABLE_LOCAL_AUTH = +- process.env.PILOTDECK_DISABLE_LOCAL_AUTH !== '0' && +- process.env.PILOTDECK_DISABLE_LOCAL_AUTH !== 'false'; ++ export const DISABLE_LOCAL_AUTH = ++ process.env.PILOTDECK_DISABLE_LOCAL_AUTH === '1' || ++ process.env.PILOTDECK_DISABLE_LOCAL_AUTH === 'true'; +``` + +### 修复 3:其他关联安全问题(优先级:P1) + +| 问题 | 文件 | 建议 | +|------|------|------| +| `/api/config/provider` 返回明文 API Key | `routes/config.js:163` | 对 `apiKey` 字段做脱敏处理 | +| GitHub token 嵌入 clone URL 泄露到日志 | `routes/projects.js:548` | 使用 `GIT_ASKPASS` 或 header auth | +| API Key 可通过 query param 传递 | `routes/agent.js:44` | 仅允许 header 传递 | +| `_safeFilePath` 路径遍历防护不完整 | `sessionManager.js:141` | 改用递归替换或白名单校验 | +| `validateFilePath` 缺少 projectPath 参数 | `routes/git.js:251` | 传入 projectPath 启用路径遍历检查 | +| `/load` 路由路径检查可绕过 | `routes/commands.js:884` | 改用 `path.relative` 前缀检查 | +| SQLite 事务内使用 await | `routes/auth.js:48` | 将 bcrypt.hash 移到事务外部 | + +--- + +## 六、临时缓解措施(用户可立即执行) + +在官方修复发布前,用户可通过以下方式自我保护: + +```bash +# 方法 1:设置环境变量启动 +HOST=127.0.0.1 PILOTDECK_DISABLE_LOCAL_AUTH=0 pilotdeck + +# 方法 2:开启 macOS 防火墙 +# 系统偏好设置 → 网络 → 防火墙 → 打开 +``` + +--- + +*本报告由安全审计生成,建议以 P0 优先级修复缺陷 1 和缺陷 2。*