Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
Brakeman
提交
7225f6f5
B
Brakeman
项目概览
李少辉-开发者
/
Brakeman
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
Brakeman
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
7225f6f5
编写于
7月 30, 2015
作者:
J
Justin Collins
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Expand SSL verify mode to Net::HTTP.start options
上级
c839eaed
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
44 addition
and
10 deletion
+44
-10
lib/brakeman/checks/check_ssl_verify.rb
lib/brakeman/checks/check_ssl_verify.rb
+27
-9
test/apps/rails4/lib/sweet_lib.rb
test/apps/rails4/lib/sweet_lib.rb
+4
-0
test/tests/rails4.rb
test/tests/rails4.rb
+13
-1
未找到文件。
lib/brakeman/checks/check_ssl_verify.rb
浏览文件 @
7225f6f5
...
...
@@ -11,21 +11,39 @@ class Brakeman::CheckSSLVerify < Brakeman::BaseCheck
def
run_check
check_open_ssl_verify_none
check_http_start
end
def
check_open_ssl_verify_none
tracker
.
find_call
(
:method
=>
:verify_mode
=
).
each
{
|
call
|
process_
result
(
call
)
}
tracker
.
find_call
(
:method
=>
:verify_mode
=
).
each
{
|
call
|
process_
verify_mode_result
(
call
)
}
end
def
process_result
(
result
)
return
if
duplicate?
(
result
)
def
process_verify_mode_result
result
if
result
[
:call
].
last_arg
==
SSL_VERIFY_NONE
add_result
result
warn
:result
=>
result
,
:warning_type
=>
"SSL Verification Bypass"
,
:warning_code
=>
:ssl_verification_bypass
,
:message
=>
"SSL certificate verification was bypassed"
,
:confidence
=>
CONFIDENCE
[
:high
]
warn_about_ssl_verification_bypass
result
end
end
def
check_http_start
tracker
.
find_call
(
:target
=>
:'Net::HTTP'
,
:method
=>
:start
).
each
{
|
call
|
process_http_start_result
call
}
end
def
process_http_start_result
result
arg
=
result
[
:call
].
last_arg
if
hash
?
arg
and
hash_access
(
arg
,
:
verify_mode
)
==
SSL_VERIFY_NONE
warn_about_ssl_verification_bypass
result
end
end
def
warn_about_ssl_verification_bypass
result
return
if
duplicate?
(
result
)
add_result
result
warn
:result
=>
result
,
:warning_type
=>
"SSL Verification Bypass"
,
:warning_code
=>
:ssl_verification_bypass
,
:message
=>
"SSL certificate verification was bypassed"
,
:confidence
=>
CONFIDENCE
[
:high
]
end
end
test/apps/rails4/lib/sweet_lib.rb
浏览文件 @
7225f6f5
...
...
@@ -7,4 +7,8 @@ class SweetLib
#Should warn about command injection
system
(
"rm
#{
@bad
}
"
)
end
def
test_net_http_start_ssl
Net
::
HTTP
.
start
(
uri
.
host
,
uri
.
port
,
:use_ssl
=>
true
,
:verify_mode
=>
OpenSSL
::
SSL
::
VERIFY_NONE
)
end
end
test/tests/rails4.rb
浏览文件 @
7225f6f5
...
...
@@ -14,7 +14,7 @@ class Rails4Tests < Test::Unit::TestCase
:controller
=>
0
,
:model
=>
2
,
:template
=>
7
,
:generic
=>
6
1
:generic
=>
6
2
}
end
...
...
@@ -1068,6 +1068,18 @@ class Rails4Tests < Test::Unit::TestCase
:user_input
=>
nil
end
def
test_ssl_verification_bypass_net_start
assert_warning
:type
=>
:warning
,
:warning_code
=>
71
,
:fingerprint
=>
"fed73f1d7511e72e158a7080eefe377c0c34ad18190471829216e9a2c4f7126d"
,
:warning_type
=>
"SSL Verification Bypass"
,
:line
=>
12
,
:message
=>
/^SSL\ certificate\ verification\ was\ bypasse/
,
:confidence
=>
0
,
:relative_path
=>
"lib/sweet_lib.rb"
,
:user_input
=>
nil
end
def
test_unscoped_find_by_id_bang
assert_warning
:type
=>
:warning
,
:warning_code
=>
82
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录