alexei sintsov - "between error and vulerability - one step"
TRANSCRIPT
![Page 1: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/1.jpg)
От ошибки до уязвимости…
Алексей СинцовDigital Security
twitter.com/asintsov
![Page 2: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/2.jpg)
Программа…
http://www.flickr.com/photos/lofink/4501610335/
![Page 3: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/3.jpg)
Программа
http://www.flickr.com/photos/lofink/4501610335/
![Page 4: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/4.jpg)
Ошибка
http://www.flickr.com/photos/lofink/4501610335/
![Page 5: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/5.jpg)
Эксплуатация
http://www.flickr.com/photos/lofink/4501610335/
Уязвимость
Ошибка
![Page 6: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/6.jpg)
Кто ищет уязвимости ?
http://www.flickr.com/photos/rufo_83/3154516530/
![Page 7: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/7.jpg)
Такие разные…
• Переполнение буфера• Межсайтовый скриптинг• Инъекция SQL кода• Отсутствие авторизации• Ошибки логики• Обход аутентификации• И многое другое…..
![Page 8: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/8.jpg)
Примеры. Идейные ошибки - 1
• PepsiCo• Coca-Cola• Johnson & Johnson• Lockheed Martin• McDonnell-Douglas• Sony
• Danon• Mercedes-Benz• Ford Motor• Mazda Motor Corporation• Heineken
![Page 9: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/9.jpg)
Аутентификация
![Page 10: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/10.jpg)
Атака
![Page 11: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/11.jpg)
Эксплойт
XOR EAX, EAX
![Page 12: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/12.jpg)
Где ошибка?Производить аутентификацию на стороне клиента - НЕправильно!
![Page 13: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/13.jpg)
Примеры. Идейные ошибки - 2
Условия для атаки:• Домен• Учетная запись имеет
права Локального Администратора
Kaspersky Administration Kit
![Page 14: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/14.jpg)
Сканирование и атака
![Page 15: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/15.jpg)
Что делать?Надо было предусмотреть возможностьSMBRelay!
Надо было лучше документировать.
![Page 16: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/16.jpg)
Примеры. Ошибки в коде - 1Отечественная система Банк-Клиент
ActiveX компонент для работы с ЭЦП:
![Page 17: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/17.jpg)
Примеры. BoFОтечественная система Банк-Клиент
char* vuln(char *bufferOut, char *fileName){ char *errorText="Ошибка при создании файла с именем ‘%1’."; while(!*errorText) { if(errorText=='%' && (errorText+1)<'9') // замена %1 { strcpy(bufferOut,fileName); //errorText rewrite! bufferOut+=strlen(fileName); //увеличиваем указатель *errorText++; } *bufferOut++=*errorText++; //Stack overflow (errorText<bufferOut) } return *bufferOut;}
![Page 18: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/18.jpg)
Примеры. BoF
![Page 19: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/19.jpg)
Что делать?Проводить обзор кода.
Использоватьсовременный VS.
Использовать флагиЗащиты: /GS /SafeSEH
![Page 20: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/20.jpg)
Примеры. Ошибки в коде - 2Lotus Domino Controller
![Page 21: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/21.jpg)
Примеры. Ошибки в коде - 2Аутентификация
Пользователь -> {Login, Password, cookiefilename} -> Lotus Domino Controller
Имя файла на сервере Lotus с базой учетных записей и с хэшами паролей
© Patrik Karlsson and ZDI
![Page 22: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/22.jpg)
Примеры. Ошибки в коде - 2Аутентификация
File file = new File(cookieFilename); . . .
inputstreamreader = new InputStreamReader(new FileInputStream(file), "UTF8");
. . . inputstreamreader.read(ac, 0, i); . . .
String s7 = new String(ac); . . .
![Page 23: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/23.jpg)
do { if((j = s7.indexOf("<user ", j)) <= 0) break;
int k = s7.indexOf(">", j); if(k == -1) break;
String s2 = getStringToken(s7, "user=\"", "\"", j, k); . . .String s3 = getStringToken(s7, "cookie=\"", "\"", j, k); . . .String s4 = getStringToken(s7, "address=\"", "\"", j, k);
. . . if(usr.equalsIgnoreCase(s2) && pwd.equalsIgnoreCase(s3) &&\
appletUserAddress.equalsIgnoreCase(s4)) { flag = true; break; } . . .
} while(true);
![Page 24: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/24.jpg)
Примеры. Ошибки в коде - 2Обход аутентификации
echo ^ <user name=“admin" cookie=“dsecrg" address=“10.10.0.1"^> > n:\domino2\zdi0day_.txt
![Page 25: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/25.jpg)
Что делать?Проводить обзор кода.
![Page 26: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/26.jpg)
Примеры. Исправление.Аутентификация
File file = new File(“./”+cookieFilename); . . .
inputstreamreader = new InputStreamReader(new FileInputStream(file), "UTF8");
. . . inputstreamreader.read(ac, 0, i); . . .
String s7 = new String(ac); . . .
![Page 27: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/27.jpg)
do { if((j = s7.indexOf("<user ", j)) <= 0) break;
int k = s7.indexOf(">", j); if(k == -1) break;
String s2 = getStringToken(s7, "user=\"", "\"", j, k); . . .String s3 = getStringToken(s7, "cookie=\"", "\"", j, k); . . .String s4 = getStringToken(s7, "address=\"", "\"", j, k);
. . . if(usr.equalsIgnoreCase(s2) && pwd.equalsIgnoreCase(s3) &&\
appletUserAddress.equalsIgnoreCase(s4)) { flag = true; break; } . . .
} while(true);
s7.substring(..)
![Page 28: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/28.jpg)
Новая атака
Valid
cookie2.xml.trash:There is a good <user xml file!andname=“admin”willbefoundas cookie=“dsecrg” andaddress=“10.10.0.1”hooray!>and blah-blah-blah
<?xml version="1.0" encoding="UTF-8"?><user name=“admin" cookie=“dsecrg" address=“10.10.0.1">
cookie.xml
![Page 29: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/29.jpg)
Новая атака
Valid
cookie2.xml.trash:There is a good <user xml file!andname=“admin”willbefoundas cookie=“dsecrg” andaddress=“10.10.0.1”hooray!>and blah-blah-blah
<?xml version="1.0" encoding="UTF-8"?><user name=“admin" cookie=“dsecrg" address=“10.10.0.1">
cookie.xml
![Page 30: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/30.jpg)
Новая атака
Valid
cookie2.xml.trash:There is a good <user xml file!andname=“admin”willbefoundas cookie=“dsecrg” andaddress=“10.10.0.1”hooray!>and blah-blah-blah
<?xml version="1.0" encoding="UTF-8"?><user name=“admin" cookie=“dsecrg" address=“10.10.0.1">
cookie.xml
![Page 31: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/31.jpg)
Новая атака
Valid
cookie2.xml.trash:There is a good <user xml file!andname=“admin”willbefoundas cookie=“dsecrg” andaddress=“10.10.0.1”hooray!>and blah-blah-blah
<?xml version="1.0" encoding="UTF-8"?><user name=“admin" cookie=“dsecrg" address=“10.10.0.1">
cookie.xml
Valid
![Page 32: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/32.jpg)
Демонстрация 0day
![Page 33: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/33.jpg)
Что делать?Проводить обзор кода.
Автоматизированных средств не достаточно
![Page 34: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/34.jpg)
PS.
![Page 35: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/35.jpg)
WEB
Не XSS, не SQLi… что-то новое хотим!
![Page 36: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/36.jpg)
Google docs
![Page 37: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/37.jpg)
Как это выглядит?Пользователь.
![Page 38: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/38.jpg)
Как это выглядит?Создатель.
![Page 39: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/39.jpg)
Как атаковать?
Это же Exсel
Засунем =A1+B1
![Page 40: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/40.jpg)
Как атаковать?
Засунем %08=A1+B1
Yaaahooo!!
![Page 41: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/41.jpg)
Уязвимость?
![Page 42: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/42.jpg)
Уязвимость?
![Page 43: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/43.jpg)
Где ошибка?Проводить Фаззинг.
Анализировать бизнес функции.
![Page 44: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/44.jpg)
Как делать это правильно ?• Анализировать логику и функционал с точки зрения угроз
• UnitTests• Анализировать код
• Автоматически • В ручную, дополнительно, делать ревью кода
• Использовать технологии снижения рисков:• C/C++
• /GS • /SafeSEH• /DinamicBase
• WEB• HTTPOnly• Secure• X-Frame-options
• Анализ типовых угроз и best practices.• Анализ ролевой модели• Анализ схем СУБД
![Page 45: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/45.jpg)
Как ищут?Статический анализ
• Source code review• regexp• формальные методы• руками…
• Reverse Engineering• формальные методы• сигнатуры• руками…
Динамический анализ• Fuzzing (bin/web)
+ Типичные уязвимости для данного типа+ Reverse Engineering
• Руками…Обзор архитектуры (логические ошибки)Ошибки в 3rd party- в базе CVE
![Page 46: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/46.jpg)
Автоматизация
SQLMap
Peach
RATS
Flawfinder
Fuzzers Source Code Analyzers
COMRaider
SulleyYasca
![Page 47: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/47.jpg)
Разработка
(с) OWASP
![Page 49: Alexei Sintsov - "Between error and vulerability - one step"](https://reader035.vdocument.in/reader035/viewer/2022062514/557ebcefd8b42a1e438b5490/html5/thumbnails/49.jpg)
Пожалуйста, поставьте оценку моему докладу.
Ваше мнение очень важно.
Спасибо!