SlideShare une entreprise Scribd logo
1  sur  84
© Digital Security
Юшкевич Иван
Опасная
сериализация
© Digital Security 2
Опасная сериализация
Ohw ma i?
© Digital Security 3
Опасная сериализация
Agenda
• Что такое сериализация
 Зачем, для чего, почему
• Уязвимости (calc.exe time)
• Как искать
• Как защититься
• …
• Profit(?)
© Digital Security 4
Опасная сериализация
Сериализация
Сериализация - это процесс сохранения состояния объекта в последовательность байт.
Десериализация - это процесс восстановления объекта, из этих байт. Обратный процесс
сериализация(!)
Формат представления:
Бинарный: Java Serialization, Ruby Marshal, Protobuf, Thrift, Avro, MS-NRBF, Android
Binder/Parcel, IIOP
Смешанный: PHP Serialization, Python pickle, Binary XML/JSON
«Читаемый»: XML, JSON, YAML
© Digital Security 5
Опасная сериализация
Сериализация
• Протоколы передачи данных:
RMI (Remote Method Invocation)
JMX (Java Management Extension)
JMS (Java Messaging System)
• Обмен «объектами» между двумя приложениями
• Кэширование
• Cookie, API-токены
• Сохранение и восстановление объекта
© Digital Security 6
Опасная сериализация
Сериализация
© Digital Security 7
Опасная сериализация
Сериализация
© Digital Security 8
Опасная сериализация
Сериализация
• readObject()
• readResolve()
• validateObject()
• readObjectNoData()
• readExternal()
• finalize()
© Digital Security 9
Опасная сериализация
Сериализация
public class Gadget0
{
public String command;
protected void readObject(java.io.ObjectInputStream
stream) throws IOException, ClassNotFoundException
{
stream.defaultReadObject();
Runtime.getRuntime().exec(command);
}
}
© Digital Security 10
Опасная сериализация
Сериализация
public class Gadget0
{
public String command;
protected void readObject(java.io.ObjectInputStream
stream) throws IOException, ClassNotFoundException
{
stream.defaultReadObject();
Runtime.getRuntime().exec(command);
}
}
© Digital Security 11
Опасная сериализация
Как это сделано?
© Digital Security 12
Опасная сериализация
Как это сделано?
public static void main(String[] args) {
User user = new User();
user.name = "steph"; user.isAdmin=false;
FileOutputStream fos = new
FileOutputStream("object.ser");
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(user); os.close();
FileInputStream fis = new FileInputStream("object.ser");
ObjectInputStream ois = new ObjectInputStream(fis);
User objectFromDisk = (User)ois.readObject();
System.out.println(objectFromDisk.name); ois.close();
}
public class User implements Serializable{
public String name;
public boolean isAdmin;
public String picture;
public User() {
}
}
© Digital Security 13
Опасная сериализация
Как это сделано?
AC ED: STREAM_MAGIC – указание , что это сериализованные данные
© Digital Security 14
Опасная сериализация
Как это сделано?
AC ED: STREAM_MAGIC – указание , что это сериализованные данные
00 05: STREAM_VERSION. – версия
© Digital Security 15
Опасная сериализация
Как это сделано?
AC ED: STREAM_MAGIC – указание , что это сериализованные данные
00 05: STREAM_VERSION. – версия
0x73: TC_OBJECT. – новый объект
© Digital Security 16
Опасная сериализация
Как это сделано?
AC ED: STREAM_MAGIC – указание , что это сериализованные данные
00 05: STREAM_VERSION. – версия
0x73: TC_OBJECT. – новый объект
0x72: TC_CLASSDESC. Обозначение нового класса.
© Digital Security 17
Опасная сериализация
Как это сделано?
AC ED: STREAM_MAGIC – указание , что это сериализованные данные
00 05: STREAM_VERSION. – версия
0x73: TC_OBJECT. – новый объект
0x72: TC_CLASSDESC. Обозначение нового класса.
00 08 – длина имени класса
© Digital Security 18
Опасная сериализация
Как это сделано?
AC ED: STREAM_MAGIC – указание , что это сериализованные данные
00 05: STREAM_VERSION. – версия
0x73: TC_OBJECT. – новый объект
0x72: TC_CLASSDESC. Обозначение нового класса.
00 08 – длина имени класса
Имя класса
UID класса
© Digital Security 19
Опасная сериализация
Как это сделано?
AC ED: STREAM_MAGIC – указание , что это сериализованные данные
00 05: STREAM_VERSION. – версия
0x73: TC_OBJECT. – новый объект
0x72: TC_CLASSDESC. Обозначение нового класса.
00 08 – длина имени класса
Имя класса
UID класса
02 – поддерживает сериализацию
00 03 – количество полей
© Digital Security 20
Опасная сериализация
Как это сделано?
AC ED: STREAM_MAGIC – указание , что это сериализованные данные
00 05: STREAM_VERSION. – версия
0x73: TC_OBJECT. – новый объект
0x72: TC_CLASSDESC. Обозначение нового класса.
00 08 – длина имени класса
Имя класса
UID класса
02 – поддерживает сериализацию
00 03 – количество полей
5A – тип поля
00 07 - Длина имени поля
© Digital Security 21
Опасная сериализация
Уязвимости?
© Digital Security 22
Опасная сериализация
Уязвимости
1) Нарушение логики работы программы
2) Ошибки связанные с валидацией пользовательских данных
3) RCE
• Даже когда её не ждешь…
А все почему?
Данные приходят из НЕ ДОВЕРЕННОГО источника.
© Digital Security 23
Опасная сериализация
Уязвимости
Date Type Product Researcher(s)
Apr 2005 DOS JRE Marc Schönefeld
Aug 2008 Applet->RCE JRE Sami Koivu
Apr 2010 Applet->RCE JRE Sami Koivu
Mar 2010 DOS Sun Java Web Console Luca Carettoni
Sept 2011 RCE Spring Framework Wouter Coekaerts
Oct 2012 RCE IBM Cognos BI Pierre Ernst
Feb 2013 File Write->RCE Apache OpenJPA Pierre Ernst
Mar 2013 File Write->RCE Apache Tomcat Pierre Ernst
July 2015 RCE Apache Groovy "cpnrodzc7"
Aug 2015 Buffer Overflow->RCE Android Or Peles & Roee Hay
Nov 2015 RCE Apache Commons Collections Chris Frohoff & Gabriel Lawrence
Nov 2015 DOS JRE Wouter Coekaerts
© Digital Security 24
Опасная сериализация
Уязвимости
Date Type Product Researcher(s)
Apr 2005 DOS JRE Marc Schönefeld
Aug 2008 Applet->RCE JRE Sami Koivu
Apr 2010 Applet->RCE JRE Sami Koivu
Mar 2010 DOS Sun Java Web Console Luca Carettoni
Sept 2011 RCE Spring Framework Wouter Coekaerts
Oct 2012 RCE IBM Cognos BI Pierre Ernst
Feb 2013 File Write->RCE Apache OpenJPA Pierre Ernst
Mar 2013 File Write->RCE Apache Tomcat Pierre Ernst
July 2015 RCE Apache Groovy "cpnrodzc7"
Aug 2015 Buffer Overflow->RCE Android Or Peles & Roee Hay
Nov 2015 RCE Apache Commons Collections Chris Frohoff & Gabriel Lawrence
Nov 2015 DOS JRE Wouter Coekaerts
© Digital Security 25
Опасная сериализация
Почему так?
Может ввести в заблуждение из-за
необычного формата:
• Хранение и передача данных - безопасны
• Бинарный формат непонятен, сложно
подделать
• Сериализация безопасна
Это всего лишь формат представления
данных
© Digital Security 26
Опасная сериализация
Пример
Cookie: user=base64(serialized(User.class))
© Digital Security 27
Опасная сериализация
Пример
Cookie: user=base64(serialized(User.class))
© Digital Security 28
Опасная сериализация
Пример
© Digital Security 29
Опасная сериализация
Пример
© Digital Security 30
Опасная сериализация
IRL sample
© Digital Security 31
Опасная сериализация
IRL
1) Cookie подписывается с помощью md5, по следующей схеме  md5(cookie.key)
2) Шифруется с помощью AES
3) Если AES не доступен, шифруется с помощью XOR(!)
https://www.dionach.com/blog/codeigniter-session-decoding-
vulnerability
© Digital Security 32
Опасная сериализация
UNTRUSTED INPUT
© Digital Security 33
Опасная сериализация
Untrusted input
USER
Permissions
UserInfo
Statistics
Name
Surname
Email
Type
Picture
String path=“/var/www/”
byte[] getPicture()
{
File file = new File(path, picture);
} return Files.readAllBytes(file.getPath());
Query =“select * from usersPermissions
where type=“+userType;
© Digital Security 34
Опасная сериализация
Untrusted input
USER
Permissions
UserInfo
Statistics
Name
Surname
Email
Type
Picture
String path=“/var/www/”
byte[] getPicture()
{
File file = new File(path, picture);
} return Files.readAllBytes(file.getPath());
Query =“select * from usersPermissions
where type=“+userType;
© Digital Security 35
Опасная сериализация
Untrusted input
USER
Permissions
UserInfo
Statistics
Name
Surname
Email
Type
Picture
String path=“/var/www/”
byte[] getPicture()
{
File file = new File(path, picture);
} return Files.readAllBytes(file.getPath());
Query =“select * from usersPermissions
where type=“+userType;
© Digital Security 36
Опасная сериализация
Untrusted input
USER
Permissions
UserInfo
Statistics
Name
Surname
Email
Type
Picture
String path=“/var/www/”
byte[] getPicture()
{
File file = new File(path, picture);
} return Files.readAllBytes(file.getPath());
Query =“select * from usersPermissions
where type=“+userType;
© Digital Security 37
Опасная сериализация
Untrusted input
USER
Permissions
UserInfo
Statistics
Name
Surname
Email
Type
Picture
String path=“/var/www/”
byte[] getPicture()
{
File file = new File(path, picture);
} return Files.readAllBytes(file.getPath());
Query =“select * from usersPermissions
where type=“+userType;
© Digital Security 38
Опасная сериализация
Untrusted input
USER
Permissions
UserInfo
Statistics
Name
Surname
Email
Type
Picture
String path=“/var/www/”
byte[] getPicture()
{
File file = new File(path, picture);
} return Files.readAllBytes(file.getPath());
Query =“select * from usersPermissions
where type=“+userType;
© Digital Security 39
Опасная сериализация
Untrusted input
Необходимо контролировать и обрабатывать те
данные которые пришли от пользователя!
Они получены из не доверенного источника.
Cериализация не поможет вам справиться с SQL/XSS
И т.д.
© Digital Security 40
Опасная сериализация
Gadget
© Digital Security 41
Опасная сериализация
Gadget
© Digital Security 42
Опасная сериализация
Gadget
ObjectInputStream
readObject()
defaultReadObject()
© Digital Security 43
Опасная сериализация
Gadget
ObjectInputStream
readObject()
defaultReadObject()
CacheManager
readObject()
© Digital Security 44
Опасная сериализация
Gadget
ObjectInputStream
readObject()
defaultReadObject()
CacheManager
readObject()
© Digital Security 45
Опасная сериализация
Gadget
ObjectInputStream
readObject()
defaultReadObject()
CacheManager
readObject()
© Digital Security 46
Опасная сериализация
Gadget
ObjectInputStream
readObject()
defaultReadObject()
CacheManager
readObject() CommandTask
run()
© Digital Security 47
Опасная сериализация
Gadget
ObjectInputStream
readObject()
defaultReadObject()
CacheManager
readObject() CommandTask
run()
Runtime
exec()
“calc.exe”
© Digital Security 48
Опасная сериализация
Gadget
ObjectInputStream
readObject()
defaultReadObject()
CacheManager
readObject() CommandTask
run()
Runtime
exec()
“calc.exe”
© Digital Security 49
Опасная сериализация
YaS
© Digital Security 50
Опасная сериализация
YaS
© Digital Security 51
Опасная сериализация
YaS
public class Gadget1 {
public Map map;
public String key;
protected void
readObject(java.io.ObjectInputStream stream)
throws IOException, ClassNotFoundException
{
stream.defaultReadObject();
String foo = (String) map.get(key);
}
}
© Digital Security 52
Опасная сериализация
YaS
public class Handler0 implements InvocationHandler, Serializable
{
Object invoke(Object proxy, Method method, Object[] args)
{
Runtime.getRuntime().exec(args[0]);
}
}
© Digital Security 53
Опасная сериализация
YaS
© Digital Security 54
Опасная сериализация
YaS
Java-машина во время исполнения может сгенерировать прокси-класс для данного класса
A, т.е. такой класс, который реализует все интерфейсы класса A, но заменяет вызов всех
методов этих интерфейсов на вызов метода InvocationHandler#invoke, где
InvocationHandler - интерфейс JVM, для которого можно определять свои реализации.
Handler0 h = new Handler0();
Map proxy = (Map) Proxy.newProxyInstance(classLoader, new Class<?>[] { Map.class }, h);
Gadget1 g = new Gadget1();
g.map = proxy;
g.key = “<MALICIOUS COMMAND>”;
byte[] bytes = serialize(g);
© Digital Security 55
Опасная сериализация
YaS
readObject()
Handler0 h = new Handler0();
Map proxy = (Map) Proxy.newProxyInstance(classLoader, new Class<?>[] { Map.class }, h);
Gadget1 g = new Gadget1();
g.map = proxy;
g.key = “<MALICIOUS COMMAND>”;
byte[] bytes = serialize(g);
© Digital Security 56
Опасная сериализация
YaS
readObject()
Handler0 h = new Handler0();
Map proxy = (Map) Proxy.newProxyInstance(classLoader, new Class<?>[] { Map.class }, h);
Gadget1 g = new Gadget1();
g.map = proxy;
g.key = “<MALICIOUS COMMAND>”;
byte[] bytes = serialize(g);
map.get() Proxy
© Digital Security 57
Опасная сериализация
YaS
readObject()
Handler0 h = new Handler0();
Map proxy = (Map) Proxy.newProxyInstance(classLoader, new Class<?>[] { Map.class }, h);
Gadget1 g = new Gadget1();
g.map = proxy;
g.key = “<MALICIOUS COMMAND>”;
byte[] bytes = serialize(g);
map.get() Proxy
Gadget0
© Digital Security 58
Опасная сериализация
YaS
readObject()
Handler0 h = new Handler0();
Map proxy = (Map) Proxy.newProxyInstance(classLoader, new Class<?>[] { Map.class }, h);
Gadget1 g = new Gadget1();
g.map = proxy;
g.key = “<MALICIOUS COMMAND>”;
byte[] bytes = serialize(g);
map.get() Proxy
Gadget0 invoke exec
© Digital Security 59
Опасная сериализация
© Digital Security 60
Опасная сериализация
Библиотеки
© Digital Security 61
Опасная сериализация
Библиотеки
© Digital Security 62
Опасная сериализация
Библиотеки
© Digital Security 63
Опасная сериализация
Библиотеки
• Большое количество
библиотек
• Сложно обновлять
© Digital Security 64
Опасная сериализация
И не только Java
© Digital Security 65
Опасная сериализация
PHP
Basic types:
• <type specifier>:<data>;
Arrays:
• a:<count>:{<key>:<value>,…}
Two ways for Objects:
• “O” just like array
• Custom defined by developer
© Digital Security 66
Опасная сериализация
PHP
0000000: 4f3a 343a 2255 7365 7222 3a33 3a7b 733a O:4:"User":3:{s:
0000010: 373a 2269 7361 646d 696e 223b 623a 303b 7:"isadmin";b:0;
0000020: 733a 343a 2270 6c61 6e22 3b73 3a31 393a s:4:"plan";s:19:
0000030: 222f 7661 722f 7777 772f 6e6f 706c 616e "/var/www/noplan
0000040: 2e74 7874 223b 733a 383a 2275 7365 726e .txt";s:8:"usern
0000050: 616d 6522 3b73 3a34 3a22 6761 6265 223b ame";s:4:"gabe";
0000060: 7d0a }.
© Digital Security 67
Опасная сериализация
PHP
0000000: 4f3a 343a 2255 7365 7222 3a33 3a7b 733a O:4:"User":3:{s:
0000010: 373a 2269 7361 646d 696e 223b 623a 303b 7:"isadmin";b:0;
0000020: 733a 343a 2270 6c61 6e22 3b73 3a31 393a s:4:"plan";s:19:
0000030: 222f 7661 722f 7777 772f 6e6f 706c 616e "/var/www/noplan
0000040: 2e74 7874 223b 733a 383a 2275 7365 726e .txt";s:8:"usern
0000050: 616d 6522 3b73 3a34 3a22 6761 6265 223b ame";s:4:"gabe";
0000060: 7d0a }.
© Digital Security 68
Опасная сериализация
PHP
0000000: 4f3a 343a 2255 7365 7222 3a33 3a7b 733a O:4:"User":3:{s:
0000010: 373a 2269 7361 646d 696e 223b 623a 303b 7:"isadmin";b:0;
0000020: 733a 343a 2270 6c61 6e22 3b73 3a31 393a s:4:"plan";s:19:
0000030: 222f 7661 722f 7777 772f 6e6f 706c 616e "/var/www/noplan
0000040: 2e74 7874 223b 733a 383a 2275 7365 726e .txt";s:8:"usern
0000050: 616d 6522 3b73 3a34 3a22 6761 6265 223b ame";s:4:"gabe";
0000060: 7d0a }.
© Digital Security 69
Опасная сериализация
PHP
0000000: 4f3a 343a 2255 7365 7222 3a33 3a7b 733a O:4:"User":3:{s:
0000010: 373a 2269 7361 646d 696e 223b 623a 303b 7:"isadmin";b:0;
0000020: 733a 343a 2270 6c61 6e22 3b73 3a31 393a s:4:"plan";s:19:
0000030: 222f 7661 722f 7777 772f 6e6f 706c 616e "/var/www/noplan
0000040: 2e74 7874 223b 733a 383a 2275 7365 726e .txt";s:8:"usern
0000050: 616d 6522 3b73 3a34 3a22 6761 6265 223b ame";s:4:"gabe";
0000060: 7d0a }.
© Digital Security 70
Опасная сериализация
PHP
0000000: 4f3a 343a 2255 7365 7222 3a33 3a7b 733a O:4:"User":3:{s:
0000010: 373a 2269 7361 646d 696e 223b 623a 303b 7:"isadmin";b:0;
0000020: 733a 343a 2270 6c61 6e22 3b73 3a31 393a s:4:"plan";s:19:
0000030: 222f 7661 722f 7777 772f 6e6f 706c 616e "/var/www/noplan
0000040: 2e74 7874 223b 733a 383a 2275 7365 726e .txt";s:8:"usern
0000050: 616d 6522 3b73 3a34 3a22 6761 6265 223b ame";s:4:"gabe";
0000060: 7d0a }.
© Digital Security 71
Опасная сериализация
Memcached
MEM(e)cached!
© Digital Security 72
Опасная сериализация
Memcached
MEM(e)cached!
© Digital Security 73
Опасная сериализация
Memcached
© Digital Security 74
Опасная сериализация
Memcached
© Digital Security 75
Опасная сериализация
Как искать?
© Digital Security 76
Опасная сериализация
Как искать?
В коде
• ObjectInputStream.readObject
• ObjectInputStream.readUnshared
Find Security Bugs
Serianalyzer
Паттерны:
• Magic bytes 'ac ed 00 05' bytes
• 'rO0' for Base64
• 'application/x-java-serialized-object' for Content-Type header
© Digital Security 77
Опасная сериализация
Что дальше? Ysoserial!
© Digital Security 78
Опасная сериализация
Как можно защититься?
© Digital Security 79
Опасная сериализация
Sandbox
Sandbox – все можно контролировать
• File R/W access
• Process creation
• Network access
• …
Недостатки
«Сложна, сложна, непонятно» - что
есть легитимное действие
• Были найдены уязвимости и
возможности обхода
© Digital Security 80
Опасная сериализация
Проверка имен классов
Проверка имен классов перед десерилизацией
• SerialKiller
• contrast-rO0
Можно использовать готовый парсер или написать свой(!)
© Digital Security 81
Опасная сериализация
Проверка имен классов
public class LookAheadObjectInputStream extends
ObjectInputStream {
@Override
protected Class<?> resolveClass(ObjectStreamClass desc) {
if ( ! desc.getName().equals(“Application.User”) ) {
throw new InvalidClassException(
"Unauthorized deserialization attempt",
desc.getName());
}
return super.resolveClass(desc);
}
}
Получить имя класса
Сравнить с каким-то значением
Profit?
© Digital Security 82
Опасная сериализация
План
Black List
• method1
• method2
Magic methods?
Class x.y.z
accept
reject
blacklisted methods?
yes yes
no no
Called methods
• methodA
• methodB
Analyze
Magic method
© Digital Security 83
Опасная сериализация
Whitelist vs Blacklist
Не использовать десеарилизацию данных из не доверенных
источников(!!!!)
Whitelist
Определить все классы, которые могут быть десериализованными
BlackList
Определить список классов, которые нельзя десериализовать
• Возможно обойти
© Digital Security 84
Опасная сериализация
Спасибо!

Contenu connexe

Tendances

Анализ угроз с помощью Cisco Threat Defense
Анализ угроз с помощью Cisco Threat DefenseАнализ угроз с помощью Cisco Threat Defense
Анализ угроз с помощью Cisco Threat DefenseCisco Russia
 
Физическая безопасность от Cisco: новинки компании, новые реалии рынка, измен...
Физическая безопасность от Cisco: новинки компании, новые реалии рынка, измен...Физическая безопасность от Cisco: новинки компании, новые реалии рынка, измен...
Физическая безопасность от Cisco: новинки компании, новые реалии рынка, измен...Cisco Russia
 
Все решения Cisco по информационной безопасности за 1 час
Все решения Cisco по информационной безопасности за 1 часВсе решения Cisco по информационной безопасности за 1 час
Все решения Cisco по информационной безопасности за 1 часCisco Russia
 
Cisco, держи марку! Серия №9
 Cisco, держи марку! Серия №9 Cisco, держи марку! Серия №9
Cisco, держи марку! Серия №9Компания УЦСБ
 
Краткий обзор Cisco Cyber Threat Defense
Краткий обзор Cisco Cyber Threat DefenseКраткий обзор Cisco Cyber Threat Defense
Краткий обзор Cisco Cyber Threat DefenseCisco Russia
 
Check point держи марку! Серия №1
Check point  держи марку! Серия №1Check point  держи марку! Серия №1
Check point держи марку! Серия №1Компания УЦСБ
 
Подробный обзор Cisco ASA with FirePOWER Services
Подробный обзор Cisco ASA with FirePOWER ServicesПодробный обзор Cisco ASA with FirePOWER Services
Подробный обзор Cisco ASA with FirePOWER ServicesCisco Russia
 
Контроль и мониторинг периметра сети
Контроль и мониторинг периметра сетиКонтроль и мониторинг периметра сети
Контроль и мониторинг периметра сетиCisco Russia
 
конфидент
конфидентконфидент
конфидентExpolink
 
Зарисовки о том, как устроена кибербезопасность в Cisco
Зарисовки о том, как устроена кибербезопасность в CiscoЗарисовки о том, как устроена кибербезопасность в Cisco
Зарисовки о том, как устроена кибербезопасность в CiscoAleksey Lukatskiy
 
Кибербезопасность Industrial IoT: мировые тенденции и российскиие реалии
Кибербезопасность Industrial IoT: мировые тенденции и российскиие реалииКибербезопасность Industrial IoT: мировые тенденции и российскиие реалии
Кибербезопасность Industrial IoT: мировые тенденции и российскиие реалииAleksey Lukatskiy
 
Откуда и какие брать данные Threat Intelligence для SOC?
Откуда и какие брать данные Threat Intelligence для SOC?Откуда и какие брать данные Threat Intelligence для SOC?
Откуда и какие брать данные Threat Intelligence для SOC?Aleksey Lukatskiy
 
Анатомия DDoS-атак, или Как предупредить и обезвредить нападения злоумышленников
Анатомия DDoS-атак, или Как предупредить и обезвредить нападения злоумышленниковАнатомия DDoS-атак, или Как предупредить и обезвредить нападения злоумышленников
Анатомия DDoS-атак, или Как предупредить и обезвредить нападения злоумышленниковКРОК
 
Cisco Advanced Malware Protection для борьбы с вредоносным кодом
Cisco Advanced Malware Protection для борьбы с вредоносным кодомCisco Advanced Malware Protection для борьбы с вредоносным кодом
Cisco Advanced Malware Protection для борьбы с вредоносным кодомCisco Russia
 
Архитектура защищенного периметра
Архитектура защищенного периметраАрхитектура защищенного периметра
Архитектура защищенного периметраCisco Russia
 
Анализ и устранение проблем при внедрении сервисов Firepower на устройствах C...
Анализ и устранение проблем при внедрении сервисов Firepower на устройствах C...Анализ и устранение проблем при внедрении сервисов Firepower на устройствах C...
Анализ и устранение проблем при внедрении сервисов Firepower на устройствах C...Cisco Russia
 
Проблемы безопасной разработки и поддержки импортных средств защиты информации
Проблемы безопасной разработки и поддержки импортных средств защиты информацииПроблемы безопасной разработки и поддержки импортных средств защиты информации
Проблемы безопасной разработки и поддержки импортных средств защиты информацииAleksey Lukatskiy
 
Анатомия внешней атаки
Анатомия внешней атакиАнатомия внешней атаки
Анатомия внешней атакиAleksey Lukatskiy
 
Cognitive Threat Analytics
Cognitive Threat AnalyticsCognitive Threat Analytics
Cognitive Threat AnalyticsCisco Russia
 
Защита от современных и целенаправленных атак
Защита от современных и целенаправленных атакЗащита от современных и целенаправленных атак
Защита от современных и целенаправленных атакCisco Russia
 

Tendances (20)

Анализ угроз с помощью Cisco Threat Defense
Анализ угроз с помощью Cisco Threat DefenseАнализ угроз с помощью Cisco Threat Defense
Анализ угроз с помощью Cisco Threat Defense
 
Физическая безопасность от Cisco: новинки компании, новые реалии рынка, измен...
Физическая безопасность от Cisco: новинки компании, новые реалии рынка, измен...Физическая безопасность от Cisco: новинки компании, новые реалии рынка, измен...
Физическая безопасность от Cisco: новинки компании, новые реалии рынка, измен...
 
Все решения Cisco по информационной безопасности за 1 час
Все решения Cisco по информационной безопасности за 1 часВсе решения Cisco по информационной безопасности за 1 час
Все решения Cisco по информационной безопасности за 1 час
 
Cisco, держи марку! Серия №9
 Cisco, держи марку! Серия №9 Cisco, держи марку! Серия №9
Cisco, держи марку! Серия №9
 
Краткий обзор Cisco Cyber Threat Defense
Краткий обзор Cisco Cyber Threat DefenseКраткий обзор Cisco Cyber Threat Defense
Краткий обзор Cisco Cyber Threat Defense
 
Check point держи марку! Серия №1
Check point  держи марку! Серия №1Check point  держи марку! Серия №1
Check point держи марку! Серия №1
 
Подробный обзор Cisco ASA with FirePOWER Services
Подробный обзор Cisco ASA with FirePOWER ServicesПодробный обзор Cisco ASA with FirePOWER Services
Подробный обзор Cisco ASA with FirePOWER Services
 
Контроль и мониторинг периметра сети
Контроль и мониторинг периметра сетиКонтроль и мониторинг периметра сети
Контроль и мониторинг периметра сети
 
конфидент
конфидентконфидент
конфидент
 
Зарисовки о том, как устроена кибербезопасность в Cisco
Зарисовки о том, как устроена кибербезопасность в CiscoЗарисовки о том, как устроена кибербезопасность в Cisco
Зарисовки о том, как устроена кибербезопасность в Cisco
 
Кибербезопасность Industrial IoT: мировые тенденции и российскиие реалии
Кибербезопасность Industrial IoT: мировые тенденции и российскиие реалииКибербезопасность Industrial IoT: мировые тенденции и российскиие реалии
Кибербезопасность Industrial IoT: мировые тенденции и российскиие реалии
 
Откуда и какие брать данные Threat Intelligence для SOC?
Откуда и какие брать данные Threat Intelligence для SOC?Откуда и какие брать данные Threat Intelligence для SOC?
Откуда и какие брать данные Threat Intelligence для SOC?
 
Анатомия DDoS-атак, или Как предупредить и обезвредить нападения злоумышленников
Анатомия DDoS-атак, или Как предупредить и обезвредить нападения злоумышленниковАнатомия DDoS-атак, или Как предупредить и обезвредить нападения злоумышленников
Анатомия DDoS-атак, или Как предупредить и обезвредить нападения злоумышленников
 
Cisco Advanced Malware Protection для борьбы с вредоносным кодом
Cisco Advanced Malware Protection для борьбы с вредоносным кодомCisco Advanced Malware Protection для борьбы с вредоносным кодом
Cisco Advanced Malware Protection для борьбы с вредоносным кодом
 
Архитектура защищенного периметра
Архитектура защищенного периметраАрхитектура защищенного периметра
Архитектура защищенного периметра
 
Анализ и устранение проблем при внедрении сервисов Firepower на устройствах C...
Анализ и устранение проблем при внедрении сервисов Firepower на устройствах C...Анализ и устранение проблем при внедрении сервисов Firepower на устройствах C...
Анализ и устранение проблем при внедрении сервисов Firepower на устройствах C...
 
Проблемы безопасной разработки и поддержки импортных средств защиты информации
Проблемы безопасной разработки и поддержки импортных средств защиты информацииПроблемы безопасной разработки и поддержки импортных средств защиты информации
Проблемы безопасной разработки и поддержки импортных средств защиты информации
 
Анатомия внешней атаки
Анатомия внешней атакиАнатомия внешней атаки
Анатомия внешней атаки
 
Cognitive Threat Analytics
Cognitive Threat AnalyticsCognitive Threat Analytics
Cognitive Threat Analytics
 
Защита от современных и целенаправленных атак
Защита от современных и целенаправленных атакЗащита от современных и целенаправленных атак
Защита от современных и целенаправленных атак
 

Similaire à Опасная сериализация / Иван Юшкевич (Digital Security)

Архитектура защищенного периметра
Архитектура защищенного периметраАрхитектура защищенного периметра
Архитектура защищенного периметраCisco Russia
 
История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...Dmitry Evteev
 
Построение защищенного Интернет-периметра
Построение защищенного Интернет-периметраПостроение защищенного Интернет-периметра
Построение защищенного Интернет-периметраCisco Russia
 
From ERP to SCADA and back
From ERP to SCADA and backFrom ERP to SCADA and back
From ERP to SCADA and backqqlan
 
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условияхАнализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условияхDmitry Evteev
 
Pt devteev-risspa
Pt devteev-risspaPt devteev-risspa
Pt devteev-risspayaevents
 
построение системы адаптивной защиты от угроз иб Савин и
построение системы адаптивной защиты от угроз иб Савин ипостроение системы адаптивной защиты от угроз иб Савин и
построение системы адаптивной защиты от угроз иб Савин иDiana Frolova
 
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетикеАлександр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетикеKaspersky
 
5 советов, от которых зависит успешность вашего SOC
5 советов, от которых зависит успешность вашего SOC5 советов, от которых зависит успешность вашего SOC
5 советов, от которых зависит успешность вашего SOCAleksey Lukatskiy
 
Информационная безопасность и web-приложения
Информационная безопасность и web-приложенияИнформационная безопасность и web-приложения
Информационная безопасность и web-приложенияMaxim Krentovskiy
 
VMware User Group Community Russia, Константин Пичугов
VMware User Group Community Russia, Константин ПичуговVMware User Group Community Russia, Константин Пичугов
VMware User Group Community Russia, Константин Пичуговmikhail.mikheev
 
Cisco StealthWatch. Использование телеметрии для решения проблемы зашифрованн...
Cisco StealthWatch. Использование телеметрии для решения проблемы зашифрованн...Cisco StealthWatch. Использование телеметрии для решения проблемы зашифрованн...
Cisco StealthWatch. Использование телеметрии для решения проблемы зашифрованн...Cisco Russia
 
Занятие № 10. Учетные записи пользователей. Обслуживание дисков. Настройка па...
Занятие № 10. Учетные записи пользователей. Обслуживание дисков. Настройка па...Занятие № 10. Учетные записи пользователей. Обслуживание дисков. Настройка па...
Занятие № 10. Учетные записи пользователей. Обслуживание дисков. Настройка па...Aibek9
 
(Не)безопасный Frontend / Сергей Белов (Digital Security)
(Не)безопасный Frontend / Сергей Белов (Digital Security)(Не)безопасный Frontend / Сергей Белов (Digital Security)
(Не)безопасный Frontend / Сергей Белов (Digital Security)Ontico
 
ITSF 2014 ICS Security
ITSF 2014 ICS SecurityITSF 2014 ICS Security
ITSF 2014 ICS SecurityIlya Karpov
 
Безопасность Drupal сайтов
Безопасность Drupal сайтовБезопасность Drupal сайтов
Безопасность Drupal сайтовEugene Fidelin
 
разработка безопасного кода
разработка безопасного кодаразработка безопасного кода
разработка безопасного кодаAndrey Somsikov
 
Нюансы функционирования и эксплуатации Cisco SOC
Нюансы функционирования и эксплуатации Cisco SOCНюансы функционирования и эксплуатации Cisco SOC
Нюансы функционирования и эксплуатации Cisco SOCAleksey Lukatskiy
 
Cisco Threat Defense (Cisco Stealthwatch)
Cisco Threat Defense (Cisco Stealthwatch)Cisco Threat Defense (Cisco Stealthwatch)
Cisco Threat Defense (Cisco Stealthwatch)Cisco Russia
 
Популярні способи зломів та шахрайські схеми
Популярні способи зломів та шахрайські схемиПопулярні способи зломів та шахрайські схеми
Популярні способи зломів та шахрайські схемиAvivi Academy
 

Similaire à Опасная сериализация / Иван Юшкевич (Digital Security) (20)

Архитектура защищенного периметра
Архитектура защищенного периметраАрхитектура защищенного периметра
Архитектура защищенного периметра
 
История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...
 
Построение защищенного Интернет-периметра
Построение защищенного Интернет-периметраПостроение защищенного Интернет-периметра
Построение защищенного Интернет-периметра
 
From ERP to SCADA and back
From ERP to SCADA and backFrom ERP to SCADA and back
From ERP to SCADA and back
 
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условияхАнализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
 
Pt devteev-risspa
Pt devteev-risspaPt devteev-risspa
Pt devteev-risspa
 
построение системы адаптивной защиты от угроз иб Савин и
построение системы адаптивной защиты от угроз иб Савин ипостроение системы адаптивной защиты от угроз иб Савин и
построение системы адаптивной защиты от угроз иб Савин и
 
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетикеАлександр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
 
5 советов, от которых зависит успешность вашего SOC
5 советов, от которых зависит успешность вашего SOC5 советов, от которых зависит успешность вашего SOC
5 советов, от которых зависит успешность вашего SOC
 
Информационная безопасность и web-приложения
Информационная безопасность и web-приложенияИнформационная безопасность и web-приложения
Информационная безопасность и web-приложения
 
VMware User Group Community Russia, Константин Пичугов
VMware User Group Community Russia, Константин ПичуговVMware User Group Community Russia, Константин Пичугов
VMware User Group Community Russia, Константин Пичугов
 
Cisco StealthWatch. Использование телеметрии для решения проблемы зашифрованн...
Cisco StealthWatch. Использование телеметрии для решения проблемы зашифрованн...Cisco StealthWatch. Использование телеметрии для решения проблемы зашифрованн...
Cisco StealthWatch. Использование телеметрии для решения проблемы зашифрованн...
 
Занятие № 10. Учетные записи пользователей. Обслуживание дисков. Настройка па...
Занятие № 10. Учетные записи пользователей. Обслуживание дисков. Настройка па...Занятие № 10. Учетные записи пользователей. Обслуживание дисков. Настройка па...
Занятие № 10. Учетные записи пользователей. Обслуживание дисков. Настройка па...
 
(Не)безопасный Frontend / Сергей Белов (Digital Security)
(Не)безопасный Frontend / Сергей Белов (Digital Security)(Не)безопасный Frontend / Сергей Белов (Digital Security)
(Не)безопасный Frontend / Сергей Белов (Digital Security)
 
ITSF 2014 ICS Security
ITSF 2014 ICS SecurityITSF 2014 ICS Security
ITSF 2014 ICS Security
 
Безопасность Drupal сайтов
Безопасность Drupal сайтовБезопасность Drupal сайтов
Безопасность Drupal сайтов
 
разработка безопасного кода
разработка безопасного кодаразработка безопасного кода
разработка безопасного кода
 
Нюансы функционирования и эксплуатации Cisco SOC
Нюансы функционирования и эксплуатации Cisco SOCНюансы функционирования и эксплуатации Cisco SOC
Нюансы функционирования и эксплуатации Cisco SOC
 
Cisco Threat Defense (Cisco Stealthwatch)
Cisco Threat Defense (Cisco Stealthwatch)Cisco Threat Defense (Cisco Stealthwatch)
Cisco Threat Defense (Cisco Stealthwatch)
 
Популярні способи зломів та шахрайські схеми
Популярні способи зломів та шахрайські схемиПопулярні способи зломів та шахрайські схеми
Популярні способи зломів та шахрайські схеми
 

Plus de Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

Plus de Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Опасная сериализация / Иван Юшкевич (Digital Security)

  • 1. © Digital Security Юшкевич Иван Опасная сериализация
  • 2. © Digital Security 2 Опасная сериализация Ohw ma i?
  • 3. © Digital Security 3 Опасная сериализация Agenda • Что такое сериализация  Зачем, для чего, почему • Уязвимости (calc.exe time) • Как искать • Как защититься • … • Profit(?)
  • 4. © Digital Security 4 Опасная сериализация Сериализация Сериализация - это процесс сохранения состояния объекта в последовательность байт. Десериализация - это процесс восстановления объекта, из этих байт. Обратный процесс сериализация(!) Формат представления: Бинарный: Java Serialization, Ruby Marshal, Protobuf, Thrift, Avro, MS-NRBF, Android Binder/Parcel, IIOP Смешанный: PHP Serialization, Python pickle, Binary XML/JSON «Читаемый»: XML, JSON, YAML
  • 5. © Digital Security 5 Опасная сериализация Сериализация • Протоколы передачи данных: RMI (Remote Method Invocation) JMX (Java Management Extension) JMS (Java Messaging System) • Обмен «объектами» между двумя приложениями • Кэширование • Cookie, API-токены • Сохранение и восстановление объекта
  • 6. © Digital Security 6 Опасная сериализация Сериализация
  • 7. © Digital Security 7 Опасная сериализация Сериализация
  • 8. © Digital Security 8 Опасная сериализация Сериализация • readObject() • readResolve() • validateObject() • readObjectNoData() • readExternal() • finalize()
  • 9. © Digital Security 9 Опасная сериализация Сериализация public class Gadget0 { public String command; protected void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException { stream.defaultReadObject(); Runtime.getRuntime().exec(command); } }
  • 10. © Digital Security 10 Опасная сериализация Сериализация public class Gadget0 { public String command; protected void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException { stream.defaultReadObject(); Runtime.getRuntime().exec(command); } }
  • 11. © Digital Security 11 Опасная сериализация Как это сделано?
  • 12. © Digital Security 12 Опасная сериализация Как это сделано? public static void main(String[] args) { User user = new User(); user.name = "steph"; user.isAdmin=false; FileOutputStream fos = new FileOutputStream("object.ser"); ObjectOutputStream os = new ObjectOutputStream(fos); os.writeObject(user); os.close(); FileInputStream fis = new FileInputStream("object.ser"); ObjectInputStream ois = new ObjectInputStream(fis); User objectFromDisk = (User)ois.readObject(); System.out.println(objectFromDisk.name); ois.close(); } public class User implements Serializable{ public String name; public boolean isAdmin; public String picture; public User() { } }
  • 13. © Digital Security 13 Опасная сериализация Как это сделано? AC ED: STREAM_MAGIC – указание , что это сериализованные данные
  • 14. © Digital Security 14 Опасная сериализация Как это сделано? AC ED: STREAM_MAGIC – указание , что это сериализованные данные 00 05: STREAM_VERSION. – версия
  • 15. © Digital Security 15 Опасная сериализация Как это сделано? AC ED: STREAM_MAGIC – указание , что это сериализованные данные 00 05: STREAM_VERSION. – версия 0x73: TC_OBJECT. – новый объект
  • 16. © Digital Security 16 Опасная сериализация Как это сделано? AC ED: STREAM_MAGIC – указание , что это сериализованные данные 00 05: STREAM_VERSION. – версия 0x73: TC_OBJECT. – новый объект 0x72: TC_CLASSDESC. Обозначение нового класса.
  • 17. © Digital Security 17 Опасная сериализация Как это сделано? AC ED: STREAM_MAGIC – указание , что это сериализованные данные 00 05: STREAM_VERSION. – версия 0x73: TC_OBJECT. – новый объект 0x72: TC_CLASSDESC. Обозначение нового класса. 00 08 – длина имени класса
  • 18. © Digital Security 18 Опасная сериализация Как это сделано? AC ED: STREAM_MAGIC – указание , что это сериализованные данные 00 05: STREAM_VERSION. – версия 0x73: TC_OBJECT. – новый объект 0x72: TC_CLASSDESC. Обозначение нового класса. 00 08 – длина имени класса Имя класса UID класса
  • 19. © Digital Security 19 Опасная сериализация Как это сделано? AC ED: STREAM_MAGIC – указание , что это сериализованные данные 00 05: STREAM_VERSION. – версия 0x73: TC_OBJECT. – новый объект 0x72: TC_CLASSDESC. Обозначение нового класса. 00 08 – длина имени класса Имя класса UID класса 02 – поддерживает сериализацию 00 03 – количество полей
  • 20. © Digital Security 20 Опасная сериализация Как это сделано? AC ED: STREAM_MAGIC – указание , что это сериализованные данные 00 05: STREAM_VERSION. – версия 0x73: TC_OBJECT. – новый объект 0x72: TC_CLASSDESC. Обозначение нового класса. 00 08 – длина имени класса Имя класса UID класса 02 – поддерживает сериализацию 00 03 – количество полей 5A – тип поля 00 07 - Длина имени поля
  • 21. © Digital Security 21 Опасная сериализация Уязвимости?
  • 22. © Digital Security 22 Опасная сериализация Уязвимости 1) Нарушение логики работы программы 2) Ошибки связанные с валидацией пользовательских данных 3) RCE • Даже когда её не ждешь… А все почему? Данные приходят из НЕ ДОВЕРЕННОГО источника.
  • 23. © Digital Security 23 Опасная сериализация Уязвимости Date Type Product Researcher(s) Apr 2005 DOS JRE Marc Schönefeld Aug 2008 Applet->RCE JRE Sami Koivu Apr 2010 Applet->RCE JRE Sami Koivu Mar 2010 DOS Sun Java Web Console Luca Carettoni Sept 2011 RCE Spring Framework Wouter Coekaerts Oct 2012 RCE IBM Cognos BI Pierre Ernst Feb 2013 File Write->RCE Apache OpenJPA Pierre Ernst Mar 2013 File Write->RCE Apache Tomcat Pierre Ernst July 2015 RCE Apache Groovy "cpnrodzc7" Aug 2015 Buffer Overflow->RCE Android Or Peles & Roee Hay Nov 2015 RCE Apache Commons Collections Chris Frohoff & Gabriel Lawrence Nov 2015 DOS JRE Wouter Coekaerts
  • 24. © Digital Security 24 Опасная сериализация Уязвимости Date Type Product Researcher(s) Apr 2005 DOS JRE Marc Schönefeld Aug 2008 Applet->RCE JRE Sami Koivu Apr 2010 Applet->RCE JRE Sami Koivu Mar 2010 DOS Sun Java Web Console Luca Carettoni Sept 2011 RCE Spring Framework Wouter Coekaerts Oct 2012 RCE IBM Cognos BI Pierre Ernst Feb 2013 File Write->RCE Apache OpenJPA Pierre Ernst Mar 2013 File Write->RCE Apache Tomcat Pierre Ernst July 2015 RCE Apache Groovy "cpnrodzc7" Aug 2015 Buffer Overflow->RCE Android Or Peles & Roee Hay Nov 2015 RCE Apache Commons Collections Chris Frohoff & Gabriel Lawrence Nov 2015 DOS JRE Wouter Coekaerts
  • 25. © Digital Security 25 Опасная сериализация Почему так? Может ввести в заблуждение из-за необычного формата: • Хранение и передача данных - безопасны • Бинарный формат непонятен, сложно подделать • Сериализация безопасна Это всего лишь формат представления данных
  • 26. © Digital Security 26 Опасная сериализация Пример Cookie: user=base64(serialized(User.class))
  • 27. © Digital Security 27 Опасная сериализация Пример Cookie: user=base64(serialized(User.class))
  • 28. © Digital Security 28 Опасная сериализация Пример
  • 29. © Digital Security 29 Опасная сериализация Пример
  • 30. © Digital Security 30 Опасная сериализация IRL sample
  • 31. © Digital Security 31 Опасная сериализация IRL 1) Cookie подписывается с помощью md5, по следующей схеме  md5(cookie.key) 2) Шифруется с помощью AES 3) Если AES не доступен, шифруется с помощью XOR(!) https://www.dionach.com/blog/codeigniter-session-decoding- vulnerability
  • 32. © Digital Security 32 Опасная сериализация UNTRUSTED INPUT
  • 33. © Digital Security 33 Опасная сериализация Untrusted input USER Permissions UserInfo Statistics Name Surname Email Type Picture String path=“/var/www/” byte[] getPicture() { File file = new File(path, picture); } return Files.readAllBytes(file.getPath()); Query =“select * from usersPermissions where type=“+userType;
  • 34. © Digital Security 34 Опасная сериализация Untrusted input USER Permissions UserInfo Statistics Name Surname Email Type Picture String path=“/var/www/” byte[] getPicture() { File file = new File(path, picture); } return Files.readAllBytes(file.getPath()); Query =“select * from usersPermissions where type=“+userType;
  • 35. © Digital Security 35 Опасная сериализация Untrusted input USER Permissions UserInfo Statistics Name Surname Email Type Picture String path=“/var/www/” byte[] getPicture() { File file = new File(path, picture); } return Files.readAllBytes(file.getPath()); Query =“select * from usersPermissions where type=“+userType;
  • 36. © Digital Security 36 Опасная сериализация Untrusted input USER Permissions UserInfo Statistics Name Surname Email Type Picture String path=“/var/www/” byte[] getPicture() { File file = new File(path, picture); } return Files.readAllBytes(file.getPath()); Query =“select * from usersPermissions where type=“+userType;
  • 37. © Digital Security 37 Опасная сериализация Untrusted input USER Permissions UserInfo Statistics Name Surname Email Type Picture String path=“/var/www/” byte[] getPicture() { File file = new File(path, picture); } return Files.readAllBytes(file.getPath()); Query =“select * from usersPermissions where type=“+userType;
  • 38. © Digital Security 38 Опасная сериализация Untrusted input USER Permissions UserInfo Statistics Name Surname Email Type Picture String path=“/var/www/” byte[] getPicture() { File file = new File(path, picture); } return Files.readAllBytes(file.getPath()); Query =“select * from usersPermissions where type=“+userType;
  • 39. © Digital Security 39 Опасная сериализация Untrusted input Необходимо контролировать и обрабатывать те данные которые пришли от пользователя! Они получены из не доверенного источника. Cериализация не поможет вам справиться с SQL/XSS И т.д.
  • 40. © Digital Security 40 Опасная сериализация Gadget
  • 41. © Digital Security 41 Опасная сериализация Gadget
  • 42. © Digital Security 42 Опасная сериализация Gadget ObjectInputStream readObject() defaultReadObject()
  • 43. © Digital Security 43 Опасная сериализация Gadget ObjectInputStream readObject() defaultReadObject() CacheManager readObject()
  • 44. © Digital Security 44 Опасная сериализация Gadget ObjectInputStream readObject() defaultReadObject() CacheManager readObject()
  • 45. © Digital Security 45 Опасная сериализация Gadget ObjectInputStream readObject() defaultReadObject() CacheManager readObject()
  • 46. © Digital Security 46 Опасная сериализация Gadget ObjectInputStream readObject() defaultReadObject() CacheManager readObject() CommandTask run()
  • 47. © Digital Security 47 Опасная сериализация Gadget ObjectInputStream readObject() defaultReadObject() CacheManager readObject() CommandTask run() Runtime exec() “calc.exe”
  • 48. © Digital Security 48 Опасная сериализация Gadget ObjectInputStream readObject() defaultReadObject() CacheManager readObject() CommandTask run() Runtime exec() “calc.exe”
  • 49. © Digital Security 49 Опасная сериализация YaS
  • 50. © Digital Security 50 Опасная сериализация YaS
  • 51. © Digital Security 51 Опасная сериализация YaS public class Gadget1 { public Map map; public String key; protected void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException { stream.defaultReadObject(); String foo = (String) map.get(key); } }
  • 52. © Digital Security 52 Опасная сериализация YaS public class Handler0 implements InvocationHandler, Serializable { Object invoke(Object proxy, Method method, Object[] args) { Runtime.getRuntime().exec(args[0]); } }
  • 53. © Digital Security 53 Опасная сериализация YaS
  • 54. © Digital Security 54 Опасная сериализация YaS Java-машина во время исполнения может сгенерировать прокси-класс для данного класса A, т.е. такой класс, который реализует все интерфейсы класса A, но заменяет вызов всех методов этих интерфейсов на вызов метода InvocationHandler#invoke, где InvocationHandler - интерфейс JVM, для которого можно определять свои реализации. Handler0 h = new Handler0(); Map proxy = (Map) Proxy.newProxyInstance(classLoader, new Class<?>[] { Map.class }, h); Gadget1 g = new Gadget1(); g.map = proxy; g.key = “<MALICIOUS COMMAND>”; byte[] bytes = serialize(g);
  • 55. © Digital Security 55 Опасная сериализация YaS readObject() Handler0 h = new Handler0(); Map proxy = (Map) Proxy.newProxyInstance(classLoader, new Class<?>[] { Map.class }, h); Gadget1 g = new Gadget1(); g.map = proxy; g.key = “<MALICIOUS COMMAND>”; byte[] bytes = serialize(g);
  • 56. © Digital Security 56 Опасная сериализация YaS readObject() Handler0 h = new Handler0(); Map proxy = (Map) Proxy.newProxyInstance(classLoader, new Class<?>[] { Map.class }, h); Gadget1 g = new Gadget1(); g.map = proxy; g.key = “<MALICIOUS COMMAND>”; byte[] bytes = serialize(g); map.get() Proxy
  • 57. © Digital Security 57 Опасная сериализация YaS readObject() Handler0 h = new Handler0(); Map proxy = (Map) Proxy.newProxyInstance(classLoader, new Class<?>[] { Map.class }, h); Gadget1 g = new Gadget1(); g.map = proxy; g.key = “<MALICIOUS COMMAND>”; byte[] bytes = serialize(g); map.get() Proxy Gadget0
  • 58. © Digital Security 58 Опасная сериализация YaS readObject() Handler0 h = new Handler0(); Map proxy = (Map) Proxy.newProxyInstance(classLoader, new Class<?>[] { Map.class }, h); Gadget1 g = new Gadget1(); g.map = proxy; g.key = “<MALICIOUS COMMAND>”; byte[] bytes = serialize(g); map.get() Proxy Gadget0 invoke exec
  • 59. © Digital Security 59 Опасная сериализация
  • 60. © Digital Security 60 Опасная сериализация Библиотеки
  • 61. © Digital Security 61 Опасная сериализация Библиотеки
  • 62. © Digital Security 62 Опасная сериализация Библиотеки
  • 63. © Digital Security 63 Опасная сериализация Библиотеки • Большое количество библиотек • Сложно обновлять
  • 64. © Digital Security 64 Опасная сериализация И не только Java
  • 65. © Digital Security 65 Опасная сериализация PHP Basic types: • <type specifier>:<data>; Arrays: • a:<count>:{<key>:<value>,…} Two ways for Objects: • “O” just like array • Custom defined by developer
  • 66. © Digital Security 66 Опасная сериализация PHP 0000000: 4f3a 343a 2255 7365 7222 3a33 3a7b 733a O:4:"User":3:{s: 0000010: 373a 2269 7361 646d 696e 223b 623a 303b 7:"isadmin";b:0; 0000020: 733a 343a 2270 6c61 6e22 3b73 3a31 393a s:4:"plan";s:19: 0000030: 222f 7661 722f 7777 772f 6e6f 706c 616e "/var/www/noplan 0000040: 2e74 7874 223b 733a 383a 2275 7365 726e .txt";s:8:"usern 0000050: 616d 6522 3b73 3a34 3a22 6761 6265 223b ame";s:4:"gabe"; 0000060: 7d0a }.
  • 67. © Digital Security 67 Опасная сериализация PHP 0000000: 4f3a 343a 2255 7365 7222 3a33 3a7b 733a O:4:"User":3:{s: 0000010: 373a 2269 7361 646d 696e 223b 623a 303b 7:"isadmin";b:0; 0000020: 733a 343a 2270 6c61 6e22 3b73 3a31 393a s:4:"plan";s:19: 0000030: 222f 7661 722f 7777 772f 6e6f 706c 616e "/var/www/noplan 0000040: 2e74 7874 223b 733a 383a 2275 7365 726e .txt";s:8:"usern 0000050: 616d 6522 3b73 3a34 3a22 6761 6265 223b ame";s:4:"gabe"; 0000060: 7d0a }.
  • 68. © Digital Security 68 Опасная сериализация PHP 0000000: 4f3a 343a 2255 7365 7222 3a33 3a7b 733a O:4:"User":3:{s: 0000010: 373a 2269 7361 646d 696e 223b 623a 303b 7:"isadmin";b:0; 0000020: 733a 343a 2270 6c61 6e22 3b73 3a31 393a s:4:"plan";s:19: 0000030: 222f 7661 722f 7777 772f 6e6f 706c 616e "/var/www/noplan 0000040: 2e74 7874 223b 733a 383a 2275 7365 726e .txt";s:8:"usern 0000050: 616d 6522 3b73 3a34 3a22 6761 6265 223b ame";s:4:"gabe"; 0000060: 7d0a }.
  • 69. © Digital Security 69 Опасная сериализация PHP 0000000: 4f3a 343a 2255 7365 7222 3a33 3a7b 733a O:4:"User":3:{s: 0000010: 373a 2269 7361 646d 696e 223b 623a 303b 7:"isadmin";b:0; 0000020: 733a 343a 2270 6c61 6e22 3b73 3a31 393a s:4:"plan";s:19: 0000030: 222f 7661 722f 7777 772f 6e6f 706c 616e "/var/www/noplan 0000040: 2e74 7874 223b 733a 383a 2275 7365 726e .txt";s:8:"usern 0000050: 616d 6522 3b73 3a34 3a22 6761 6265 223b ame";s:4:"gabe"; 0000060: 7d0a }.
  • 70. © Digital Security 70 Опасная сериализация PHP 0000000: 4f3a 343a 2255 7365 7222 3a33 3a7b 733a O:4:"User":3:{s: 0000010: 373a 2269 7361 646d 696e 223b 623a 303b 7:"isadmin";b:0; 0000020: 733a 343a 2270 6c61 6e22 3b73 3a31 393a s:4:"plan";s:19: 0000030: 222f 7661 722f 7777 772f 6e6f 706c 616e "/var/www/noplan 0000040: 2e74 7874 223b 733a 383a 2275 7365 726e .txt";s:8:"usern 0000050: 616d 6522 3b73 3a34 3a22 6761 6265 223b ame";s:4:"gabe"; 0000060: 7d0a }.
  • 71. © Digital Security 71 Опасная сериализация Memcached MEM(e)cached!
  • 72. © Digital Security 72 Опасная сериализация Memcached MEM(e)cached!
  • 73. © Digital Security 73 Опасная сериализация Memcached
  • 74. © Digital Security 74 Опасная сериализация Memcached
  • 75. © Digital Security 75 Опасная сериализация Как искать?
  • 76. © Digital Security 76 Опасная сериализация Как искать? В коде • ObjectInputStream.readObject • ObjectInputStream.readUnshared Find Security Bugs Serianalyzer Паттерны: • Magic bytes 'ac ed 00 05' bytes • 'rO0' for Base64 • 'application/x-java-serialized-object' for Content-Type header
  • 77. © Digital Security 77 Опасная сериализация Что дальше? Ysoserial!
  • 78. © Digital Security 78 Опасная сериализация Как можно защититься?
  • 79. © Digital Security 79 Опасная сериализация Sandbox Sandbox – все можно контролировать • File R/W access • Process creation • Network access • … Недостатки «Сложна, сложна, непонятно» - что есть легитимное действие • Были найдены уязвимости и возможности обхода
  • 80. © Digital Security 80 Опасная сериализация Проверка имен классов Проверка имен классов перед десерилизацией • SerialKiller • contrast-rO0 Можно использовать готовый парсер или написать свой(!)
  • 81. © Digital Security 81 Опасная сериализация Проверка имен классов public class LookAheadObjectInputStream extends ObjectInputStream { @Override protected Class<?> resolveClass(ObjectStreamClass desc) { if ( ! desc.getName().equals(“Application.User”) ) { throw new InvalidClassException( "Unauthorized deserialization attempt", desc.getName()); } return super.resolveClass(desc); } } Получить имя класса Сравнить с каким-то значением Profit?
  • 82. © Digital Security 82 Опасная сериализация План Black List • method1 • method2 Magic methods? Class x.y.z accept reject blacklisted methods? yes yes no no Called methods • methodA • methodB Analyze Magic method
  • 83. © Digital Security 83 Опасная сериализация Whitelist vs Blacklist Не использовать десеарилизацию данных из не доверенных источников(!!!!) Whitelist Определить все классы, которые могут быть десериализованными BlackList Определить список классов, которые нельзя десериализовать • Возможно обойти
  • 84. © Digital Security 84 Опасная сериализация Спасибо!

Notes de l'éditeur

  1. Теория. Прочитать. Сериализация -  это процесс сохранения состояния объекта в последовательность байт. Десериализация - это процесс восстановления объекта, из этих байт. Обратный процесс сериализация(!) Сериализация объекта это способность объекта сохранять полную копию его и любых других объектов на которые он ссылается, используя поток вывода(например, во внешний файл). Таким образом, объект может быть воссоздан из сериализованной(сохраненной) копии немного позже, когда это потребуется.
  2. В сегодняшнем мире типичное промышленное приложение будет иметь множество компонентов и будет распространено через различные системы и сети. Если двум компонентам Java необходимо общаться друг с другом, то им необходим механизм для обмена данными. Есть несколько способов реализовать этот механизм. Первый способ это разработать собственный протокол и передать объект. В Java всё представлено в виде объектов; Это означает, что получатель должен знать протокол, используемый отправителем для воссоздания объекта, что усложняет разработку сторонних компонентов. Следовательно, должен быть универсальный и эффективный протокол передачи объектов между компонентами. Сериализация создана для этого, и компоненты Java используют этот протокол для передачи объектов.
  3. Процесс десиреализации начинается с момента когда объект считывается с ObjectInputStream, в который поступает данные, которые пришли от атакующего. Процесс начинает считывать сериализоанные данные и начинает цикличный процесс, в котором имя класса, который будет десиарилизован передается в метод ObjectInputStream.resolveClass(). Это необходимо для того, чтобы получить информацию и метаданные о классе. Это важный этап, поскольку на нем проверяется, что существует данный класс в classpath или нет. Стоит отметить, что уже на этом этапе, можно проверять класс, который будет сериализован с точки зрения безопасносити и можно еще все остановить. После того, как класс загружен ObjectInputStream, проверяет, содержит-ли он такие функции как readObject() и/или readResolve – если да, то вызывает их. readObject служит для того , чтобы устновить значения полей класса. В некоторых случаях могут вызываться и другие функции, такие как validateObject и другие. Этот процесс будет повторяться до самого конца, когда сам объект и все вложенные в него объекты не будут полностью десеарилизованны.
  4. Важно отметить, что перед тем , как быть скастованным до определенного объекта, некоторые методы будут вызваны, такие как readObject, readObjectNoData, readResolve и validateObject у десиарилизрованного класса. То есть если атакующий, сможешь каким-либо образом проэксплуатировать эти функции, то он сможет получить возможность выполнения произврольного кода. Иными словами, те действия, которые будут произходить в этим функциях с данными атакующего и крайне важны
  5. Пытаясь найти необходимые функции и классы, атакующий может быть не только ограничен данным методами. Он может использовать перехват вызовов, и с одной стороны метод readobject может передать управление на c. JDK и другие библиотеки, позволяет разработчикам писать проки классы , которые реализуют или расширяют определенный набор классов или интерфейсов. Любой метод который вызывается в этих проксях перехватывается и передается в invocation handler для выполнения дополнительного кода.
  6. И класс invocation handler. Как видно, если бы мы попытались его сериализовать стырм путем, то него нет методов и необходимы параметоров, которые можно было бы перезаписать
  7. Сначала атакующий создает экземпляр класса Handler0 Создает прокси на объект map, где в качестве F pfntv