Skip to content
This repository was archived by the owner on Nov 28, 2023. It is now read-only.

Commit df11d17

Browse files
authored
Merge pull request #978 from BlBana/master
解决了API模式下单个文件扫描无法获取文件内容的问题
2 parents 462cfae + 812d9a7 commit df11d17

File tree

4 files changed

+13
-6
lines changed

4 files changed

+13
-6
lines changed

cobra/engine.py

+9-2
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,12 @@ def scan(target_directory, a_sid=None, s_sid=None, special_rules=None, language=
155155
rules = r.rules(special_rules)
156156
find_vulnerabilities = []
157157

158-
cve_vuls = scan_cve(target_directory)
159-
find_vulnerabilities += cve_vuls
158+
try:
159+
if special_rules is None or len(special_rules) == 0:
160+
cve_vuls = scan_cve(target_directory)
161+
find_vulnerabilities += cve_vuls
162+
except Exception:
163+
logger.warning('[SCAN] [CVE] CVE rule is None')
160164

161165
def store(result):
162166
if result is not None and isinstance(result, list) is True:
@@ -165,6 +169,7 @@ def store(result):
165169
res.file_path = res.file_path.replace(target_directory, '')
166170
else:
167171
res.file_path = res.file_path.replace(os.path.dirname(target_directory), '')
172+
168173
find_vulnerabilities.append(res)
169174
else:
170175
logger.debug('[SCAN] [STORE] Not found vulnerabilities on this rule!')
@@ -234,6 +239,8 @@ def store(result):
234239
if len(diff_rules) > 0:
235240
logger.info('[SCAN] Not Trigger Rules ({l}): {r}'.format(l=len(diff_rules), r=','.join(diff_rules)))
236241

242+
if os.path.isfile(target_directory):
243+
target_directory = os.path.dirname(target_directory)
237244
# completed running data
238245
if s_sid is not None:
239246
Running(s_sid).data({

cobra/log.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import re
1717
import subprocess
1818
import logging
19-
from logging import handlers
19+
import cloghandler
2020

2121
# stream handle
2222
#
@@ -228,7 +228,7 @@ def format(self, record):
228228
logger.addHandler(sh)
229229

230230
# file handle
231-
fh = handlers.RotatingFileHandler(logfile, maxBytes=(1048576 * 5), backupCount=7)
231+
fh = cloghandler.ConcurrentRotatingFileHandler(logfile, maxBytes=(1048576 * 5), backupCount=7)
232232
fh.setFormatter(fh_format)
233233
fh.setLevel(logging.DEBUG)
234234
logger.addHandler(fh)

cobra/rule.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ def rules(self, rules=None):
182182
if x.tag == 'name':
183183
rule_info['name'] = x.get('value')
184184
if x.tag == 'language':
185-
rule_info['language'] = x.get('value')
185+
rule_info['language'] = x.get('value').lower()
186186
if x.tag == 'status':
187187
rule_info['status'] = to_bool(x.get('value'))
188188
if x.tag == 'author':

requirements.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ pytest==3.0.6
77
pip==9.0.1
88
phply==1.0.0
99
Werkzeug==0.11.9
10-
ConcurrentLogHandler==0.9.1
10+
ConcurrentLogHandler==0.9.1

0 commit comments

Comments
 (0)