Все привыкли к тестам: unit-тесты, стресс-тесты, функциональные тесты, ui-тесты. В презентации будет рассказано про fuzzing-тестирование, как оно работает на мобильных платформах и какие инструменты на данный момент актуальны. Углубимся в fuzzing-тесты под iOS и Android (AIDL).
6. 6
А Л Е К С Е Й
Н А Б Е Р Е Ж Н Ы Й
S O F T W A R E E N G I N E E R &
P E N T E S T E R
E - m a i l : i n w a d y @ g m a i l . c o m
T g : @ i n w a d y
Занимаюсь аудитом и
информационной безопасностью
мобильных приложений. До
вовлечения в сферу
информационной безопасности
работал разработчиком в
компании Mail.Ru. Увлекаюсь
блокчейном, смартконтрактами и
разработкой высоконагруженных
систем.
7. 7
ПЛАН
• Ч Т О Т А К О Е Ф А З З И Н Г
• И Н С Т Р У М Е Н Т Ы Д Л Я Ф А З З И Н Г А
• К О Г Д А Ф А З З И Н Г П Р И Н О С И Т П О Л Ь З У
• М О Б И Л Ь Н Ы Е П Р И Л О Ж Е Н И Я
• П О С Л Е Д С Т В И Я И П Р О Б Л Е М Ы
• К О М У Н У Ж Е Н Ф А З З И Н Г
• A I D L F U Z Z ( п р и м е р )
10. 10
Ошибки в коде
А т ы н а ш е л
Н е п р а в и л ь н о е
у п р а в л е н и е
п а м я т ь ю
A S S E R T- с о б ы т и я
Н е п р а в и л ь н а я
о б р а б о т к а n u l l
Н е п р а в и л ь н а я
о б р а б о т к а
и с к л ю ч е н и й
D e a d l o c k s
I n f i n i t e l o o p s
Н е о п р е д е л е н н о е
п о в е д е н и е
Н е п р а в и л ь н о е
у п р а в л е н и е
р е с у р с а м и
О ш и б к и в
б и з н е с - л о г и к е
11. 11
П р и м е р ы у т и л и т :
• R a d a m s a
• F u z z b o x
• Z z u f
• B a s i c f u z z i n g f r a m e w o r k ( B F F )
• h t t p s : / / g i t h u b . c o m / t r a i l o f b i t s / m a n t i c o r e
ИНСТРУМЕНТЫ ДЛЯ ФАЗЗИНГ
12. 12
F u z z C o m p i l e r B i n a r y
КАК ЭТО РАБОТАЕТ
S o u r c e c o d e
17. 17
ПРИМЕР ФАЗЗИНГА
int vuln(char *Data) {
int num = rand() % 100 + 1;
printf("Data is generated, num is %dn", num);
if(Data[0] == 'C' && num == 25) {
raise(SIGSEGV);
}
else if(Data[0] == 'F' && num == 90) {
raise(SIGSEGV);
}
else {
printf("it is good!n");
}
return 0;
}
18. 18
КОГДА ФАЗЗИНГ ПОЛЕЗЕН
З А Б А В Н О , Н О Э Т О Т М А Л Е Н Ь К И Й Т Е С Т В С Е Р А В Н О Н И К Т О Н Е У В И Д И Т
Р а б о т а с о с л о ж н ы м и
д а н н ы м и в п р и л о ж е н и и
К о д н е д о с т а т о ч н о
п р о в е р е н ( р е в ь ю )
Л ю б а я о ш и б к а
м о ж е т п р и в е с т и
к у б ы т к а м
Б и з н е с у н у ж н о ,
ч т о б ы к о д
н и к о г д а н е п а д а л
К о д н а п и с а н
н а C / C + +
К о д м о ж е т п р и н и м а т ь
б о л ь ш о е к о л и ч е с т в о
п а р а м е т р о в н а в х о д
К о д и с п о л ь з у е т с я
п р и м е ж п р о ц е с с н о м
в з а и м о д е й с т в и и
В к о д е м н о г о
a s s e r t - б л о к о в
27. 27
package test;
public class Crashing
{
public static void main(String[] args) throws
java.io.IOException
{
byte[] buffer = new byte[100];
// Make this crash on very likely generated inputs
but not on
// files inside in/ directory:
if (System.in.read(buffer) > 10) {
throw new RuntimeException("I will crash now!");
}
}
}
https://github.com/Barro/java-afl.git
48. 48
ЦЕЛЬ “AIDL Fuzzing”
Т У Т М О Г Л А Б Ы Т Ь В А Ш А Р Е К Л А М А
A O S P F u z z i n g
C u s t o m A I D L - s c h e m e F u z z i n g
F u z z i n g E n g i n e o n A n d r o i d
O p e n s o u r c e c o d e
49. 49
PA R A D I S E C U R I T Y
Занимаемся исследованиями в
сфере мобильных устройств