Skip to content

Security: b40609/LinePort

Security

SECURITY.md

安全說明與檢查紀錄

檢查日期:2026-10-10。目前 v0.8.3,範圍包含多規則、本機 API、LINE/Telegram/Discord 目的、持久化、回覆、媒體模擬、封存完整性及選用 Bot Token 保護。這是程式碼檢查與模擬驗證,不是第三方滲透測試或安全認證。

v0.8.0 全套 148 項測試通過,本次 npm audit 已知依賴漏洞 0。新增三來源到四目的的限流/不明/斷線重啟隔離,以及 Telegram → LINE 圖片下載與部分送達保護。沒有新增依賴或資料格式遷移,本次未啟動真實轉送。先前 v0.7.2 經授權完成三則真實 LINE 文字轉送及已讀對照;報告與限制。該結果不等於新版圖片或所有平台已驗收。

v0.8.3:161 項 Mock 通過,npm audit --omit=dev 已知依賴漏洞 0。路線診斷僅允許非負整數,不增加訊息全文、身分或憑證欄位。未重做真機收送,保留發送不明不自動重送原則。

v0.8.2:154 項 Mock 通過,npm audit 已知依賴漏洞 0。本機別名僅用於顯示,篩選仍依固定 ID;備份包含別名與身分資料,安全診斷排除這些資料。本次未啟動真實轉送、未變更資料格式;指定人員的實機正反例仍待驗收。

本機防護

  • 服務只綁定 127.0.0.1;18765 驗證 Host、Origin、Fetch Metadata 及 API 權杖,提供 nonce CSP 與 no-store。
  • 群名、規則名稱、訊息以 textContent 呈現,不執行聊天中的 HTML;介面未使用 CSP 禁止的 inline style。
  • 一般 API body 上限 4 KiB,規則、模擬與設定還原上限 128 KiB;驗證 JSON、Content-Type、標頭與連線時間。
  • 操作加鎖並在 body 接收後重查狀態;背景運作或狀態不明時,不允許修改規則、Bot 設定或重新登入。
  • 固定 PowerShell 腳本接收環境變數,不把名稱當命令;啟動驗證版本與設定摘要,停止核對此 checkout 的程序。
  • 資料目錄限制目前 Windows 使用者與 SYSTEM,拒絕目錄連結。Bot Token 可選 CurrentUser DPAPI;LINE 登入、E2EE、訊息及私人封存仍未加密。
  • Telegram/Discord Token 不回傳 API,錯誤不輸出 Token、上游 URL 或錯誤原文;HTTPS 拒絕重新導向。
  • 規則、Token、訊息與日誌已加入 Git 忽略規則,勿另行手動加入版本控制。

Telegram → LINE 圖片只從官方固定 HTTPS 主機下載,拒絕重新導向及異常路徑、ID/大小不符、超過 10 MB 或非 JPEG/PNG 檔頭。這是大小及檔頭檢查,不是完整解碼或惡意內容掃描。附件只在記憶體,不持久保存二進位;待送仍保存 Bot file_id 與說明,需保護資料目錄。含 Token 的下載 URL 與上游錯誤不匯出。圖片與說明是兩次發送;第二部分失敗或逾時會保留不明狀態,晚到的圖片回應不能再啟動說明發送;不會回滾已送圖片,也不自動重送。

保存與轉送防護

風險 處理
同批或重啟重送 依配對訊息 ID 去重,相同文字不同 ID 仍分別處理
首次基準保存中斷 時間與全部歷史 ID 一次 checkpoint,fsync;損壞末行拒絕載入
發送結果不明 先保存 sending;缺少有效回應 ID、逾時或錯誤均暫停配對
重啟自動重送不明訊息 未完成 sending/uncertain 使配對持續 blocked,需人工核對
發送後結果寫入失敗 停止相關配對,不繼續發訊、不自動重試;其他配對可繼續
規則回流 禁止循環、自我轉送與重複配對;工具輸出 ID 另保存
LINE 上游逾時誤當空訊息 驗證 compact 回應、HTTP 錯誤與近期/前頁欄位
來源讀取持續失敗 3 到 60 秒退避,只影響相關來源,不密集重試
同一目的過量並行 跨規則依目的依序發送,間隔至少 1.1 秒
Telegram 更新先確認後遺失 先持久保存選定來源文字/媒體資訊與 offset,fsync 後下次輪詢才確認
Telegram 收件寫入失敗 持續暫停讀取,不繼續確認後續更新
轉送受保護內容 排除 Telegram 保護、付費、限時內容;一般 Bot訊息排除,匿名來源僅以 sender_chat 識別
設定寫入中斷 臨時檔寫入與 fsync 後原子更名,保留舊版至成功

LINE 歷史分頁最多 1,000 則,異常/超過上限顯示警示,不保證全數補送。Telegram 選定來源文字累計上限 50,000 則,達上限停止接收,不自動刪除或輪替。規則數、每條端點與總配對數另有限制。

驗證結果

v0.7.0 共 133 項測試通過、0 失敗、0 跳過,npm 已知依賴漏洞掃描 0。包含指定作者、排程、媒體、回覆重啟與跨平台對照、Discord、來源隔離、積壓、磁碟失敗、程序中止及實際 Windows DPAPI 假憑證驗證。沒有真實收送或多日驗證;詳見 本次驗證 與 版本限制。下列舊版結果是歷史紀錄。

回覆只保存父訊息 ID 與已確認送達的目的 ID,不額外保存引用全文。各配對對照不共用;未送或人工判定收到但無 ID 的原訊息不會被補送。Telegram/Discord 的一般訊息退回在同一 API 請求內處理,LINE 引用失敗仍暫停;不因回覆失敗再發一次。

封存建立後重新核對允許清單、大小及 SHA-256;唯讀工具拒絕缺檔、清單外檔案、連結、越界或重複項目。原資料保持不變。雜湊驗證不提供來源身分驗證、加密或完整回復功能;清單及複本同時被替換時無法證明原本內容。

明確 Telegram/Discord 429 且具有效等待期限才自動重試;其他發送不明仍逐筆人工核對。容量預檢在收件確認與發送前執行,單檔 16 MiB、已知紀錄合計 256 MiB、可用空間低於 64 MiB 時停止;私人封存包含訊息及 ID,不含憑證,但不能分享,也不釋放空間。未刪除或輪替去重證據。

DPAPI 選用後保留原明文檔供回復,不代表舊憑證副本已加密。受保護檔損壞時拒絕退回明文或環境變數;再次連結仍維持保護。換 Windows 使用者/電腦需重新連結。DPAPI 不阻擋同使用者惡意程式;LINE credentialStore 與獨立 E2EE 儲存尚未完整遷移。

v0.4.0 加入持久待送佇列、限流重試與設定版本衝突防護,詳見 更新與驗證。只有 Telegram 明確 429 與有效等待秒數允許自動重試;其他發送失敗維持不明狀態保護。配對 JSONL 現在包含篩選後的 LINE/Telegram 待送文字,發送後歷史列仍保留,受 DACL 保護但未加密。

v0.3.1 新增平台操作等待期限,以及 Telegram 收件資料寫入前驗證;66 項模擬測試通過,npm 已知依賴漏洞掃描為 0。本次檢查範圍、修正與限制。

v0.3.0 的 npm test 共 61 項通過,使用模擬 LINE/Telegram 服務及獨立測試目錄,不讀取真實憑證、不發真實訊息。涵蓋多目的隔離、持續暫停不明發送、去重重啟、來源退避、同目的序列化、歷史補讀、Telegram offset 保存、錯誤遮蔽及 API 權限。

18767 獨立模擬頁驗證 LINE 群組/好友、Telegram 聊天室載入、一對三規則、啟停鎖定、編輯回填、暫停/啟用及純文字安全預覽。瀏覽器無 JavaScript 或 CSP 錯誤。

早期檢查另完成:假資料 Windows DACL、npm 與 .NET 依賴漏洞查詢均為 0,以及舊 C# 工具 Release 建置。這些是當時紀錄,非本版新增功能的真實平台驗證;漏洞查詢無發現不代表無漏洞。詳見 驗證紀錄。

仍存在的限制

  1. LINE 帳號風險:使用非官方協定,可能限制功能或停權。來源無 Bot 不表示平台無法識別。
  2. 本機資料保護有限:LINE 登入、E2EE、訊息、私人封存與保留的舊明文 Bot Token 未加密;新 Token 可選 DPAPI。同使用者程式、管理員或備份可能取得,勿分享或同步資料目錄。
  3. 本機信任邊界:權杖阻擋一般跨站網頁,不阻擋同使用者惡意程式。18766 狀態頁無權杖,包含聊天室 ID、名稱與統計,不應對外公開。
  4. 無完整送達保證:發送不明不自動重送,可能漏訊;初始基準、停機、高訊息量與歷史查詢上限也可能漏訊。成功數不是接收者已讀。
  5. 多程序限制:上游登入與本專案 JSONL 未提供跨程序交易鎖。不要同時啟動多份共用資料目錄的登入/轉送,或在背景運作時重新授權。
  6. Telegram 權限與保存期限:Bot 只能讀取平台授權的訊息;其他 getUpdates 或 Webhook 會衝突。平台不會永久保存尚未確認的更新;本機未提供完整聊天封存。
  7. 長期運作:尚未完成多日、強制斷電或朋友端負載測試。容量監控可保守停止,但日誌、offset 與去重集合仍增長;尚無安全壓縮、精準記憶體配額或永久運作保證。
  8. 舊診斷工具:C# 通知工具不屬於目前流程,可能保存本機通知全文,亦須保護。

未對 Git 歷史做完整憑證鑑識,未驗證第三方全部協定、密碼學實作或作業系統攻擊面。

回報問題

v0.5.0 的安全診斷採允許清單,只匯出版本、連線旗標、階段及計數,不匯出憑證、聊天室名稱/ID、訊息全文、路徑或任意錯誤內容。設定備份排除 Bot Token 與登入資料,但包含聊天室名稱、ID、篩選與前綴,仍屬私人資料;不是完整資料目錄備份。

設定還原先驗證格式、配對及版本衝突,再於原資料目錄保存原設定,成功後才取代規則;不更動登入與發送紀錄。人工處理僅能逐筆確認收到或略過,另存同步至磁碟的決策紀錄,不刪改原始佇列,也不重送不明訊息。只能停止後操作;損壞紀錄保持受阻。人工判斷錯誤可能漏訊,請先到目的核對。人工處理後不要降版,舊程式無法套用新的決策紀錄。

公開 Issue 僅提供版本、步驟與去識別化狀態。勿公開 Token、PIN、私人訊息或本機登入目錄。涉及憑證時先停止工具,由平台管理登入裝置或撤銷 Token。

v0.8.1 人員名稱

LINE 自訂名稱及本機別名僅協助辨識,指定人員仍用固定 ID 判斷。別名存於私人規則設定,設定備份會包含;安全診斷不匯出名稱、別名或人員 ID。不要公開私人設定備份或成員畫面。152 項模擬測試通過、依賴掃描已知漏洞 0;不代表所有漏洞已排除。

There aren't any published security advisories