问题标签 [taint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
391 浏览

perl - 如何检查当前的 Perl 语句是否包含受污染的数据?

我编写了自己的小 Perl 调试器,它打印每个执行的行、当前文件名和相应的行号。如何检测当前的 Perl 语句是否包含受污染的数据?

我知道模块 Scalar::Util 中有一个“被污染”的函数。但是它只接受变量名作为参数,而不是 Perl 语句。

我已将 Taint 附加到一个词法变量以跟踪它。如果我能够看到一个语句是否被污染,我只能打印那些包含我被污染的变量的行。这是我的自定义污点脚本:

污点.pl

调试器.pl

0 投票
3 回答
899 浏览

mysql - 要在 Perl 中引用的转义字符串

我正在编写一个快速的 Perl 脚本,它接受用户输入并将其用作 MySQL 正则表达式。我想确保我可以在没有任何Bobby 桌子废话的情况下通过它。特别是,我希望允许使用各种特殊字符,同时拒绝任何可能超出引用本身的内容。

代码是这样的:

特别是,我需要像\(...\)and这样的结构\.来保留——我不能将它们更改为\\\(...\\\)and \\.。感觉这很简单,它应该已经存在了——我不想在这里重新发明轮子。

该脚本仅通过 SSH 接收来自受信任用户(包括我自己在内的三个用户之一)的输入,因此“原则上”我可以不加检查地传递字符串。但是,如果它发现了诚实的错误,而不是无意中将部分命令泄露给 SQL 并导致奇怪的结果,我会感觉好多了。(这本身不是安全问题有权访问脚本的用户已经可以直接运行 mySQL。)

编辑:建议的副本仅与我的问题略有相关,当然不是它的副本。我没有使用 DBI,我担心的不是注入攻击——担心的是用户不会无意中导致数据库副作用,而不是敌对方在其上运行恶意代码。(为了使用脚本,您需要已经可以直接访问 MySQL,在这种情况下,您可以对数据库进行任意更改。)

0 投票
1 回答
479 浏览

security - 在污点传播程序中识别污点源

在污点分析中,污点源是可能产生不可信或外部输入的程序位置或语句。

我的目标:使用动态分析(最好)识别程序的所有外部用户输入,例如 cmdline-input 、文件读取、环境和网络变量并传播污点。

我阅读了本教程-http ://shell-storm.org/blog/Taint-analysis-and-pattern-matching-with-Pin/,它使用英特尔 PIN 拦截读取系统调用并传播污点。我想扩展它以包括上面提到的各种外部输入。(首先,对于 C-scanf,gets,fopen 等)

是否有任何动态分析工具可以帮助我识别通用外部输入?任何其他具有特定目标的方法也值得赞赏。谢谢

0 投票
2 回答
205 浏览

perl - Perl 6 有污点模式吗?

Perl 5 使用 -T 开关支持污点模式。该脚本将在内部将任何从脚本外部源检索到的值标记为受污染的,而这些值应该是未受污染的。Perl 6 是否支持这样的选项?

0 投票
1 回答
937 浏览

javascript - 使用 WALA 的 Javascript 污点分析

我正在开发一个 Firefox OS 应用程序分析工具,它根据代码分析将给定的应用程序分类为恶意或非恶意。我最初的工作是对 JavaScript 文件进行静态污点分析。是否可以使用 WALA 来实现。如果是,那么如何?

0 投票
1 回答
739 浏览

java - 如何跟踪方法参数?

我一直在尝试为 Java 编程语言找到“跟踪方法的参数”的确切术语,我通常会找到“污点分析”,但仍然不确定我是否走在正确的道路上。

我想要的是,跟踪方法的参数并查看方法的哪一部分(在范围内)对参数产生影响。例如,如果一个参数被分配给另一个变量,我也想跟踪分配的变量。通过提及“部分”,它可以是控制流图的代码行、语句或分支。

我还检查了工具并遇到了Checker FrameworkFindbugs,但是它们似乎不能完全满足我想要的需求,或者我无法让它们满足我的需求。

请告诉我“污点分析”是否是我正在寻找的正确术语。此外,欢迎任何其他工具建议。

下面有一个来自Checker Framework Live Demo的编辑代码。我期望的是,processRequest()当变量String input被污染时,我期望在方法中的所有行都收到警告或错误executeQuery()。因为一个受污染的变量被传递给它的参数。

0 投票
0 回答
199 浏览

html - 当所有图像都来自我的网站时,HTML Canvas 受到污染?

我一直在研究画布,我知道如果画布被污染,安全协议会拒绝输出/保存画布。

我似乎无法解释的是,究竟是什么触发了它在我身上受到污染。

我有一个带有背景和一些可拖动内容的 div,并希望将用户创建的布局另存为 .png 在我的服务器上。但是,由于受污染的画布安全性,它一直阻止它。div(和页面)中的所有图像都位于我的网站上。

我是否需要授予某种标题权限才能解决此问题(不允许其他人在他们的画布上使用我的图像跨源等)?

0 投票
1 回答
653 浏览

java - IDFS下什么是分布式函数,为什么指针分析是非分布式的?

我目前正在用 Java 做一个过程间分析项目,我正在研究使用 IFDS 求解器来计算程序的控制流图。我发现很难遵循描述 IFDS 框架和图形可达性所涉及的数学。我在几个地方读到它不可能使用这个求解器来计算程序的点到集,因为“指针分析被认为是一个非分布问题”。[1] 其他消息来源说,这通常专门针对“强更新”,据我所知,这是现场写入语句。

我想我基本上可以遵循求解器如何计算边缘并计算出数据流事实。但我不太明白这是什么意思:f(A ∪ B) = f(A) ∪ f(B) 实际上是指分配函数的定义,因此说指向分析意味着什么处理非分配函数。

链接源 [1] 给出了一个特定于字段写入语句的示例:

它声称,为了推理对 bf 的分配,还必须考虑基 b 的所有别名。我可以按照这个。但我不明白的是,这个动作的特性是什么,使它无法分配。

[2] 中的一个类似(我认为)示例:

在语句之前有指向边 y-->obj1 和 obj1.n-->obj2 (其中 obj1 和 2 是堆对象)。他们声称

如果我们独立考虑每个输入边,则不可能正确推断出边 x-->obj2 应该在语句之后生成。该语句的流函数是点到图整体的函数,不能分解为每条边的独立函数,然后合并得到正确的结果。

我想我几乎明白,至少第一个例子在说什么,但我没有理解分配函数的概念,这阻碍了我了解全貌。任何人都可以在不使用我难以理解的集合论的情况下,在指针分析的实际基础上解释什么是分布函数或非分布函数吗?

[1] http://karimali.ca/resources/pubs/conf/ecoop/SpaethNAB16.pdf

[2] http://dl.acm.org/citation.cfm?doid=2487568.2487569(付费专区,抱歉)

0 投票
1 回答
283 浏览

java - 如何删除 Findbugs 的“污点”“查找安全漏洞”

我正在使用 Findbugs 的“查找安全漏洞”插件:https ://find-sec-bugs.github.io/

许多检测器使用“污染分析”来发出警告。

是否有关于如何从值中删除“污点”的文档?

我在他们的网站上找不到任何关于此的文档,而且我一直在寻找他们的源代码并且无法弄清楚:

该工具正在从以下代码中识别可能的注入错误:

我已经修复了这个错误,令我满意:

...但该工具仍在标记可能的错误。我相信这是因为它没有将“ com.google.common.net.UrlEscapers.urlPathSegmentEscaper()”识别为在这里删除 Taint。

否则我该如何说服它?如果我不能,我可以在这里使用哪些工具可以识别的消毒技术?

0 投票
1 回答
338 浏览

perl - 我不明白 Perl Taint 模式的错误信息

我有一些旧的 Perl 代码,我被告知容易受到跨站点脚本攻击或 SQL 注入攻击。#!/usr/local/bin/perl我想我会通过将 shebang 从更改为来打开污点模式#!/usr/local/bin/perl -T,现在我收到以下错误消息:

代码如下所示:

Common::Config 具有以下所有权和权限:

我尝试将所有权更改为,apache但仍然收到污染错误消息。

更新:

我试图$Bin像这样清除我的变量:

但我仍然收到有关的污染错误use Common::Config;