Специалист по безопасности Михаэль Козярски (Michael Koziarski) опубликовал браузерный букмарклет MegaPWN, который успешно извлекает секретный мастер-ключ Mega из оперативной памяти компьютера.

Собственно, это не столько баг, сколько фича специфической «браузерной криптографии» Mega, когда все операции по шифрованию/расшифровке файлов осуществляются в браузере, с помощью приложения на Javascript. Сами представители компании признали этот факт и говорят: «Технически, мы можем передать вам JavaScript-код с бэкдором, который извлечет ваш секретный ключ и отправит его обратно нам».

Михаэль Козярски наглядно демонстрирует, что любой злоумышленник, получивший доступ к компьютеру пользователя, может узнать его секретный ключ. Этот ключ напрямую доступен компании Mega, которая тоже может легко получить доступ к «зашифрованным» файлам пользователя на своих серверах и проверить их содержимое.

Возможность доступа к файлам пользователю означает, что компания Mega будет обязана предоставить такой доступ, если получит соответствующее судебное постановление в отношении одного или многих пользователей. В общем, пресловутый «криптохостинг» оказался не слишком-то и «крипто-».

Для пользователей Mega, таким образом, действуют такие же рекомендации, как и для пользователей обычных файлохостингов: нужно самостоятельно шифровать файлы перед передачей в облако с помощью стойкой криптографии, используя PGP или GPG.

Исходный код букмарклета MegaPWN

function megaPWN() {
  var format = function(a) { 
    var padded = "";
    var hex = s2hex(b2s(a));
    for (var i = 0; i < hex.length; i+= 8) { 
      padded += hex.substr(i, 8);
      padded += ' ';
    }
    return padded;
  };

  var masterAESKey = JSON.parse(window.localStorage.k);

  var rsaPrivateKeyComponents = JSON.parse(window.localStorage.privk);
  var rsaD = rsaPrivateKeyComponents[2];
  var rsaP = rsaPrivateKeyComponents[0];
  var rsaQ = rsaPrivateKeyComponents[1];
  var rsaU = rsaPrivateKeyComponents[3];
  
  var lesson = "Your MEGA master key is: " + format(masterAESKey);
  lesson += "
"; lesson += "Your RSA private key exponent starts with: d=" + format(rsaD).substr(0, 107); lesson += "
"; lesson += "MEGA and anyone else with access to your computer can see this, and use it to decrypt any file you upload."; Ext.Msg.show({ title: "megaPWN", msg: lesson }); } megaPWN();

Оставить мнение