本卡屬 FR-120(母卡待填)。這一棒掃主專案自己程式的「雲端硬碟整合:設定、授權、金鑰」(13 檔/1786 行)。只掃不修。
用資安掃描工具掃 BE repo 自己寫的「雲端硬碟整合:設定、授權、金鑰」這塊程式(13 檔,約 1786 行),找出權限檢查、資料歸屬判斷上的漏洞並產出報告。只找問題、不修問題。
🔴 優先序第 7:守門字眼多,重點是「檢查的問題對不對」而不是「有沒有檢查」。
這些是首腦讀過盤點檔與程式碼後認為最容易出事的地方,是思考起點不是檢查清單:
google_drive_token_manager.py+fernet_crypto.py:客戶的 Google 授權權杖怎麼加密存、用哪把金鑰。已知「加密金鑰寫在版控裡」(另案,不重報),這一棒問的是程式邏輯:解密失敗時怎麼處理、權杖過期換新時會不會寫錯租戶。google_drive_integration_route.py/google_drive_sync_route.py(守門字眼很多):照手冊問「守的問題對不對」——是檢查「你是這家公司的管理員」,還是只檢查「你有 drive 能力點」。google_drive_app_config_resolver.py(224 行、0 守門):Google 應用程式設定從哪讀(租戶→原廠→環境變數)。問:租戶層設定能不能被一般使用者寫入、進而把整家公司的同步導到攻擊者的 Google 應用程式。drive_sync_admin_service.py:手動觸發同步。問:能不能觸發別家公司的同步。app/cloud_integration/service/drive_project_verify_service.py(已掃過)掃後新增方法 get_project_folders,由 google_drive_sync_route.py:187 呼叫,順手看一下這個新方法有沒有問題,不必另開卡。or 串起來,其中一個條件永遠成立;例外處理把「查不到資料」與「沒有權限」混成同一個回應;背景排程/系統身分執行的程式碼假設「呼叫者一定是自己人」;防重放/計次的邏輯只在單一進程內生效,多台機器或重啟就破功;註解寫「這裡刻意不檢查」但沒人在上一層真的檢查。已知 CM-1631「加密金鑰寫在版控裡」是既有案、不重報,這一棒查的是程式邏輯而非金鑰本身。本範圍其餘部分從未被正式掃過。
第一步:讀完本卡與母卡,再讀盤點檔 docs/features/FR-119-2609-security-scan-closeout/scan-inventory.md 對應本棒段落。
第二步:驗 scope 檔數,在 BE repo 跑下面指令,對上 13 檔/1786 行 才往下;對不上停下回報。
cd /Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-be && git ls-files -- \
api/cloud_integration/__init__.py \
api/cloud_integration/routes/drive_app_credential_verify_route.py \
api/cloud_integration/routes/google_drive_integration_route.py \
api/cloud_integration/routes/google_drive_sync_route.py \
app/cloud_integration/service/drive_app_credential_verify_service.py \
app/cloud_integration/service/drive_sync_admin_service.py \
app/cloud_integration/service/google_drive_integration_service.py \
app/system_config/service/google_drive_app_config_resolver.py \
domain/cloud_integration/service/google_drive_token_manager.py \
domain/cloud_integration/service/tenant_drive_integration_domain_service.py \
infra/cloud_integration/crypto/fernet_crypto.py \
infra/cloud_integration/google_drive/google_oauth_client.py \
infra/cloud_integration/repository/tenant_drive_integration_repo_impl.py | xargs wc -l | tail -1 # 13 檔、1786 行