Pull to refresh
11
0

Пользователь

Send message

Митигация SQL-инъекций при работе с PostgreSQL

Level of difficulty Easy
Reading time 6 min
Views 4.5K

Привет, Хабр! Меня зовут Игорь, я занимаюсь разработкой серверной части в команде RuBackup.

В процессе своей работы мы с коллегами уделяем большое внимание вопросам безопасности наших приложений. SQL-инъекция — одна из самых серьезных угроз этой безопасности. Она заняла третье место в списке 25 самых опасных проблем в программном обеспечении за последние два года. Именно поэтому я решил собрать весь свой накопленный опыт и рассказать о митигации SQL-инъекций.

Наверняка многие из вас знают, что валидирование пользовательского ввода — краеугольный камень процесса безопасной разработки. С одной стороны, нам как разработчикам не хочется ограничивать пользователей в наборе таких входных данных, как символы и выражения, которые они могут использовать в работе, например, в паролях. С другой стороны, нельзя допустить выполнения в СУБД вредоносного кода, который приводит к SQL-инъекциям. А такие случаи время от времени происходят и становятся достоянием гласности. PostgreSQL дает разработчику возможность решить эту проблему экранированием потенциально опасных символов, превращая их в безопасные. Таким образом, для PostgreSQL будет вполне безвредно, если пользователь в качестве пароля использует строку "password' OR 1=1".

Для защиты от SQL-инъекций в прикладных библиотеках PostgreSQL libpq и libpqxx применяется техника «эскейпинг» или экранирование строки. Она заключается в том, чтобы убрать лишние символы разрыва строк в строках, содержащих специальные символы. С помощью этой функций символы удваиваются и более не считаются окончанием строки, а интерпретируются как обычные символы. Я буду рассматривать только библиотеку libpqxx, так как она, по сути, является С++ оберткой над более низкоуровневой С библиотекой libpq, где и реализованы все функции, о которых далее пойдет речь.

Читать далее
Total votes 16: ↑4 and ↓12 -8
Comments 30

Как устроены дыры в безопасности: переполнение буфера

Reading time 29 min
Views 129K
Прим. переводчика: Это перевод статьи Питера Брайта (Peter Bright) «How security flaws work: The buffer overflow» о том, как работает переполнение буфера и как развивались уязвимости и методы защиты.

Беря своё начало с Червя Морриса (Morris Worm) 1988 года, эта проблема поразила всех, и Linux, и Windows.



Переполнение буфера (buffer overflow) давно известно в области компьютерной безопасности. Даже первый само-распространяющийся Интернет-червь — Червь Морриса 1988 года — использовал переполнение буфера в Unix-демоне finger для распространения между машинами. Двадцать семь лет спустя, переполнение буфера остаётся источником проблем. Разработчики Windows изменили свой подход к безопасности после двух основанных на переполнении буфера эксплойтов в начале двухтысячных. А обнаруженное в мае сего года переполнение буфера в Linux драйвере (потенциально) подставляет под удар миллионы домашних и SMB маршрутизаторов.

По своей сути, переполнение буфера является невероятно простым багом, происходящим из распространённой практики. Компьютерные программы часто работают с блоками данных, читаемых с диска, из сети, или даже с клавиатуры. Для размещения этих данных, программы выделяют блоки памяти конечного размера — буферы. Переполнение буфера происходит, когда происходит запись или чтение объёма данных большего, чем вмещает буфер.

На поверхности, это выглядит как весьма глупая ошибка. В конце концов, программа знает размер буфера, а значит, должно быть несложно удостоверится, что программа никогда не попытается положить в буфер больше, чем известный размер. И вы были бы правы, рассуждая таким образом. Однако переполнения буфера продолжают происходить, а результаты часто представляют собой катастрофу для безопасности.
Читать дальше →
Total votes 48: ↑47 and ↓1 +46
Comments 29

Разбор заданий конкурса «Конкурентная разведка» на PHDays V

Reading time 11 min
Views 16K
В этом году в «Конкурентную разведку» играли не только традиционные любители конкурса, но и команды CTF, поэтому по уровню сложности задания были подобраны для тех и для других. Кроме того, разрешена была командная игра. (Но один человек не мог играть и в индивидуальном зачете, и за команду CTF, поэтому нам пришлось по взаимному согласию дисквалифицировать участника, занявшего по очкам 1-е место — azrael).

Под общей легендой государства United States of Soviet Unions были объединены все конкурсы, и в рамках «Конкурентной разведки» участникам пришлось искать информацию о служащих разных компаний, «прописанных» в USSU. Параллельно можно было отвечать на пять разных вопросов о пяти разных организациях; внутри одного блока вопросы открывались друг за другом, по мере получения ответов. (Одна команда нашла ответ методом перебора, но на следующий вопрос они так и не смогли ответить — у них не было на руках необходимых ресурсов.)
Читать дальше →
Total votes 16: ↑16 and ↓0 +16
Comments 1

Немного о ARM Security Extensions (aka ARM TrustZone)

Reading time 7 min
Views 23K

О чем эта статья


На Хабре уже несколько раз упоминали о SMM — режиме процессора x86/64 который имеет больше привилегий чем даже режим гипервизора. Нечто подобное есть и в процессорах архитектуры ARMv7 и ARMv8. Вычислительные ядра этих архитектур могут иметь опциональное расширение под названием ARM Security Extensions, которое позволит разделить исполняемый код, память и периферию на два домена — доверенный и недоверенный. Официальное маркетинговое название этой технологии — ARM TrustZone. Но технари чаще предпочитают говорить о security extensions.


Это будет обзорная статья, поэтому я не буду вдаваться в глухие технические дебри. Тем не менее технические детали будут присутствовать. Первая часть статьи будет посвящена вопросу зачем это всё вообще нужно, а вторая — как это работает в общих чертах. Если общество заинтересуется — следующая статья будет содержать больше технических деталей. Кому интересно — добро пожаловать под кат.

Читать дальше →
Total votes 28: ↑27 and ↓1 +26
Comments 21

Правильные ответы по криптографии: 2018 год

Reading time 10 min
Views 20K
Перевод статьи, автор – Latacora

В литературе и самых сложных современных системах есть «лучшие» ответы на многие вопросы. Если вы разрабатываете встроенные приложения, то предлагают использовать STROBE и модный современный криптографический стек для аутентификации полностью из одиночных SHA-3-подобных функций губки. Советуют использовать NOISE для разработки безопасного транспортного протокола с формированием общего ключа аутентификации (AKE). Говоря об AKE, есть около 30 различных парольных AKE на выбор.

Но если вы разработчик, а не криптограф, то не должны делать ничего такого. Следует придерживаться простых и обычных решений, которые легко поддаются анализу — «скучных», как говорят люди из Google TLS.
Читать дальше →
Total votes 24: ↑24 and ↓0 +24
Comments 7

Как правильно хешировать пароли в высоконагруженных сервисах. Опыт Яндекса

Reading time 8 min
Views 40K
Я расскажу о такой проблеме, как хеширование паролей в веб-сервисах. На первый взгляд кажется, что тут все «яснопонятно» и надо просто взять нормальный алгоритм, которых уже напридумывали много, написать чуть-чуть кода и выкатить все в продакшн. Но как обычно, когда начинаешь работать над проблемой, возникает куча подводных камней, которые надо обязательно учесть. Каких именно? Первый из них — это, пожалуй, выбор алгоритма: хоть их и много, но у каждого есть свои особенности. Второй — как выбирать параметры? Побольше и получше? Как быть с временем ответа пользователю? Сколько памяти, CPU, потоков? И третий — что делать с computational DoS? В этой статье я хочу поделиться некоторыми своими мыслями об этих трех проблемах, опытом внедрения нового алгоритма хеширования паролей в Яндексе и небольшим количеством кода.



Attacker & Defender


Прежде чем переходить к алгоритмам и построению схемы хеширования, надо вообще понять, от чего же мы защищаемся и какую роль в безопасности веб-сервиса должно играть хеширование паролей. Обычно сценарий таков, что атакующий ломает веб-сервис (или несколько веб-сервисов) через цепочку уязвимостей, получает доступ к базе данных пользователей, видит там хеши паролей, дампит базу и идет развлекаться с GPU (и, в редких случаях, с FPGA и ASIС).
Читать дальше →
Total votes 106: ↑100 and ↓6 +94
Comments 65

Замедление хеширования паролей. Зачем?

Reading time 7 min
Views 15K
Доброго времени суток, хабрапараноик! Сегодня мы поговорим о немного необычном способе повышения безопасности, а именно замедлении хеширования паролей. Казалось бы, когда всё вокруг стараются оптимизировать, зачем что то замедлять?
Хотя бы затем, что даже в самой супер-пупер защищенной системе самым слабым звеном остается человек. А именно, его пароль.

Вы пытались когда нибудь взломать зашифрованный rar архив? И сколько паролей в секунду оно перебирало? 50-100-200? Даже на хорошем GPU, при использовании небезызвестного cRARk, скорость перебора всего около 2400 вариантов/сек. И это-то по сравнению с десятками (сотнями) миллионов паролей/сек для zip/md5/SHA1.

Под катом моя вольная интерпретация этого процесса.
Читать дальше →
Total votes 91: ↑79 and ↓12 +67
Comments 107

Криптостойкость 1000-кратного хеширования пароля

Reading time 5 min
Views 26K


Поднявшаяся в этом топике дискуссия о криптостойкости многократного применения хеша над паролем (проскальзывавшая, кстати, и в других форумах), подтолкнула меня к этому немного математическому топику. Суть проблемы возникает из идеи многократной (1.000 и более раз) обработки пароля перед хранением каким-либо криптостойким алгоритмом (чаще всего хеш-функцией) с целью получить медленный алгоритм проверки, тем самым эффективно противостоящий brute force-у в случае перехвата или кражи злоумышленником этого значения. Как совершенно верно отметили хабрапользователи Scratch (автор первой статьи), mrThe и IlyaPodkopaev, идея не нова и ею пользуются разработчики оборудования Cisco, архиватора RAR и многие другие. Но, поскольку хеширование – операция сжимающая множество значений, возникает вполне закономерный вопрос – а не навредим ли мы стойкости системы? Попытка дать ответ на этот вопрос –
далее ...
Total votes 332: ↑328 and ↓4 +324
Comments 103

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

Reading time 8 min
Views 55K
image

От переводчика: эта статья — перевод оригинальной статьи Бара Франека, специалиста по JavaScript. В новом своем материале он решил рассказать, какие навыки помогают разработчику в его ежедневном труде. Но речь не о программных инструментах, а, скорее, ментальных.

Без разницы, работаете вы программистом много лет или только начали свой путь. Без разницы, какую должность занимаете, работаете в офисе или же занимаетесь фрилансом. Если вы программист, то ваш успех обусловлен двумя крайне важными умениями: фокусироваться на деле и концентрироваться.
Читать дальше →
Total votes 46: ↑31 and ↓15 +16
Comments 31

Мой отчет по годовому изучению платформы Java EE

Reading time 6 min
Views 119K
Этот пост – отчет по результатам годового изучения платформы Java EE.
Он будет полезен мне своей отчетностью. Может быть пост будет полезен тем читателям хабра, которые задумали учить Джаву.

подробности
Total votes 126: ↑99 and ↓27 +72
Comments 139

Безопасная разработка на PHDays 8: итоги встречи сообщества PDUG

Reading time 4 min
Views 1.7K


15–16 мая на площадке форума по кибербезопасности PHDays прошла очередная встреча сообщества безопасной разработки Positive Development User Group. В двухдневную программу вошли 11 докладов разной степени хардкорности и круглый стол, посвященный статическому анализу.

Под катом делимся материалами встречи: презентациями и видеозаписями докладов.
Total votes 8: ↑7 and ↓1 +6
Comments 0

Пассивная агрессия: как она разрушает нашу рабочую жизнь и как с ней бороться

Reading time 14 min
Views 50K
Жизнь, как и личная, так и корпоративная, полна конфликтов. К сожалению, большинство из них происходит не из-за здорового различия во мнениях, а на почве взаимного недопонимания и как снежный ком копящихся обид. Я бы хотел поговорить о явлении, которое, на мой взгляд, является корнем (почти) всех зол и одной из главных проблем человеческого общения – о «пассивной агрессии».
Читать дальше →
Total votes 28: ↑24 and ↓4 +20
Comments 32

Что почитать в выходные: 5 книг по практической информационной безопасности

Reading time 2 min
Views 26K


Нас часто спрашивают, какие книги стоит почитать тем, кто делает первые шаги в сфере информационной безопасности? Наша команда экспертов по тестированию на проникновение составила подборку книг, которые помогут освоить практические вопросы ИБ.
Читать дальше →
Total votes 15: ↑14 and ↓1 +13
Comments 3

Обходим ASLR для Linux по-новому

Reading time 37 min
Views 16K


Ядро Linux широко распространено во всем мире как на серверах, так и на пользовательских машинах, на мобильных платформах (ОС Android) и на различных «умных» устройствах. За время существования в ядре Linux появилось множество различных механизмов защиты от эксплуатации уязвимостей, которые могут существовать как в самом ядре, так и в приложениях пользователей. Такими механизмами является, в частности, ASLR и stack canary, противодействующие эксплуатации уязвимостей в приложениях.

Читать дальше →
Total votes 50: ↑50 and ↓0 +50
Comments 6

OWASP TOP-10: практический взгляд на безопасность веб-приложений

Reading time 11 min
Views 190K
Хабр, привет! Мы — Иван Притула и Дмитрий Агапитов, занимаемся разработкой решений, которые делают жизнь людей проще и комфортнее. Сегодня мы хотим представить один из наших новых сервисов – это платежный агрегатор SimplePay. Все что мы делаем продиктовано мучительной невозможностью мириться с несовершенством в целом, и несовершенством конкретных программных решений в частности. Именно в погоне за совершенством и рождаются наши продукты. Стараемся мы изо всех сил, а уж насколько мы близки, судить не нам.

Чтобы Всем было интереснее, мы не будем рекламировать свой сервис (ну если только чуть-чуть). Вместо этого, мы подготовили первую серию публикаций, которая будет посвящена такой увлекательной и крайне актуальной теме, как безопасность Web-приложений. Мы постараемся раскрыть опасности, сопутствующие любому действующему интернет-проекту и простым языком донести всю важность ответственного подхода к рутинным, казалось бы, мелочам в вопросах безопасности данных. Надеемся наши статьи будут не бесполезны для Вас. Уверены, так Вы узнаете нас гораздо лучше.
Читать дальше →
Total votes 13: ↑9 and ↓4 +5
Comments 7

7 полезных утренних привычек психологически выносливых людей

Reading time 4 min
Views 75K
Как начинают свой напряженный день американские (и не только) участники Олимпийских игр и «Морские котики» (и как можете действовать и вы!)?

image

Жизнь активного предпринимателя — это, мягко говоря, езда по американским горкам.
Как же преуспевающие люди ухитряются переживать такие сумасшедшие дни?
Читать дальше →
Total votes 57: ↑33 and ↓24 +9
Comments 19

Как Cisco Security Ninja научили 20 тысяч сотрудников безопасному программированию?

Reading time 8 min
Views 17K
Когда вы слышите словосочетание “повышение осведомленности в области информационной безопасности”, то что вам первым приходит на ум? Обучение пользователей не открывать письма от посторонних и не кликать на фишинговые ссылки? Обучение способам распознавания социального инжиниринга? Отслеживание, чтобы никто посторонний не зашел в офис, как будто бы он с вами? У нас в Cisco такая программа тоже есть и мы тоже регулярно проходим соответствующее обучение. Но сегодня мне бы хотелось рассказать о другой нашей добровольной программе повышения осведомленности, которая была создана менее чем за полгода командой из всего четырех человек с бюджетом менее 50 тысяч долларов. Обратите внимание еще раз. Добровальная программа! Создана четырьмя людьми! Меньше чем за полгода! Всего за 50 тысяч долларов! А прошло обучение и успешно сдало экзамен по этой программе свыше 20 тысяч сотрудников Cisco — инженеров и разработчиков.
Читать дальше →
Total votes 12: ↑10 and ↓2 +8
Comments 9

Как отправить электронное письмо с помощью Python: руководство для «чайников»

Reading time 6 min
Views 149K


В нашем блоге мы много пишем о создании email-рассылок и работе с электронной почтой. В современном мире люди получают множество писем, а у некоторых даже есть несколько почтовых ящиков. Все это усложняет процесс их администрирования, что вынуждает искать пути решения проблемы. Не так давно мы рассказывали о том, как инженер из США упорядочивал свои письма с помощью нейронной сети (1, 2), а сегодня речь пойдет об автоматизации отправки писем для разных почтовых ящиков.

Редактор издания Motherboard Майкл Берн (Michael Byrne) написал материал о том, как отправлять электронные письма для различных почтовых ящиков с помощью Python. Мы представляем вашему вниманию адаптированный перевод этой заметки.
Читать дальше →
Total votes 26: ↑16 and ↓10 +6
Comments 8

Связка GMail + Python + Django

Reading time 1 min
Views 8.1K
Существует прелестная библиотека для Python — libGmail. Используя эту библиотеку очень просто получать и отправлять письма с GMail. А еще можно сделать из своего аккаунта POP или SMTP сервер.

LibGmail можно использовать как с Питоном так и в связке с любым популярным фреймворком. Например, с Django.

Например, я использую следующий код для отправки уведомления о необходимости активации аккаунта новому пользователю:

import libgmail


def activation(request):
    to_email = request.user.email
    activation_link = dontbeevil.com/activate/%s % request.COOKIES[«sessionid»]
    ga = libgmail.GmailAccount(dontbeevil@gmail.com, «ourpassword»)
    ga.login()
    subject = «Администрация сервиса»
    msg = «Дорогой пользователь! Для активации аккаунта воспользуйтесь этой ссылкой: %s» % activation_link
    gmsg = libgmail.GmailComposedMessage(to_email, subject, msg)
    ga.sendMessage(gmsg)



Использование LibGmail избавило меня от необходимости использовать встроенный SMTP сервер моего хостера. Плюс отсутствие спама на служебный почтовый ящик :) Весь спам попадает в GMail.

Кросс-пост с моего блога.
Total votes 34: ↑31 and ↓3 +28
Comments 22

Безопасность приложения: это почти просто

Reading time 18 min
Views 39K
simple science

— Дай мне справку, что моя программа безопасна.

— Нет проблем! А что ты для этого делал?

— Э… Ну… Это… Ничего…

— А почему ты тогда думаешь, что она безопасна?

— Ну, ты проверь!

— Нет проблем! Все удовольствие будет стоить X0000 долларов.

— ?!

О статье


В этой статье я рассказываю о некоторых практиках создания безопасного программного обеспечения.

Первая ее часть посвящена безопасному программированию.

С одной стороны, методы безопасного программирования известны. Накоплен опыт их использования, написано много литературы.

С другой стороны, применяют их не очень часто. Для многих программистов и менеджеров проекта они остаются не очень понятной экзотикой.

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

Во второй части я рассказываю о менее известных аспектах безопасности приложений. Но, в некотором смысле, эти аспекты даже более важны, чем использование методик безопасного программирования.

Внимание! Статья большая и подразумевает внимательное прочтение.

Подтверждаю свою готовность внимательно прочитать многабукаф
Total votes 30: ↑22 and ↓8 +14
Comments 22

Information

Rating
Does not participate
Location
Россия
Registered
Activity