问题标签 [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.
perl - 如何检查当前的 Perl 语句是否包含受污染的数据?
我编写了自己的小 Perl 调试器,它打印每个执行的行、当前文件名和相应的行号。如何检测当前的 Perl 语句是否包含受污染的数据?
我知道模块 Scalar::Util 中有一个“被污染”的函数。但是它只接受变量名作为参数,而不是 Perl 语句。
我已将 Taint 附加到一个词法变量以跟踪它。如果我能够看到一个语句是否被污染,我只能打印那些包含我被污染的变量的行。这是我的自定义污点脚本:
污点.pl
调试器.pl
mysql - 要在 Perl 中引用的转义字符串
我正在编写一个快速的 Perl 脚本,它接受用户输入并将其用作 MySQL 正则表达式。我想确保我可以在没有任何Bobby 桌子废话的情况下通过它。特别是,我希望允许使用各种特殊字符,同时拒绝任何可能超出引用本身的内容。
代码是这样的:
特别是,我需要像\(...\)
and这样的结构\.
来保留——我不能将它们更改为\\\(...\\\)
and \\.
。感觉这很简单,它应该已经存在了——我不想在这里重新发明轮子。
该脚本仅通过 SSH 接收来自受信任用户(包括我自己在内的三个用户之一)的输入,因此“原则上”我可以不加检查地传递字符串。但是,如果它发现了诚实的错误,而不是无意中将部分命令泄露给 SQL 并导致奇怪的结果,我会感觉好多了。(这本身不是安全问题:有权访问脚本的用户已经可以直接运行 mySQL。)
编辑:建议的副本仅与我的问题略有相关,当然不是它的副本。我没有使用 DBI,我担心的不是注入攻击——担心的是用户不会无意中导致数据库副作用,而不是敌对方在其上运行恶意代码。(为了使用脚本,您需要已经可以直接访问 MySQL,在这种情况下,您可以对数据库进行任意更改。)
security - 在污点传播程序中识别污点源
在污点分析中,污点源是可能产生不可信或外部输入的程序位置或语句。
我的目标:使用动态分析(最好)识别程序的所有外部用户输入,例如 cmdline-input 、文件读取、环境和网络变量并传播污点。
我阅读了本教程-http ://shell-storm.org/blog/Taint-analysis-and-pattern-matching-with-Pin/,它使用英特尔 PIN 拦截读取系统调用并传播污点。我想扩展它以包括上面提到的各种外部输入。(首先,对于 C-scanf,gets,fopen 等)
是否有任何动态分析工具可以帮助我识别通用外部输入?任何其他具有特定目标的方法也值得赞赏。谢谢
perl - Perl 6 有污点模式吗?
Perl 5 使用 -T 开关支持污点模式。该脚本将在内部将任何从脚本外部源检索到的值标记为受污染的,而这些值应该是未受污染的。Perl 6 是否支持这样的选项?
javascript - 使用 WALA 的 Javascript 污点分析
我正在开发一个 Firefox OS 应用程序分析工具,它根据代码分析将给定的应用程序分类为恶意或非恶意。我最初的工作是对 JavaScript 文件进行静态污点分析。是否可以使用 WALA 来实现。如果是,那么如何?
java - 如何跟踪方法参数?
我一直在尝试为 Java 编程语言找到“跟踪方法的参数”的确切术语,我通常会找到“污点分析”,但仍然不确定我是否走在正确的道路上。
我想要的是,跟踪方法的参数并查看方法的哪一部分(在范围内)对参数产生影响。例如,如果一个参数被分配给另一个变量,我也想跟踪分配的变量。通过提及“部分”,它可以是控制流图的代码行、语句或分支。
我还检查了工具并遇到了Checker Framework和Findbugs,但是它们似乎不能完全满足我想要的需求,或者我无法让它们满足我的需求。
请告诉我“污点分析”是否是我正在寻找的正确术语。此外,欢迎任何其他工具建议。
下面有一个来自Checker Framework Live Demo的编辑代码。我期望的是,processRequest()
当变量String input
被污染时,我期望在方法中的所有行都收到警告或错误executeQuery()
。因为一个受污染的变量被传递给它的参数。
html - 当所有图像都来自我的网站时,HTML Canvas 受到污染?
我一直在研究画布,我知道如果画布被污染,安全协议会拒绝输出/保存画布。
我似乎无法解释的是,究竟是什么触发了它在我身上受到污染。
我有一个带有背景和一些可拖动内容的 div,并希望将用户创建的布局另存为 .png 在我的服务器上。但是,由于受污染的画布安全性,它一直阻止它。div(和页面)中的所有图像都位于我的网站上。
我是否需要授予某种标题权限才能解决此问题(不允许其他人在他们的画布上使用我的图像跨源等)?
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(付费专区,抱歉)
java - 如何删除 Findbugs 的“污点”“查找安全漏洞”
我正在使用 Findbugs 的“查找安全漏洞”插件:https ://find-sec-bugs.github.io/
许多检测器使用“污染分析”来发出警告。
是否有关于如何从值中删除“污点”的文档?
我在他们的网站上找不到任何关于此的文档,而且我一直在寻找他们的源代码并且无法弄清楚:
该工具正在从以下代码中识别可能的注入错误:
我已经修复了这个错误,令我满意:
...但该工具仍在标记可能的错误。我相信这是因为它没有将“ com.google.common.net.UrlEscapers.urlPathSegmentEscaper()
”识别为在这里删除 Taint。
否则我该如何说服它?如果我不能,我可以在这里使用哪些工具可以识别的消毒技术?
perl - 我不明白 Perl Taint 模式的错误信息
我有一些旧的 Perl 代码,我被告知容易受到跨站点脚本攻击或 SQL 注入攻击。#!/usr/local/bin/perl
我想我会通过将 shebang 从更改为来打开污点模式#!/usr/local/bin/perl -T
,现在我收到以下错误消息:
代码如下所示:
Common::Config 具有以下所有权和权限:
我尝试将所有权更改为,apache
但仍然收到污染错误消息。
更新:
我试图$Bin
像这样清除我的变量:
但我仍然收到有关的污染错误use Common::Config;