X

Баги в Magento 2 CE

Сегодня  заметил что отрелизилась Magento 2.0. Решил качнуть CE версию и глянуть, что там и как сделали. При попытке, первого запуска я получил следующие сообщение:

glob() returned error while searching in '/public_html/app/code/*/*/cli_commands.php'

Данное сообщение не содержало никакой дополнительной информации о проблеме, только это сообщение.

Выглядит, это конечно прекрасно - компания берет с пользователей EE по $15к за лицензию, проводит съезды в лас-вегасе и имеет большие офисы по всему миру.. Но, протестить, свой продукт и как минимум, сообщить "что к чему" не может. Печалька..

Ладно, в последнее время, у меня получается неплохо ванговать, поэтому я скажу вам по секрету, что проблема в PHP версии ниже 5.6 . Для того, чтобы эта ошибка вылечилась, просто обновитесь до 5.6 или выше.

Только после этого инсталятор сможет проверить, соответствует ли ваша версия PHP необходимой 🙂

Установка Magento 2

Кроме обновления PHP всего скорее придется установить некоторые php модули и обновить MySQL до версии 5.6+, полный список требований можно найти тут.

Рассказывать, про код я пока не буду, просто предлагаю посмотреть на конструктор класса Product:

    public function __construct(
        \Magento\Framework\Model\Context $context,
        \Magento\Framework\Registry $registry,
        \Magento\Framework\Api\ExtensionAttributesFactory $extensionFactory,
        AttributeValueFactory $customAttributeFactory,
        \Magento\Store\Model\StoreManagerInterface $storeManager,
        \Magento\Catalog\Api\ProductAttributeRepositoryInterface $metadataService,
        Product\Url $url,
        Product\Link $productLink,
        \Magento\Catalog\Model\Product\Configuration\Item\OptionFactory $itemOptionFactory,
        \Magento\CatalogInventory\Api\Data\StockItemInterfaceFactory $stockItemFactory,
        \Magento\Catalog\Model\Product\OptionFactory $catalogProductOptionFactory,
        \Magento\Catalog\Model\Product\Visibility $catalogProductVisibility,
        \Magento\Catalog\Model\Product\Attribute\Source\Status $catalogProductStatus,
        \Magento\Catalog\Model\Product\Media\Config $catalogProductMediaConfig,
        Product\Type $catalogProductType,
        \Magento\Framework\Module\Manager $moduleManager,
        \Magento\Catalog\Helper\Product $catalogProduct,
        \Magento\Catalog\Model\ResourceModel\Product $resource,
        \Magento\Catalog\Model\ResourceModel\Product\Collection $resourceCollection,
        \Magento\Framework\Data\CollectionFactory $collectionFactory,
        \Magento\Framework\Filesystem $filesystem,
        \Magento\Framework\Indexer\IndexerRegistry $indexerRegistry,
        \Magento\Catalog\Model\Indexer\Product\Flat\Processor $productFlatIndexerProcessor,
        \Magento\Catalog\Model\Indexer\Product\Price\Processor $productPriceIndexerProcessor,
        \Magento\Catalog\Model\Indexer\Product\Eav\Processor $productEavIndexerProcessor,
        CategoryRepositoryInterface $categoryRepository,
        Product\Image\CacheFactory $imageCacheFactory,
        \Magento\Catalog\Model\ProductLink\CollectionProvider $entityCollectionProvider,
        \Magento\Catalog\Model\Product\LinkTypeProvider $linkTypeProvider,
        \Magento\Catalog\Api\Data\ProductLinkInterfaceFactory $productLinkFactory,
        \Magento\Catalog\Api\Data\ProductLinkExtensionFactory $productLinkExtensionFactory,
        EntryConverterPool $mediaGalleryEntryConverterPool,
        \Magento\Framework\Api\DataObjectHelper $dataObjectHelper,
        \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor,
        array $data = []
    )

 

Ха-ха, теперь чтобы провалидировать знания кандидата на должность Magento девелопера, достаточно спросить его о параметрах класса Product, если назовет 10 из 35, значит можно брать на работу...

-- [добавлено, спустя 15 минут] --

Ну, что же. Завершив установку свежескаченной версии Magento 2 CE, я нашел XSS уязвимость. Чтобы воспроизвести проблему, сделайте следующее:

  1. Скачайте Magento 2 CE + Sample Data с оф.сайта: https://www.magentocommerce.com/download
  2. Установите
  3. Обновите индексы и сбросьте кеш, согласно рекомендациям в админке
  4. Перейдите на страницу: site.com/karissa-v-neck-tee.html
  5. В верхней части страницы, вы увидите следующее:

    XSS в Magento 2

  6. Давайте взглянем на исходники

    Данные не экранируются

  7. Как видим данные не экранируются
  8. Спустя 5 минут, мое предположение подтвердилось:

    XSS в Magento 2

  9. Попытался на их сайте найти форму сообщений об уязвимостях - ничего не нашел. Запостил тему на форум, интересно как быстро исправят или удалят тему 🙂

Сообщение о баге на форуме

Честно говоря, мне очень смешно и грустно. Целая команда чуваков разрабатывала и тестировала вторую magent-у два, нет ДВААААА ГОДАА и в итоге релизят такой сырой продукт - это печально.

И так сойдет

Категории: CMS Frameworks
Тэги: magentomagento 2