mirror of https://github.com/MISP/MISP
Merge branch '2.4' into 2.4
commit
5bd06f86e5
2
PyMISP
2
PyMISP
|
@ -1 +1 @@
|
|||
Subproject commit a81f6b5c15e2effbc0b6118f1e1524b0950a576c
|
||||
Subproject commit 26a8f4c66230c0df10b2f9637e53ee1542a26f40
|
|
@ -1 +1 @@
|
|||
{"major":2, "minor":4, "hotfix":64}
|
||||
{"major":2, "minor":4, "hotfix":65}
|
||||
|
|
|
@ -47,7 +47,7 @@ class AppController extends Controller {
|
|||
public $helpers = array('Utility');
|
||||
|
||||
private $__jsVersion = '2.4.62';
|
||||
public $pyMispVersion = '2.4.63';
|
||||
public $pyMispVersion = '2.4.65';
|
||||
public $phpmin = '5.5.9';
|
||||
public $phprec = '7.0.0';
|
||||
|
||||
|
|
|
@ -3093,6 +3093,8 @@ class EventsController extends AppController {
|
|||
foreach (${$source} as $k => $attribute) {
|
||||
if ($attribute['type'] == 'ip-src/ip-dst') {
|
||||
$types = array('ip-src', 'ip-dst');
|
||||
} else if ($attribute['type'] == 'ip-src|port/ip-dst|port') {
|
||||
$types = array('ip-src|port', 'ip-dst|port');
|
||||
} else if ($attribute['type'] == 'malware-sample') {
|
||||
if (!isset($attribute['data_is_handled']) || !$attribute['data_is_handled']) {
|
||||
App::uses('FileAccessTool', 'Tools');
|
||||
|
|
|
@ -22,24 +22,21 @@ class ThreadsController extends AppController {
|
|||
$thread_id = false;
|
||||
if ($result) {
|
||||
$thread_id = $this->Thread->find('first', array('recursive' => -1, 'conditions' => array('Thread.event_id' => $id), 'fields' => array('Thread.id')));
|
||||
if ($thread_id) {
|
||||
$thread_id = $thread_id['Thread']['id'];
|
||||
if ($thread_id) {
|
||||
if (!$this->_isRest()) {
|
||||
$this->redirect(array('action' => 'view', $thread_id['Thread']['id'], true));
|
||||
} else {
|
||||
if ($this->_isRest()) {
|
||||
return $this->RestResponse->viewData($array(), $this->response->type());
|
||||
}
|
||||
$thread_id = false;
|
||||
return $this->__view($thread_id['Thread']['id'], false, false);
|
||||
}
|
||||
} else {
|
||||
if ($this->_isRest()) {
|
||||
return $this->RestResponse->viewData(array(), $this->response->type());
|
||||
} else {
|
||||
throw new NotFoundException('Invalid Thread.');
|
||||
}
|
||||
}
|
||||
if ($thread_id) {
|
||||
$post_id = false;
|
||||
if (isset($this->passedArgs['post_id'])) $post_id = $this->passedArgs['post_id'];
|
||||
$response = $this->__view($thread_id, false, $post_id);
|
||||
if ($this->_isRest()) {
|
||||
return $response;
|
||||
}
|
||||
} else {
|
||||
throw new NotFoundException('Invalid Thread.');
|
||||
throw new NotFoundException('Invalid Event.');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -83,7 +80,6 @@ class ThreadsController extends AppController {
|
|||
throw new NotFoundException('Invalid thread.');
|
||||
}
|
||||
$thread = $this->Thread->read();
|
||||
|
||||
// If the thread belongs to an event, we have to make sure that the event's distribution level hasn't changed.
|
||||
// This is also a good time to update the thread's distribution level if that did happen.
|
||||
if (!empty($thread['Thread']['event_id'])) {
|
||||
|
|
|
@ -8,6 +8,7 @@ class ComplexTypeTool {
|
|||
'/^h\[tt\]p/i' => 'http',
|
||||
'/\[\.\]/' => '.',
|
||||
'/\[dot\]/' => '.',
|
||||
'/\(dot\)/' => '.',
|
||||
'/\\\\\./' => '.',
|
||||
'/\.+/' => '.'
|
||||
);
|
||||
|
@ -209,11 +210,19 @@ class ComplexTypeTool {
|
|||
// input2 from here on is the variable containing the original input with the port removed. It is only used by url / domain name / hostname / ip
|
||||
$comment = false;
|
||||
if (preg_match('/(:[0-9]{2,5})$/', $inputRefanged, $port)) {
|
||||
$comment = 'On port ' . substr($port[0], 1);
|
||||
$inputRefangedNoPort = str_replace($port[0], '', $inputRefanged);
|
||||
} else $inputRefangedNoPort = $inputRefanged;
|
||||
$port = substr($port[0], 1);
|
||||
} else {
|
||||
$inputRefangedNoPort = $inputRefanged;
|
||||
}
|
||||
// check for IP
|
||||
if (filter_var($inputRefangedNoPort, FILTER_VALIDATE_IP)) return array('types' => array('ip-dst', 'ip-src', 'ip-src/ip-dst'), 'to_ids' => true, 'default_type' => 'ip-dst', 'comment' => $comment, 'value' => $inputRefangedNoPort);
|
||||
if (filter_var($inputRefangedNoPort, FILTER_VALIDATE_IP)) {
|
||||
if (isset($port)) {
|
||||
return array('types' => array('ip-dst|port', 'ip-src|port', 'ip-src|port/ip-dst|port'), 'to_ids' => true, 'default_type' => 'ip-dst|port', 'comment' => $comment, 'value' => $inputRefangedNoPort . '|' . $port);
|
||||
} else {
|
||||
return array('types' => array('ip-dst', 'ip-src', 'ip-src/ip-dst'), 'to_ids' => true, 'default_type' => 'ip-dst', 'comment' => $comment, 'value' => $inputRefangedNoPort);
|
||||
}
|
||||
}
|
||||
if (strpos($inputRefangedNoPort, '/')) {
|
||||
$temp = explode('/', $inputRefangedNoPort);
|
||||
if (count($temp) == 2) {
|
||||
|
|
|
@ -41,7 +41,7 @@ class AppModel extends Model {
|
|||
42 => false, 44 => false, 45 => false, 49 => true, 50 => false,
|
||||
51 => false, 52 => false, 55 => true, 56 => true, 57 => true,
|
||||
58 => false, 59 => false, 60 => false, 61 => false, 62 => false,
|
||||
63 => false, 64 => false
|
||||
63 => false, 64 => false, 65 => false
|
||||
)
|
||||
)
|
||||
);
|
||||
|
@ -113,7 +113,6 @@ class AppModel extends Model {
|
|||
public function updateDatabase($command) {
|
||||
$dataSourceConfig = ConnectionManager::getDataSource('default')->config;
|
||||
$dataSource = $dataSourceConfig['datasource'];
|
||||
$sql = '';
|
||||
$sqlArray = array();
|
||||
$indexArray = array();
|
||||
$this->Log = ClassRegistry::init('Log');
|
||||
|
@ -595,6 +594,13 @@ class AppModel extends Model {
|
|||
$indexArray[] = array('galaxies', 'uuid');
|
||||
$indexArray[] = array('galaxies', 'type');
|
||||
break;
|
||||
case '2.4.65':
|
||||
$sqlArray[] = 'ALTER TABLE feeds CHANGE `enabled` `enabled` tinyint(1) DEFAULT 0;';
|
||||
$sqlArray[] = 'ALTER TABLE feeds CHANGE `default` `default` tinyint(1) DEFAULT 0;';
|
||||
$sqlArray[] = 'ALTER TABLE feeds CHANGE `distribution` `distribution` tinyint(4) NOT NULL DEFAULT 0;';
|
||||
$sqlArray[] = 'ALTER TABLE feeds CHANGE `sharing_group_id` `sharing_group_id` int(11) NOT NULL DEFAULT 0;';
|
||||
$sqlArray[] = 'ALTER TABLE attributes CHANGE `comment` `comment` text COLLATE utf8_bin;';
|
||||
break;
|
||||
case 'fixNonEmptySharingGroupID':
|
||||
$sqlArray[] = 'UPDATE `events` SET `sharing_group_id` = 0 WHERE `distribution` != 4;';
|
||||
$sqlArray[] = 'UPDATE `attributes` SET `sharing_group_id` = 0 WHERE `distribution` != 4;';
|
||||
|
@ -615,7 +621,6 @@ class AppModel extends Model {
|
|||
return false;
|
||||
break;
|
||||
}
|
||||
if (!isset($sqlArray)) $sqlArray = array($sql);
|
||||
foreach ($sqlArray as $sql) {
|
||||
try {
|
||||
$this->query($sql);
|
||||
|
@ -707,6 +712,7 @@ class AppModel extends Model {
|
|||
}
|
||||
}
|
||||
$result = true;
|
||||
$duplicate = false;
|
||||
try {
|
||||
$this->query($addIndex);
|
||||
} catch (Exception $e) {
|
||||
|
|
|
@ -1341,8 +1341,9 @@ class Attribute extends AppModel {
|
|||
'Attribute.value1' => $ipValues,
|
||||
'Attribute.value2' => $ipValues
|
||||
));
|
||||
return $extraConditions;
|
||||
}
|
||||
return $extraConditions;
|
||||
return false;
|
||||
}
|
||||
|
||||
public function __afterSaveCorrelation($a, $full = false, $event = false) {
|
||||
|
@ -1378,7 +1379,7 @@ class Attribute extends AppModel {
|
|||
),
|
||||
'Attribute.deleted' => 0
|
||||
);
|
||||
if (isset($extraConditions)) {
|
||||
if (!empty($extraConditions)) {
|
||||
$conditions['AND']['OR'][] = $extraConditions;
|
||||
}
|
||||
$correlatingAttributes[$k] = $this->find('all', array(
|
||||
|
|
|
@ -1474,6 +1474,10 @@ class Event extends AppModel {
|
|||
}
|
||||
$event['ShadowAttribute'] = array_values($event['ShadowAttribute']);
|
||||
}
|
||||
if ($event['Event']['orgc_id'] === $user['org_id'] && $user['Role']['perm_audit']) {
|
||||
$UserEmail = $this->User->getAuthUser($event['Event']['user_id'])['email'];
|
||||
$event['Event']['event_creator_email'] = $UserEmail;
|
||||
}
|
||||
}
|
||||
return $results;
|
||||
}
|
||||
|
|
|
@ -655,12 +655,20 @@ class Feed extends AppModel {
|
|||
if (empty($data)) {
|
||||
return true;
|
||||
}
|
||||
$prunedCopy = array();
|
||||
foreach ($data as $key => $value) {
|
||||
foreach ($prunedCopy as $copy) {
|
||||
if ($copy['type'] == $value['type'] && $copy['category'] == $value['category'] && $copy['value'] == $value['value']) {
|
||||
continue 2;
|
||||
}
|
||||
}
|
||||
$data[$key]['event_id'] = $event['Event']['id'];
|
||||
$data[$key]['distribution'] = $feed['Feed']['distribution'];
|
||||
$data[$key]['sharing_group_id'] = $feed['Feed']['sharing_group_id'];
|
||||
$data[$key]['to_ids'] = $feed['Feed']['override_ids'] ? 0 : $data[$key]['to_ids'];
|
||||
$prunedCopy[] = $data[$key];
|
||||
}
|
||||
$data = $prunedCopy;
|
||||
if ($jobId) {
|
||||
$job = ClassRegistry::init('Job');
|
||||
$job->id = $jobId;
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
'class' => 'form-control span6'
|
||||
));
|
||||
echo $this->Form->input('input_source', array(
|
||||
'label' => 'Source Format',
|
||||
'label' => 'Input Source',
|
||||
'div' => 'input clear',
|
||||
'options' => array('network' => 'Network', 'local' => 'Local'),
|
||||
'class' => 'form-control span6'
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
'class' => 'form-control span6'
|
||||
));
|
||||
echo $this->Form->input('input_source', array(
|
||||
'label' => 'Source Format',
|
||||
'label' => 'Input Source',
|
||||
'div' => 'input clear',
|
||||
'options' => array('network' => 'Network', 'local' => 'Local'),
|
||||
'class' => 'form-control span6'
|
||||
|
|
|
@ -24,6 +24,9 @@ echo $this->Form->end();
|
|||
echo $this->element('side_menu', array('menuList' => 'admin', 'menuItem' => 'addRole'));
|
||||
$this->Js->get('#RolePermission')->event('change', 'deactivateActions()');
|
||||
foreach ($permFlags as $k => $flag) {
|
||||
if ($k == 'perm_audit' || $k == 'perm_auth') {
|
||||
continue;
|
||||
}
|
||||
if ($k !== 'perm_site_admin') $this->Js->get('#' . $flag['id'])->event('change', 'checkPerms("' . $flag['id'] . '")');
|
||||
else $this->Js->get('#RolePermSiteAdmin')->event('change', 'checkPerms("RolePermSiteAdmin");activateAll();');
|
||||
}
|
||||
|
|
|
@ -24,6 +24,9 @@
|
|||
echo $this->element('side_menu', array('menuList' => 'admin', 'menuItem' => 'editRole'));
|
||||
$this->Js->get('#RolePermission')->event('change', 'deactivateActions()');
|
||||
foreach ($permFlags as $k => $flag) {
|
||||
if ($k == 'perm_audit' || $k == 'perm_auth') {
|
||||
continue;
|
||||
}
|
||||
if ($k !== 'perm_site_admin') $this->Js->get('#' . $flag['id'])->event('change', 'checkPerms("' . $flag['id'] . '")');
|
||||
else $this->Js->get('#RolePermSiteAdmin')->event('change', 'checkPerms("RolePermSiteAdmin");activateAll();');
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<div class="whitelist index">
|
||||
<h2>Import Whitelist</h2>
|
||||
<h2>Signature Whitelist</h2>
|
||||
<p>Regex entries (in the standard php regex /{regex}/{modifier} format) entered below will restrict matching attributes from being included in the IDS flag sensitive exports (such as NIDS exports).</p>
|
||||
<div class="pagination">
|
||||
<ul>
|
||||
<?php
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<div class="whitelist index">
|
||||
<h2>Signature Whitelist</h2>
|
||||
<p>Regex entries (in the standard php regex /{regex}/{modifier} format) entered below will restrict matching attributes from being included in the IDS flag sensitive exports (such as NIDS exports).</p>
|
||||
<div class="pagination">
|
||||
<ul>
|
||||
<?php
|
||||
|
|
Loading…
Reference in New Issue