2025年10月13日 星期一

[研究]ASP.NET WebForm網站用AppScan掃描發現【SameSite 屬性不安全、不適當或遺漏的 Cookie】

[研究]ASP.NET WebForm網站用AppScan掃描發現【SameSite 屬性不安全、不適當或遺漏的 Cookie】

2025-10-13

ASP.NET WebForm 網站用 AppScan 掃描結果如下,誤判?

SameSite 屬性不安全、不適當或遺漏的 Cookie

嚴重性: 中

CVSS 評分: 4.7

實體: _fbp (Cookie)

風險: 將 Cookie 限制為第一方或相同網站環境定義以預防 Cookie 資訊洩漏。如果沒有設置額外的保護措施(如反 CSRF 記號),攻擊者可以延伸為偽造跨網站要求(CSRF) 攻擊。

原因: SameSite 屬性不適當、不安全或遺漏的機密 Cookie

修正: 檢閱將 SameSite Cookie 屬性配置為建議值的可能解決方案

推論: 回應包含 SameSite 屬性不安全、不適當或遺漏的機密 Cookie,這可能會導致 Cookie 資訊洩漏。如果沒有設置額外的保護措施,可能會衍生出偽造跨網站要求(CSRF) 攻擊。

********************************************************************************

ChatGPT

從你提供的 AppScan 掃描結果來看,重點是 _fbp Cookie 被標示為 SameSite 屬性不安全、不適當或遺漏。我幫你分析一下是否真的是漏洞,或者可能是誤判。

1️⃣ SameSite 屬性簡單回顧

SameSite 屬性用來控制 Cookie 是否可以在跨站請求中被送出:

SameSite 值說明適用場景
Strict嚴格模式,Cookie 不會隨跨站請求送出高敏感 Cookie
Lax在部分跨站請求(如 GET 連結跳轉)時送出常用於一般登入 Cookie
NoneCookie 可跨站送出,但必須搭配 Secure第三方追蹤或跨站功能 Cookie
未設置瀏覽器行為視同 Lax(Chrome 80+ 後)可能導致跨站攻擊或 CSRF

2️⃣ _fbp Cookie 的特性

  • _fbp 通常是 Facebook Pixel 用於追蹤網站使用者的 Cookie。
  • 它不是你的機密 Session Cookie,而是第三方追蹤用途。
  • 根據用途,這類 Cookie 不涉及登入或敏感資訊。

3️⃣ AppScan 報告分析

AppScan 說:SameSite 屬性不適當、不安全或遺漏的機密 Cookie

關鍵點:AppScan 將 _fbp 當作「機密 Cookie」來評估,但 _fbp 本身不是登入 Session,也不是敏感資料。

所以這裡可能是 誤判,原因如下:

  • _fbp 是第三方追蹤 Cookie,非應用機密資料。
  • 即使沒有 SameSite,也不會直接導致 CSRF 或帳號盜用。
  • AppScan 掃描時可能無法判斷 Cookie 的用途,就統一標示風險。

4️⃣ 如果要防範 CSRF

真正需要 SameSite 保護的是 登入 Session Cookie 或其他敏感 Cookie,例如:

Set-Cookie: ASP.NET_SessionId=abc123; SameSite=Lax; Secure; HttpOnly

  • HttpOnly 避免 JS 讀取
  • Secure 強制 HTTPS
  • SameSite=Lax/Strict 防止 CSRF

對 _fbp 這種第三方 Cookie,其實可以忽略 SameSite 警告。

✅ 結論

  • 對於 _fbp Cookie,AppScan 可能誤判,這不是安全漏洞。
  • 對於你的應用重要 Cookie(Session, Auth Token),建議檢查並設置 SameSite 屬性。
  • 可視情況忽略第三方 Cookie 的 SameSite 警告,但應確認你的網站核心 Session Cookie 都安全。

********************************************************************************

以整個專案 Source Code 搜尋不到 _fbp 字串,當作 AppScan 誤判證據可以嗎 ?

ChatGPT

完全可以把這當作 誤判的有力證據,但我們要仔細拆解原因和適用情境:

1️⃣ _fbp 來源分析

  • _fbp 是 Facebook Pixel / Facebook 廣告追蹤的 Cookie。
  • 這種 Cookie 不會由你 ASP.NET WebForm 的後端程式直接產生,而是透過 前端 JavaScript SDK 或嵌入的 <script> 標籤 由 Facebook 生成。
  • 因此,專案後端程式碼搜尋不到 _fbp 是合理的。

2️⃣ AppScan 誤判的原因

AppScan 在掃描 HTTP 回應時,只看到 Set-Cookie 標頭(或 Cookie 送出),並 無法判斷 Cookie 是你的應用生成的還是第三方生成的。

  • 如果它看到 Cookie 沒有 SameSite 屬性,就 統一標示為潛在風險。
  • 對 _fbp 這種第三方追蹤 Cookie,這屬於 誤報,而不是實際安全漏洞。

3️⃣ 作為誤判證據的說法

你可以這樣說:

“AppScan 報告 SameSite 屬性不安全的 Cookie _fbp,經專案全域程式碼搜尋後找不到該字串,確認此 Cookie 是由第三方(Facebook Pixel)生成,非我們專案程式產生,因此此項為 誤判,不影響本專案核心安全性。”

********************************************************************************

AppScan 報告【回應包含 SameSite 屬性不安全、不適當或遺漏的機密 Cookie,這可能會導致 Cookie 資訊洩漏。如果沒有設置額外的保護措施,可能會衍生出偽造跨網站要求(CSRF) 攻擊。】,原始回應如下,怎麼推論的?

原始回應

  • HTTP/1.1 200 OK
  • Cache-Control: no-cache, no-store
  • Pragma: no-cache
  • Content-Type: text/html; charset=utf-8
  • Expires: -1
  • X-Frame-Options: SAMEORIGIN
  • X-XSS-Protection: 1; mode=block
  • X-Content-Type-Options: nosniff
  • Referrer-Policy: no-referrer
  • Strict-Transport-Security: max-age=31536000
  • <!DOCTYPE html>
  • <html xmlns="http://www.w3.org/1999/xhtml" lang="zh-Hant">
  • <head><title>

ChatGPT:

你提供的訊息主要說明 AppScan 或類似工具檢測到「SameSite 屬性不安全、不適當或遺漏的機密 Cookie」,並提示可能造成 CSRF 風險。根據你貼出的原始 HTTP 回應,我注意到幾點:

1.HTTP Header 沒有 Set-Cookie 範例

  • 你貼的回應裡只有一般安全相關 Header(X-Frame-Options、X-XSS-Protection、Strict-Transport-Security 等),沒有任何 Set-Cookie 項。
  • → 如果 AppScan 偵測到 _fbp 或其他 cookie,但在你整個專案 source code 搜尋不到這個字串,很可能是 第三方 JavaScript(例如 Facebook Pixel 或 Google Analytics)在瀏覽器端設置的 cookie,而不是你的 ASP.NET WebForm 自己生成的。

2.SameSite 屬性缺失與 CSRF

  • SameSite 屬性主要用於控制瀏覽器在跨站請求中是否傳送 cookie:
  • SameSite=Lax:大部分安全跨站行為允許,例如 GET 表單提交。
  • SameSite=Strict:完全阻止跨站 cookie。
  • 如果沒有設置 SameSite,部分瀏覽器可能仍會傳送 cookie,這可能被 CSRF 利用。

→ 這並不表示你的網站直接有漏洞,但第三方 cookie 的缺失會被掃描工具列為「潛在風險」。

3.誤判可能性

  • 若你專案中完全沒有設置 _fbp 或其他第三方 cookie 的程式碼,且 HTTP Response 也沒有 Set-Cookie,那麼 AppScan 很可能 把第三方 cookie 的警告當成你的程式問題。
  • 這在實務上屬於 誤判,前提是你確定自己沒有生成該 cookie,也沒有敏感資料存放在它上面。

建議處理方式:

  • 在 AppScan 報告中註明「檢測到的 cookie 來自第三方服務,非本網站程式生成,屬誤判」。
  • 如果想進一步降低 CSRF 風險:
    • 確保你自己生成的敏感 cookie(登入憑證、SessionID)有 HttpOnly; Secure; SameSite=Lax/Strict。
    • 對重要表單使用 Anti-CSRF Token。

💡 總結:

  • 沒有在你的程式碼或 HTTP Header 找到問題 cookie → 可視為 AppScan 誤判。
  • 若要安全,可檢查第三方服務的 cookie 設定,但通常不直接影響你的網站核心安全。

(完)


沒有留言:

張貼留言