Категория ‘NetSec’

* Настройки на sysctl.conf под FreeBSD

Публикувано на 10 април 2009 от Филип Петров. Записано в NetSec.


Много хора не знаят, че във файла /etc/sysctl.conf за настройки на ядрото на Unix-базираните операционни системи се съдържат изключително много възможности за подобряване на стабилността на системата, а оттам и нейната сигурност.

В настоящата статия ще разгледаме някои важни настройки за мрежовия адаптер и още други свързани със сигурността на системата. Повечето от тях ще подобрят сигурността на системата и ще я направят много по-малко уязвима от слаби DDoS атаки. Разгледаните настройки са само за системи работещи под FreeBSD. Други операционни системи имат свои алтернативни опции. Прочети още…

.



* Защита от brute force атаки

Публикувано на 16 декември 2008 от Филип Петров. Записано в NetSec.


„Brute Force“ е атака, при който атакуващият изпраща множество заявки към сървъра с различни двойки от име и парола, с цел да „налучка“ някоя правилна комбинация. Най-често на атака са изложени потребителски имена като „admin“, „administrator“, „root“, и т.н. По този начин атакуващият се опитва да получи достъп до даден защитен ресурс, без да използва пробив в сигурността.

Първото и основно правило за защита срещу brute force атаки е да използваме колкото се може по-сложни пароли. Обикновено тези атаки изпробват набор от речникови думи, имена и понякога цифри. Освен това, независимо колко сложна е вашата парола, не е добра идея да я използвате за всички сайтове, на които влизате (най-малкото администратора на чуждият уеб сайт ще може да проникне във вашия личен).

Независимо колко стриктна и добра политика използваме за паролите ние не бихме искали да позволим някой да изпробва стотици комбинации от имена и пароли върху вашата система. Най-малкото не сме сигурни дали някой от нашите потребители не използва лесна за разгадаване парола – например името си в комбинация с годината на раждане: „Иван1978″. Една целенасочена атака срещу този потребител би изпробвала различни комбинации от данни, които са свързани с потребителя Иван. Паролата от своя страна изглежда сигурна (съдържа и думи и цифри) и би преминала вашия валидатор. Поради тази причина е наложително да се защитите, като едновременно с това не затруднявате потребителя излишно. Прочети още…

.



* Captcha

Публикувано на 07 декември 2008 от Филип Петров. Записано в NetSec.


Captcha е името на широко използвана техника за защита на форми. Тя е съкращение от „Completely Automated Public Turing test to tell Computers and Humans Apart“, което преведено означава “напълно автоматизирана проверка за разграничаване на човек от компютър”. Процеса на проверка изисква един компютър (сървър) да поиска отговора на прост въпрос, но по начин, който предотвратява възможноста за автоматизирано намиране на отговора от компютър. По този начин всеки потребител въвел правилен отговор бива упълномощен с права за достъп и ние сме сигурни, че той е човек, а не машина (bot). Тази техника премахва следните проблеми в сигурноста на системата: Прочети още…

.



* Code Injection – вмъкване на нежелан код

Публикувано на 07 декември 2008 от Филип Петров. Записано в NetSec.


Вече разгледахме статии, в които описахме проблемите за вмъкване на нежелан SQL код и XSS атаки. Те всъщност са част от една по-широка общност, която можем да наречем общо „вмъкване на нежелан код“. SQL injection целеше да повреди базата данни, а XSS атаките целяха да подведат потребител на системата. Логично остава още едно звено за атака – файловата система на сървъра. Знаете, че скриптовете, писани на езици като PHP, ASP, JSP, и др, се компилират и изпълняват на сървъра. Това дали означава, че тяхния сорс код е предпазен от модифициране?

Нека разгледаме няколко примера: Прочети още…

.



* Не вярвайте на Environment Variables

Публикувано на 07 декември 2008 от Филип Петров. Записано в NetSec.


На няколко пъти споменахме, че Environment Variables не трябва да бъдат използвани като достоверен източник на информация. Време е да добавим още нещо – използването им може да доведе и до пробиви в сигурността. Една статия от seancoates.com заслужава значително внимание.

Трябва да отбележим, че описаното в статията е изключително честа практика при програмирането на PHP, а именно – когато правите заявка от един скрипт към самия него, то програмистите използват за улеснение $_SERVER['PHP_SELF']. Тази environment променлива записва текущия локален път към скрипта. Следните форми могат да бъдат видяни в изключително много PHP приложения: Прочети още…

.



* Forced Browsing – лош контрол над привилегии

Публикувано на 06 декември 2008 от Филип Петров. Записано в NetSec.


„Forced Browsing“ или още „Forceful Browsing“ е атака, която цели достъпване на ресурси, които би трябвало да бъдат защитени. Почти винаги причина за такава атака е лош дизайн на правата на достъп за приложението. Принципът за защита е само един – ако например искаме да автентикираме един потребител и да проверим дали е администратор или не, то ние НЕ трябва да разчитаме на информация подадена от него. Винаги извършвайте проверките на страната на сървъра. Следното видео демонстрира с пример ефекта от лошо управление на правата на достъп: Прочети още…

.



* XSRF – данни от чужд източник към форма

Публикувано на 06 декември 2008 от Филип Петров. Записано в NetSec.


„Cross Site Request Forgery“ е подход, който често използва XSS уязвимост в приложението, чрез която да се достигане компрометиране на самото приложение. Обикновено се използва потребител, на който приложението има „доверие“ (например такъв с административни права). Обикновено атакуващият, като обикновен потребител, не би могъл сам да предизвика желания резултат и поради тази причина използва XSS уязвимост за изпълнение на заявка чрез друг потребител (с по-високи права). Следното видео демонстрира това: Прочети още…

.



* XSS – вмъкване на нежелан код

Публикувано на 06 декември 2008 от Филип Петров. Записано в NetSec.


Cross Site Scripting (XSS) е атака, която използва уязвимост на приложението и “вмъква“ нежелан код, който се изпълнява в браузъра на крайния потребител. Най-общо казано атаката цели да намери място в програмата, в което се отпечатва стойността на дадена променлива и не се проверява коректно нейното съдържание. Обикновено в съдържанието на променливата се записва HTML, XHTML, JavaScript, ActiveX, VBScript, Flash, и др видове изпълним код. Възможностите за цел на атаката може да са много – придобиване на достъп до защитена зона на сайта (чрез постигане на session hijacking), подвеждане на потребителя да въведе информация към трети източник (physhing), инсталиране на нежелани програми на компютъра на потребителя (virus, worm, trojan, …), и др. Според изследване на Symantec около 80% от проблемите в сигурността на уеб-базираните приложения са свързани именно с XSS уязвимости. Също така се прави статистическо предположение, че поне 70% от динамичните уеб-сайтове в световната мрежа притежават такава уязвимост. Обикновено крайния потребител не може да намери визуален белег, по който да разкрие атаката. Прочети още…

.



* Secure Socket Layer (SSL)

Публикувано на 04 декември 2008 от Филип Петров. Записано в NetSec.


Досега силно препоръчвахме употребата на SSL, но не дадохме конкретна информация как точно ще бъде защитена нашата комуникация с него. SSL e съкращение на „Secure Socket Layer“ и се използва изключително широко при криптиране на мрежови трафик. Най-често се използва при world wide web за криптиране на HTTP, но вече много често може да бъде видян и при други протоколи, като FTP, SMTP, NNTP, POP3, IMAP и т.н. Прочети още…

.



* Предотвратяване на препълване на буфера

Публикувано на 30 ноември 2008 от Филип Петров. Записано в NetSec.


Това е както един от трудните за реализиране проблеми, така и един от най-трудните за предотвратяване. Има няколко основни правила, които трябва да имаме в предвид:

1. Не вярвайте на готовите библиотеки. Ето ви един непълен списък на вградени функции от С, които са доказано уязвими:
strcpy(), strcat(), printf(), sprintf(), vsprintf(), gets(), scanf(), fscanf(), sscanf(), vscanf(), vsscanf(), vfscanf(), realpath(), getopt(), getpass(), streadd(), strecpy(), strtrns() и др.
Ето ви и един eлементарен пример:

	char buf[10];
	gets(buf);

Въведете повече от 10 символа и ще видите неприятен резултат. Прочети още…

.