Skip to content

Commit ebcc769

Browse files
committed
MC-15311: [Sec] PageBuilder XSS Injection Possible Through Block on HTML Code Content Type For CSS Classes Attribute & in TinyMCE
Add custom variable filter test case
1 parent 608867a commit ebcc769

File tree

4 files changed

+26
-0
lines changed

4 files changed

+26
-0
lines changed

dev/tests/integration/testsuite/Magento/PageBuilder/Plugin/Filter/TemplatePluginTest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
namespace Magento\PageBuilder\Plugin\Filter;
1010

11+
use Magento\Store\Model\Store;
1112
use Magento\Widget\Model\Template\Filter as TemplateFilter;
1213
use Magento\TestFramework\Helper\Bootstrap;
1314

@@ -30,13 +31,18 @@ protected function setUp()
3031
{
3132
$this->objectManager = Bootstrap::getObjectManager();
3233
$this->templateFilter = $this->objectManager->get(TemplateFilter::class);
34+
35+
// set store id to 0 to recognize that escaping is required in custom variable
36+
$this->templateFilter->setStoreId(Store::DEFAULT_STORE_ID);
3337
}
3438

3539
/**
3640
* @param string $preFiltered
3741
* @param string $postFiltered
3842
* @param string $preFilteredBasename
3943
* @dataProvider filterDataProvider
44+
* @magentoDataFixture Magento/PageBuilder/_files/custom_variable_xss.php
45+
* @magentoDbIsolation enabled
4046
*/
4147
public function testFiltering(string $preFiltered, string $postFiltered, string $preFilteredBasename)
4248
{
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
$this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
4+
5+
/** @var \Magento\Variable\Model\ResourceModel\Variable $variableResource */
6+
$variableResource = $this->objectManager->get(\Magento\Variable\Model\ResourceModel\Variable::class);
7+
8+
/** @var \Magento\Variable\Model\Variable $variable */
9+
$variable = $this->objectManager->get(\Magento\Variable\Model\Variable::class);
10+
11+
$variable->setData([
12+
'code' => 'xssVariable',
13+
'name' => 'xssVariable',
14+
'html_value' => '<img src=x onerror="alert(0)">',
15+
'plain_value' => '<img src=x onerror="alert(0)">',
16+
]);
17+
18+
$variableResource->save($variable);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
&lt;img src=x onerror=&quot;alert(0)&quot;&gt;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{{customVar code=xssVariable}}

0 commit comments

Comments
 (0)