2025年7月14日 星期一

[研究]ASP.NET WebForm 網站 HCL AppScan 10.18.0 報告【低】【遺漏或不安全的 "X-Content-Type-Options" 標頭】弱點,如何處理?

[研究]ASP.NET WebForm 網站 HCL AppScan 10.18.0 報告【低】【遺漏或不安全的 "X-Content-Type-Options" 標頭】弱點,如何處理?

2025-07-14

遺漏或不安全的 "X-Content-Type-Options" 標頭

嚴重性: 低

CVSS 評分: 3.7

CVSS 向量: AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N/E:X/RL:X/RC:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MPR:X/MUI:X/MS:X/MC:X/MI:X/MA:X

URL: 略

實體:略 (Page)

風險: 有可能說服無經驗而易受騙的使用者提供機密性資訊,如:使用者名稱、密碼、信用卡號碼、社會保險號碼等等

有可能收集 Web 應用程式相關的機密性資訊,如:使用者名稱、密碼、機器名稱及/或機密檔案位置

原因: 不安全的 Web 應用程式設計或配置

修正: 配置伺服器利用 "nosniff" 值使用 "X-Content-Type-Options" 標頭

差異:

推論: AppScan 偵測到遺漏 X-Content-Type-Options 回應標頭或具有不安全的值,這會增加路過式下載攻擊的暴露風險

Sec-Fetch-Mode: no-cors

Sec-Fetch-Dest: script

Referer: https://csc.nics.nat.gov.tw/

Accept-Language: en-US

Content-Length: 0

HTTP/1.1 200 OK

Content-Type: application/javascript

Last-Modified: Fri, 01 Nov 2024 02:14:02 GMT

Accept-Ranges: bytes

ETag: "051efb732cdb1:0"

X-Frame-Options: SAMEORIGIN

X-XSS-Protection: 1; mode=block

X-Content-Type-Options: nosniff

Referrer-Policy: no-referrer-when-downgrade

Strict-Transport-Security: max-age=31536000

...

原始

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

ChatGPT 說:

針對 HCL AppScan 10.18.0 所報告的 ASP.NET WebForm 網站弱點:【遺漏或不安全的 "X-Content-Type-Options" 標頭】,以下是詳細說明與解決方法。

🔍 弱點說明

標頭缺失或設定不當:

X-Content-Type-Options 是一個 HTTP Response Header,用來防止瀏覽器 MIME 類型猜測(MIME sniffing),避免如 JavaScript 檔案被當成 HTML 解析導致跨站攻擊(Cross-Site Scripting, XSS)等風險。

正確的設定:

X-Content-Type-Options: nosniff

這個設定會告訴瀏覽器「不要猜測回應的內容型別,強制依據 Content-Type 執行」。

✅ 解決方法(以 IIS + ASP.NET WebForm 為例)

方法一:在 IIS 設定 Web.config

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="X-Content-Type-Options" value="nosniff" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

📌 這是推薦做法,所有靜態或 ASP.NET 動態頁面都會加入該標頭。

方法二:在 ASP.NET 程式碼中加入(不推薦,除非你不能動 Web.config)

可以在 Global.asax 的 Application_BeginRequest 事件中加上:


protected void Application_BeginRequest(object sender, EventArgs e)
{
    HttpContext.Current.Response.Headers["X-Content-Type-Options"] = "nosniff";
}

📌 注意:這種做法無法保證靜態檔(如 .js、.css)也有標頭,仍建議用 Web.config 或 IIS GUI 方式。

方法三:透過 IIS 管理工具手動加入(適用於靜態內容)

  1. 開啟「IIS 管理員」
  2. 選取網站節點 → 雙擊「HTTP Response Headers」
  3. 點選右側「新增...」
  4. 名稱輸入:X-Content-Type-Options
  5. 值輸入:nosniff
  6. 確定 → 套用


📌 注意事項

  • 標頭值 只能是 nosniff,其他值會被視為不安全。
  • 請確認是否 透過 CDN 或反向代理(如 NGINX、Cloudflare),若有可能要在該層也設定此標頭。
  • 若已設定但掃描仍報告缺失,請:
    • 確認靜態資源(.js、.css)也有送出該標頭
    • 用瀏覽器 DevTools(F12)或 curl 檢查 Response Header 是否正確送出

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

局部原始圖

但以上面的圖片,是類似下面的畫面

這是 Imperva WAF (Web Application Firewall,Web 應用程式防火牆) 認為 AppScan 想存取的網頁有安全疑慮,攔截下來了,這是WAF提供的畫面,不是原來受測系統網站提供的,是 AppScan 誤判了。

(完)

沒有留言:

張貼留言