CWE

常见的弱点枚举

一个由社区开发的软件&硬件缺陷类型的列表

2021 CWE最重要的硬件的弱点
CWE最危险的弱点
>CWE列表> CWE -个人字典定义(4.10)
ID

cwe - 749:暴露危险的方法或函数

弱点ID: 749
抽象:基地
结构:简单的
视图定制的信息:
+描述
产品提供了一个应用程序编程接口(API)或类似的界面交互与外部演员,但接口包括一个危险的方法或函数,不适当的限制。
+扩展描述

这个弱点可能导致各种各样的合成弱点,根据暴露的行为方法。它可以适用于任何数量的技术和方法,如ActiveX控件,Java函数,ioctl等等。

暴露可能发生在几个不同的方式:

  • 函数/方法从来就没有受到外部演员。
  • 函数/方法只是为了访问一组有限的演员,如互联网访问从一个网站。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 支柱支柱——一个弱点是最抽象类型的弱点和代表一个主题类/基地/变体相关弱点。支柱是不同于一个类别作为支柱技术上仍然是一种弱点,描述了一个错误,而一个类别代表一个共同特征用于组相关的东西。 284年 访问控制不当
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 618年 曝光不安全的ActiveX方法
ParentOf 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 782年 暴露IOCTL访问控制不足
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1228年 API /功能错误
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
架构和设计
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

类:不是特定于语言的患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
完整性
保密
可用性
访问控制
其他

技术的影响:获得特权或假设的身份;阅读应用程序数据;修改应用程序数据;执行未经授权的代码或命令;其他

将重要的功能本质上为攻击者提供了特权暴露水平的功能。这可能导致修改或暴露敏感数据或甚至可能执行任意代码。
+利用的可能性
+示范例子

示例1

在下面的Java示例方法removeDatabase将删除数据库中指定的输入参数的名称。

(坏的代码)
例如语言:Java
公共空间removeDatabase(字符串数据库名){
尝试{
=声明支撑conn.createStatement ();
支撑。执行(“数据库”+数据库名);
}捕捉(SQLException ex) {…}
}

本例中的方法声明公开,因此暴露在应用程序中的任何类。删除一个数据库应该考虑一个关键操作在应用程序和访问这些潜在危险的方法应该被限制。在Java这可以简单地通过声明方法完成私人从而让它只封闭类下面的例子。

(好的代码)
例如语言:Java
私人空间removeDatabase(字符串数据库名){
尝试{
=声明支撑conn.createStatement ();
支撑。执行(“数据库”+数据库名);
}捕捉(SQLException ex) {…}
}

示例2

这些Android和iOS应用程序拦截URL WebView中加载和执行特殊操作如果使用一个特定的URL方案,从而使Javascript WebView中交流与应用程序:

(坏的代码)
例如语言:Java
/ /安卓
@Override
公共布尔shouldOverrideUrlLoading (WebView视图中,字符串url) {
如果(url.substring (0, 14) .equalsIgnoreCase (examplescheme: ")) {
如果(url.substring (25) .equalsIgnoreCase (“getUserInfo”)) {
writeDataToView(视图中,用户数据);
返回错误;
}
其他{
返回true;
}
}
}
(坏的代码)
例如语言:objective - c
/ / iOS
(保龄球)webView:(UIWebView *) exWebView shouldStartLoadWithRequest: (NSURLRequest *) exRequest navigationType: exNavigationType (UIWebViewNavigationType)
{
NSURL * URL = [exRequest URL];
如果([[URL方案]isEqualToString: @ " exampleScheme "])
{
resourceSpecifier NSString * functionString = [URL];
如果([functionString hasPrefix: @ " specialFunction "])
{

/ /使数据可用webview。
UIWebView * webView =[自我writeDataToView: [URL查询]];
}
返回NO;
}
返回YES;
}

打个电话到本机代码可以由在URL传递参数:

(攻击代码)
例如语言:JavaScript
窗口。位置= examplescheme: / /方法? =参数值

因为应用程序不检查源,一个恶意网站加载在这个WebView有相同的访问API是一个可信任的网站。

示例3

这个应用程序使用WebView来显示网站,并创建一个Javascript接口的Java对象允许增强的功能在一个可信赖的网站:

(坏的代码)
例如语言:Java
公开课WebViewGUI延伸活动{
WebView mainWebView;

公共空间onCreate(包savedInstanceState) {
super.onCreate (savedInstanceState);
mainWebView = new WebView(这个);
mainWebView.getSettings () .setJavaScriptEnabled(真正的);
mainWebView。addJavascriptInterface(新JavaScriptInterface (),“userInfoObject”);
mainWebView.loadUrl(“文件:/ / / android_asset / www / index . html”);
setContentView (mainWebView);
}

最后一节课JavaScriptInterface {
JavaScriptInterface () {}

公共字符串getUserInfo () {
返回currentUser.Info ();
}
}
}

Android 4.2之前所有方法,包括继承的,暴露于Javascript使用addJavascriptInterface时()。这意味着一个恶意网站加载在这个WebView可以使用反射来获取任意Java对象的引用。这将允许网站代码来执行任何操作父应用程序授权。

例如,如果应用程序允许发送短信:

(攻击代码)
例如语言:JavaScript
<脚本>
userInfoObject.getClass () .forName (android.telephony.SmsManager) .getMethod (getDefault, null)。attackMessage sendTextMessage (attackNumber空,空,空);
> < /脚本

这种恶意脚本可以使用userInfoObject对象加载SmsManager对象和任意的短信发送给收件人。

示例4

Android 4.2后,只有方法注释@JavascriptInterface可用在JavaScript中,保护使用getClass()在默认情况下,在这个例子中:

(坏的代码)
例如语言:Java
最后一节课JavaScriptInterface {
JavaScriptInterface () {}

@JavascriptInterface
公共字符串getUserInfo () {
返回currentUser.Info ();
}
}

上面这段代码不容易受到攻击,但仍可能公开用户信息恶意WebView中加载页面。甚至恶意iframes加载一个可信的页面内可以访问公开的接口:

(攻击代码)
例如语言:JavaScript
<脚本>
var信息= window.userInfoObject.getUserInfo ();
sendUserInfo(信息);
> < /脚本

这种恶意代码在一个iframe可以访问接口对象和窃取用户的数据。

+观察到的例子
参考 描述
任意的Java代码执行通过暴露的方法
安全工具ActiveX控件允许下载或上传的文件
+潜在的缓解措施

阶段:体系结构和设计

如果你必须公开方法,确保对所有执行输入验证参数,限制访问授权方和预防所有可能的漏洞。

阶段:体系结构和设计;实现

策略:减少攻击表面

识别所有暴露的功能。显式地列出所有功能必须接触到一些用户或用户组。确定哪些功能可能是:

  • 所有用户访问
  • 局限于一个小的特权用户
  • 禁止直接访问

确保遵循这些期望的实现代码。这包括设置适当的访问修饰符,适用(公有、私有、保护,等等)或不标记safe-for-scripting ActiveX控件。

+弱点Ordinalities
Ordinality 描述
(其他弱点的弱点存在独立的)
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 808年 2010年处于25 -弱点
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 975年 SFP二级集群:体系结构
+笔记

研究的差距

低报和超。这个弱点可能出现在任何技术、语言或框架,允许程序员外部各方提供一个功能接口,但它不是大量报道。2007年,CVE开始显示出显著增加暴露的报道方法ActiveX应用程序中的漏洞,以及IOCTL访问操作系统资源。这些缺点已经记录了Java应用程序在各种安全编程的来源,但很少有报道在CVE,这表明有限意识脆弱性研究社区的大部分地区。
+引用
微软(ref - 503)。“发展中安全的ActiveX控件”。2005-04-13。<https://msdn.microsoft.com/en-us/library/ms885903.aspx>。
微软(ref - 510)。“如何阻止一个ActiveX控件在Internet Explorer运行”。<https://support.microsoft.com/en-us/help/240797/how-to-stop-an-activex-control-from-running-in-internet-explorer>。
+内容的历史
+提交
提交日期 提交者 组织
2008-11-24 CWE内容团队 主教法冠
+修改
修改日期 修饰符 组织
2009-01-12 CWE内容团队 主教法冠
更新后的名字
2009-07-27 CWE内容团队 主教法冠
更新的关系
2009-12-28 CWE内容团队 主教法冠
更新Applicable_Platforms Likelihood_of_Exploit
2010-02-16 CWE内容团队 主教法冠
更新Common_Consequences、Demonstrative_Examples Potential_Mitigations、引用Related_Attack_Patterns、人际关系
2010-04-05 CWE内容团队 主教法冠
更新Demonstrative_Examples Related_Attack_Patterns
2010-06-21 CWE内容团队 主教法冠
更新Common_Consequences
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2012-05-11 CWE内容团队 主教法冠
更新的关系
2014-02-18 CWE内容团队 主教法冠
更新Demonstrative_Examples
2014-07-30 CWE内容团队 主教法冠
更新的关系
2015-12-07 CWE内容团队 主教法冠
更新的关系
2017-11-08 CWE内容团队 主教法冠
更新Likelihood_of_Exploit、引用关系
2019-06-20 CWE内容团队 主教法冠
更新的关系
2020-02-24 CWE内容团队 主教法冠
更新的关系
2023-01-31 CWE内容团队 主教法冠
更新描述、Related_Attack_Patterns关系
+以前的条目名称
改变日期 以前的条目名称
2009-01-12 曝光不安全的方法或函数
更多的信息是可用的,请选择一个不同的过滤器。
页面最后更新:2023年1月31日