顯示具有 弱點 標籤的文章。 顯示所有文章
顯示具有 弱點 標籤的文章。 顯示所有文章

2025年7月18日 星期五

[研究][研究]黑箱 Web弱掃報告【不安全的第三方鏈結 (target="_blank")】弱點(二)

[研究][研究]黑箱 Web弱掃報告【不安全的第三方鏈結 (target="_blank")】弱點(二)

2025-07-18

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

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

續這篇

[研究]黑箱 Web弱點掃描報告【不安全的第三方鏈結 (target="_blank")】弱點(一)
https://shaurong.blogspot.com/2025/06/web-targetblank.html

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

它的檢測依據蠻明確的,誤判機率也低,修補方式也明確,危險等級有到【中】?

Default.aspx 修補前

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" 
    Inherits="WebApplication1.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <a href="https://example.com" target="_blank">外部連結</a>
    </form>
</body>
</html>

Default.aspx 修補後

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" 
    Inherits="WebApplication1.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <a href="https://example.com" target="_blank" rel="noopener noreferrer">外部連結</a>
    </form>
</body>
</html>

Default.aspx.cs

using System;

namespace WebApplication1
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

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

HCL AppScan 10.8.1 掃描結果 (修補前)

HCL AppScan 10.8.1 掃描結果 (修補後)

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

OWASP ZAP 2.16.1掃描結果 (修補前)

OWASP ZAP 2.16.1掃描結果 (修補後)

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

Acunetix Web Vulnerability Scanner (AWVS) 25.5.25 掃描結果 (修補前)




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

OWASP ZAP 2.16.1沒有列【【不安全的第三方鏈結 (target="_blank")】】,認為【第三方鏈結 (target="_blank")】別說不算「中」,連「低」和「INFO」都排不上。

Acunetix Web Vulnerability Scanner (AWVS)也沒有列【不安全的第三方鏈結 (target="_blank")】。

(完)

相關




2025年7月17日 星期四

[研究]Content-Security-Policy (CSP)弱點防護設定添加後會導致那些功能或設定無法運作?

[研究]Content-Security-Policy (CSP)弱點防護設定添加後會導致那些功能或設定無法運作?

2025-07-17

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 20

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

ASP.NET WebForm 網站,請說明 Global.asax.cs 中添加下面後

Response.Headers.Add("Content-Security-Policy",
    "default-src 'self'; " +
    "script-src 'self'; " +
    "style-src 'self'; " +
    "font-src 'self'; " +
    "img-src 'self'; " +
    "frame-src 'self'; " +
    "object-src 'none'; " +
    "base-uri 'self'; " +
    "form-action 'self';"
);

會導致那些功能或設定無法運作

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

ChatGPT 說:

這是一個相對嚴格的 CSP 設定,以下是各設定的說明以及可能導致的功能失效或影響的場景:

📌 default-src 'self';

說明: 預設所有資源只允許來自本網站來源(同網域)。

影響:

  • 所有未明確指定來源類別的資源(如 media、connect)都會被限制只能來自 self。
  • 如使用外部 CDN 資源(圖片、API、影片)會被阻擋。

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

📌 script-src 'self';

說明: 僅允許來自自己網站的 JavaScript 腳本。

影響:

  • ❌ 無法載入外部 JS,如 Google Analytics (www.googletagmanager.com)、Facebook SDK、CDN JavaScript(如 jQuery CDN)。
  • ❌ 不允許 inline script(如 <script>alert('Hi');</script>)或 eval()。
    • 若未加上 'unsafe-inline' 或 'unsafe-eval',會導致:
    • ClientScript.RegisterStartupScript()、ScriptManager.RegisterStartupScript() 插入的內嵌 JS 被阻擋。
    • 某些 AJAX Callback 或驗證 JS 無法執行。
  • ✅ 可正常執行來自本網站的 .js 檔案(只要是從相同網域載入的)。

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

📌 style-src 'self';

說明: 僅允許來自本網站的 CSS 樣式表。

影響:

  • ❌ 禁止外部樣式表(如 https://fonts.googleapis.com)。
  • ❌ 不允許 <style> 標籤中內嵌的 CSS(除非加上 'unsafe-inline')。
    • 如 <div style="color:red;"> 可能失效。
    • 若動態產生樣式或使用 ASP.NET 內嵌樣式,樣式可能被瀏覽器拒絕執行。

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

📌 font-src 'self';

說明: 僅允許來自本網站的字型檔。

影響:

❌ Google Fonts(fonts.gstatic.com)等外部字型載入會被阻擋。

✅ 自己網站的 .woff、.ttf 等可使用。

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

📌 img-src 'self';

說明: 只允許自己網站的圖片資源。

影響:

❌ 外部圖片(如 <img src="https://example.com/logo.png">)無法顯示。

❌ 無法嵌入 base64 的圖片(若未加 'data:')。

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

📌 frame-src 'self';

說明: 僅允許自己網域的 <iframe> 來源。

影響:

❌ 不能嵌入 YouTube、Google Maps、Facebook 等 iframe。

✅ 若自己網站內嵌自己網站的頁面,仍可用。

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

📌 object-src 'none';

說明: 禁止 <object>、<embed>、<applet> 等用於 Flash、Silverlight、Java Applet 的元素。

影響:

✅ 增加安全性(防止老舊技術漏洞)。

❌ 若網站仍使用 Flash 等,會無法載入(大多數現代網站不受影響)。

📌 base-uri 'self';

說明: 僅允許 <base href="..."> 設定在同網域。

影響:

若你使用 <base href="https://cdn.example.com/">(來自外部)將會被阻擋。

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

📌 form-action 'self';

說明: 表單的 action 屬性僅允許送出到同網域。

影響:

❌ 表單無法提交到外部網站(例如第三方金流、驗證服務、SSO 服務)。

✅ 增加防止 CSRF 的安全性。

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

⚠️ 總結:會「無法運作」或「功能異常」的典型情況

功能影響說明
Google 字型被阻擋 (fonts.googleapis.com、fonts.gstatic.com)
外部 JavaScript (如 jQuery CDN)被阻擋 (code.jquery.com)
內嵌 JS無效,瀏覽器會擋下
內嵌 CSS無效,除非允許 'unsafe-inline'
第三方 iframe如 YouTube、Google Maps、Facebook 插件無法載入
表單送出到其他網站被阻擋,導致無法登入、支付等
圖片載入自其他網站無法顯示
base64 圖片 (data:image/png;base64...)被阻擋(需加上 img-src 'self' data:)

✅ 建議做法(視情況調整)

你可以依實際需求放寬部分限制,例如:

Response.Headers.Add("Content-Security-Policy",
    "default-src 'self'; " +
    "script-src 'self' 'unsafe-inline' https://www.google.com https://www.gstatic.com; " +
    "style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; " +
    "font-src 'self' https://fonts.gstatic.com; " +
    "img-src 'self' data:; " +
    "frame-src 'self' https://www.youtube.com; " +
    "object-src 'none'; " +
    "base-uri 'self'; " +
    "form-action 'self';"
);


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

設定了 unsafe-inline 或排除某些網址後,HCL AppScan 會否會報告有 CSP 相關弱點

ChatGPT 說:

是的,HCL AppScan 在掃描時若偵測到 Content-Security-Policy (CSP) 中設定了:

  • unsafe-inline
  • unsafe-eval
  • 或允許特定外部資源(如來自 CDN 的 JS、CSS)

通常會報告為「中風險」或「低風險」的 CSP 設定不安全弱點。

也就是你沒設定 CSP 防護,和放寬了 CSP 防護,HCL AppScan 都會報告弱點;

而你設定了嚴格 CSP,很多常用功能和設定可能就異常不能用。

(完)

相關

2025年6月25日 星期三

[研究]黑箱 Web弱點掃描報告【不安全的第三方鏈結 (target="_blank")】弱點(一)

[研究]黑箱 Web弱點掃描報告【不安全的第三方鏈結 (target="_blank")】弱點(一)

2025-06-25

HCL AppScan 10.8報告

不安全的第三方鏈結 (target="_blank")

嚴重性: 中

CVSS 評分: 5.3

CVSS 向量: AV:N/AC:L/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

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

原因: 以 target=_blank 鏈結所鏈結到的頁面可以透過 window.opener 物件部分存取鏈結頁面視窗物件

修正: 將屬性 rel = "noopener noreferrer"  新增至 target="_blank" 的每一個鏈結元素

請問 rel = "noopener noreferrer" 的意義 ? 為何可以解決 "不安全的第三方鏈結 (target="_blank")" 問題 ?

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

ChatGPT 說:

一、rel="noopener noreferrer" 的意義

1.noopener:
  • 禁止新開的分頁透過 window.opener 存取開啟它的原始頁面(即父頁面)的 window 物件。
  • 防止 Reverse Tabnabbing 攻擊。
2.noreferrer

  • 禁止瀏覽器在點擊鏈結時,將 HTTP Referer 標頭傳送給目標網站,避免洩漏來源頁面的網址資訊。
  • 同時也隱含 noopener 效果(現代瀏覽器中)。

二、target="_blank" 的安全問題來源

  • target="_blank" 會在新分頁或新視窗打開鏈結。
  • 如果沒有搭配 rel="noopener":
    • 新開的頁面可以透過 window.opener 取得原本頁面的控制權。
    • 惡意站點可能透過 window.opener.location = 'http://phishing-site.com' 導致原頁面跳轉到釣魚或惡意網站。
    • 攻擊方式稱為 Reverse Tabnabbing。

三、為何 rel="noopener noreferrer" 可以解決?

  • noopener 讓新頁面無法透過 window.opener 操控原頁面,避免原頁面被重定向或注入惡意腳本。
  • noreferrer 進一步防止來源資訊洩漏,增加隱私性。

四、實際範例

不安全寫法:

<a href="https://example.com" target="_blank">外部連結</a>

安全寫法:

<a href="https://example.com" target="_blank" rel="noopener noreferrer">外部連結</a>

五、補充說明

  • 現代瀏覽器多已預設部分阻擋 window.opener,但為相容舊版瀏覽器或確保萬無一失,仍建議主動加入 rel="noopener noreferrer"。
  • 若只是連結到本站內部頁面,此問題較低,但對外部(不受信任)鏈結,強烈建議加上。

六、結論

rel="noopener noreferrer" 是解決 target="_blank" 安全隱患的標準做法,能有效防範:

  • ✔ 釣魚攻擊
  • ✔ 反向分頁劫持(Reverse Tabnabbing)
  • ✔ 敏感資訊洩漏(Referer)

實務建議:

只要有 target="_blank",一律搭配 rel="noopener noreferrer",尤其是鏈結到外部網站。


(完)

2024年10月26日 星期六

[研究]源碼、弱點掃描可以掃出 NIST NVD CVE database 報告的 套件 or 元件 or 程式庫 弱點嗎?

[研究]源碼、弱點掃描可以掃出 NIST NVD CVE database 報告的 套件 or 元件 or 程式庫 弱點嗎?

2024-10-26

Does HP Fortify refer NIST NVD CVE database?
https://stackoverflow.com/questions/51378421/does-hp-fortify-refer-nist-nvd-cve-database

Answer

No, Fortify is a static code scanner which scans your code and produces a report which documents potential security vulnerabilities.

If you want to scan code for libraries that may have CVEs then try the OWASP Dependency Checker.

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

Fortify SCA 和 AWVS, WebInspect, AppScan, Nessus Pro 會參考 NIST  NVD CVE Database嗎 ?

Copilot

是的,這些工具(Fortify SCA、AWVS、WebInspect、AppScan 和 Nessus Pro)都會參考 NIST 的 NVD CVE Database。這些工具利用 CVE(常見漏洞暴露)識別符號來識別和分析軟體中的漏洞,並提供相應的修復建議。

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

所以只要用白箱、黑箱工具掃描就好,不用自己定期去查專案使用的 3rd Party 元件是否有弱點?

Copilot

白箱和黑箱工具的確能幫助你自動化地檢測弱點,但定期手動檢查專案使用的第三方元件還是很重要的。自動化工具可能無法涵蓋所有潛在的問題,特別是對於那些更新速度快的第三方元件。

NVD (National Vulnerability Database) 和 CVE (Common Vulnerabilities and Exposures) 資料庫定期更新,手動檢查可以確保你不會錯過最新的漏洞信息。此外,手動審查還能幫助你深入了解專案依賴的第三方元件的安全狀況,並做出更精確的風險評估。

所以,兩者結合使用會是最好的策略:自動化工具用於日常掃描,手動檢查補充自動化工具的不足,確保專案的全面安全。

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

請推薦合適掃描專案使用的套件、元件、程式庫的弱點的軟體 ?

ChatGPT 說:

推薦一些適合掃描專案中使用的套件、元件、和程式庫的安全漏洞的軟體,這些工具可以根據不同的需求和專案特性進行選擇。以下是幾個常用且功能齊全的選擇:

  • Whitesource (Whitesource Bolt):

專注於開源軟體的漏洞掃描,能夠自動識別專案中的開源元件,並提供來自NVD的漏洞信息。

支援多種編程語言,提供開源許可風險管理功能。

適用範圍:大型項目或需要開源合規性的公司,尤其適合DevOps流程中的持續整合(CI/CD)流程。

  • Snyk:

Snyk專注於開源套件和Docker容器的漏洞掃描,支援多種語言(如JavaScript、Python、Java等)。

提供實時漏洞檢測和修復建議,能夠與GitHub、GitLab、Jenkins等工具無縫整合。

適用範圍:開發過程中使用大量開源元件或容器的專案,尤其適合在開發階段及早發現和修復漏洞。

  • Dependabot (GitHub原生工具):

GitHub的Dependabot工具可以自動檢查專案中的依賴項,並參考NVD的CVE資訊提出更新建議。

直接在GitHub中整合,不需要額外安裝。

適用範圍:使用GitHub進行版本管理的小型或中型項目。

  • OWASP Dependency-Check:

一款開源的軟體組件漏洞掃描工具,主要針對Java和.NET的依賴項進行掃描,但也支援Node.js、Python等多種語言。

使用NVD的CVE數據庫來查找漏洞,並可生成詳細的報告。

適用範圍:需要一個本地開源方案來掃描項目中的依賴元件。

  • Jfrog Xray:

Jfrog Xray是一款商業的安全掃描工具,支援多種語言和容器,能檢查元件、庫和Docker映像檔中的漏洞。

支援CI/CD整合和高效漏洞管理。

適用範圍:需要高效管理元件庫和容器漏洞的企業級用戶。

  • Sonatype Nexus IQ:

專門針對開源元件的安全性和合規性管理,能掃描各種語言中的開源依賴和庫。

Nexus IQ提供詳細的漏洞報告和風險管理,並能與CI/CD工具鏈整合。

適用範圍:大型企業和需要合規性報告的項目。

  • Fortify Software Composition Analysis (Fortify SCA):

提供開源和商業元件的漏洞掃描,能生成符合NVD和CVE標準的詳細報告。

適用範圍:企業級專案或需要多層次安全管理的專案。

以上工具能有效幫助開發和安全團隊在使用的套件或程式庫中識別已知的安全漏洞,從而提升專案的整體安全性。

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

其實還有 OWASP Dependency-Track。

(完)