标签: taint

Perl的污点模式有用吗?

perl -T
Run Code Online (Sandbox Code Playgroud)

你用它吗?它是否有助于您在Perl脚本中找到安全漏洞?

perl taint

23
推荐指数
4
解决办法
6754
查看次数

什么是受污染的物体,什么时候应该解开它们?

什么时候Ruby对象需要被污染,什么时候应该解开它们?受污染对象的概念如何使Ruby脚本以安全模式运行?任何人都可以详细说明这一点,以便用一些代码片段清楚地理解这个概念吗?

ruby taint taint-checking ruby-1.9

15
推荐指数
1
解决办法
4622
查看次数

从Haskell中的"强化静态检查工具"复制"污点模式"

我已经阅读了Fortify静态检查工具的一些文档.此工具使用的概念之一称为taints.某些来源(例如Web请求)提供以一种或多种方式受到污染的数据,而某些接收器(例如Web响应)要求数据不受污染.

Fortify的好处在于你可以拥有几种类型的污点.例如,您可以标记srand输出,NON_CRYPTO_RAND然后要求在使用变量进行加密时不存在此污点.其他示例包括非绑定的检查号码等.

是否有可能使用Haskell或其他编程语言中使用的更强大的静态类型系统来模拟污点,甚至更复杂的类型系统?

在Haskell中,我可以做类型,Tainted [BadRandom,Unbounded] Int但是使用它们进行计算似乎很困难,因为这种新类型限制了不限制污点的操作.

有没有更好的方法来实现这一目标?有关该主题的任何现有工作?

security haskell coq taint idris

14
推荐指数
1
解决办法
663
查看次数

无论有没有删除,都可以保留一个有福的哈希成员

我在某些来源中看到了这行代码

( $self->{arg} ) = ( ( delete $self->{arg} ) =~ /(.*)/s ) if ${^TAINT}; 
Run Code Online (Sandbox Code Playgroud)

我理解无意义.我也知道删除

我的问题是,在什么情况下使用它是必要的或者是优选的delete,并且使用更简单的东西是不够的

( $self->{arg} ) = ( ( $self->{arg} ) =~ /(.*)/s ) if ${^TAINT};
Run Code Online (Sandbox Code Playgroud)

例如

#!/usr/bin/env perl -T

use 5.014;
use warnings;

package Some {
    use Moose;
    has 'arg' => (is => 'rw', isa => 'Str');
    sub doit {
        my $self = shift;
        #( $self->{arg} ) = ( ( delete $self->{arg} ) =~ /(.*)/s ) if ${^TAINT};
        ( $self->{arg} ) = …
Run Code Online (Sandbox Code Playgroud)

perl hash taint

12
推荐指数
1
解决办法
165
查看次数

11
推荐指数
1
解决办法
1277
查看次数

在#!/ usr/bin/perl中-T或-w的意义是什么?

我google了#!/usr/bin/perl,但我找不到任何满意的答案.我知道这是一个非常基本的东西,但仍然可以解释我#!/usr/bin/perl在Perl中有什么意义?此外,是什么-w-T表示#!/usr/bin/perl什么?我是Perl的新手,所以请耐心等待.

perl shebang taint

8
推荐指数
2
解决办法
1万
查看次数

是否可以将Perl的Marpa解析器用于公共网络服务器?

Perl的Marpa解析器的文档包含以下关于污染数据的部分:

Marpa :: R2的存在允许其输入以灵活和强大的方式改变执行.Marpa不应该与不受信任的输入一起使用.在Perl的污点模式中,使用Marpa的SLIF接口时会出现致命错误,该接口具有受污染的语法,受污染的输入字符串或受污染的令牌值.

如果我理解这种限制的后果,我不确定.我明白,语法一定不会被污染.但我不明白输入不应该被污染.对我来说,解析器的任务是验证输入.解析器必须信任其输入对我来说听起来不合理.

真的那样吗?用Marpa实现任何类型的公共网络服务是不可能的吗?

我之所以这样问是因为其中一个参考用例是Marpa HTML解析器,而且使用HTML解析器似乎是矛盾的,虽然大约99,99%的HTML可能被污染,但它不能与受污染的数据一起使用.

任何人都可以解释这个矛盾吗?

perl parsing taint marpa

8
推荐指数
1
解决办法
362
查看次数

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

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

我知道Scalar :: Util模块中有一个"污染"的功能.但是它只接受变量名作为参数,而不是Perl语句.

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

Taint.pl

use strict; 
use warnings; 

use Taint::Runtime qw(taint_start taint); 
taint_start(); 

my $data = taint("abc"); --> interesting 
my $noise = "noise"; --> not interesting 
my $evil = $data . " evil"; --> interesting
Run Code Online (Sandbox Code Playgroud)

Debugger.pl

sub DB::DB{

    my($package, $filename, $line) = caller;

    print $filename . ":" . $line . " ";
    scalar <STDIN>;

}

1;
Run Code Online (Sandbox Code Playgroud)

perl expression taint

7
推荐指数
1
解决办法
286
查看次数

什么是 IDFS 下的分配函数,为什么指针分析是非分配的?

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

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

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

A a = new A();
A b = a;
A c = new C();
b.f = c;
Run Code Online (Sandbox Code Playgroud)

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

来自 [2] 的类似(我认为)示例:

x = y.n
Run Code Online (Sandbox Code Playgroud)

在语句之前有指向边 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 pointers static-analysis analysis taint

7
推荐指数
1
解决办法
576
查看次数

Master 被污染 - 无法部署 Pod

在我的 Kubernetes 仪表板中,我看到一个节点具有标签

node-role.kubernetes.io/master:  
Run Code Online (Sandbox Code Playgroud)

结果是,除了这个节点之外,我的所有 Pod 都部署在集群上。(当我增加副本时,主节点上不会部署任何pod)如何删除标签,我尝试了Kubernetes故障排除指南

以下命令没有成功

kubectl taint nodes --all node-role.kubernetes.io/master:-
kubectl taint nodes --all node-role.kubernetes.io/master-
kubectl taint nodes --all node-role.kubernetes.io/master:NoSchedule-
Run Code Online (Sandbox Code Playgroud)

两者都产生了消息(片段)

taint "node-role.kubernetes.io/master:" not found
taint "node-role.kubernetes.io/master:" not found
taint "node-role.kubernetes.io/master:NoSchedule" not found
Run Code Online (Sandbox Code Playgroud)

预期输出应该是:

  • Pod 应该部署在每个节点(包括 Master)上

我的版本是v1.14.1

taint kubernetes

6
推荐指数
2
解决办法
3万
查看次数