Как стать автором
Обновить
11
0
sluge @sluge

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

Отправить сообщение

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

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров6.7K

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

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

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

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

Читать далее

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

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

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



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

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

На поверхности, это выглядит как весьма глупая ошибка. В конце концов, программа знает размер буфера, а значит, должно быть несложно удостоверится, что программа никогда не попытается положить в буфер больше, чем известный размер. И вы были бы правы, рассуждая таким образом. Однако переполнения буфера продолжают происходить, а результаты часто представляют собой катастрофу для безопасности.
Читать дальше →

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

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

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

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

Время на прочтение7 мин
Количество просмотров25K

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


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


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

Читать дальше →

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

Время на прочтение10 мин
Количество просмотров21K
Перевод статьи, автор – Latacora

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

Но если вы разработчик, а не криптограф, то не должны делать ничего такого. Следует придерживаться простых и обычных решений, которые легко поддаются анализу — «скучных», как говорят люди из Google TLS.
Читать дальше →

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

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



Attacker & Defender


Прежде чем переходить к алгоритмам и построению схемы хеширования, надо вообще понять, от чего же мы защищаемся и какую роль в безопасности веб-сервиса должно играть хеширование паролей. Обычно сценарий таков, что атакующий ломает веб-сервис (или несколько веб-сервисов) через цепочку уязвимостей, получает доступ к базе данных пользователей, видит там хеши паролей, дампит базу и идет развлекаться с GPU (и, в редких случаях, с FPGA и ASIС).
Читать дальше →

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

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

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

Под катом моя вольная интерпретация этого процесса.
Читать дальше →

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

Время на прочтение5 мин
Количество просмотров27K


Поднявшаяся в этом топике дискуссия о криптостойкости многократного применения хеша над паролем (проскальзывавшая, кстати, и в других форумах), подтолкнула меня к этому немного математическому топику. Суть проблемы возникает из идеи многократной (1.000 и более раз) обработки пароля перед хранением каким-либо криптостойким алгоритмом (чаще всего хеш-функцией) с целью получить медленный алгоритм проверки, тем самым эффективно противостоящий brute force-у в случае перехвата или кражи злоумышленником этого значения. Как совершенно верно отметили хабрапользователи Scratch (автор первой статьи), mrThe и IlyaPodkopaev, идея не нова и ею пользуются разработчики оборудования Cisco, архиватора RAR и многие другие. Но, поскольку хеширование – операция сжимающая множество значений, возникает вполне закономерный вопрос – а не навредим ли мы стойкости системы? Попытка дать ответ на этот вопрос –
далее ...

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

Время на прочтение8 мин
Количество просмотров55K
image

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

Без разницы, работаете вы программистом много лет или только начали свой путь. Без разницы, какую должность занимаете, работаете в офисе или же занимаетесь фрилансом. Если вы программист, то ваш успех обусловлен двумя крайне важными умениями: фокусироваться на деле и концентрироваться.
Читать дальше →

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

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

подробности

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

Время на прочтение4 мин
Количество просмотров1.8K


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

Под катом делимся материалами встречи: презентациями и видеозаписями докладов.

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

Время на прочтение14 мин
Количество просмотров52K
Жизнь, как и личная, так и корпоративная, полна конфликтов. К сожалению, большинство из них происходит не из-за здорового различия во мнениях, а на почве взаимного недопонимания и как снежный ком копящихся обид. Я бы хотел поговорить о явлении, которое, на мой взгляд, является корнем (почти) всех зол и одной из главных проблем человеческого общения – о «пассивной агрессии».
Читать дальше →

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

Время на прочтение2 мин
Количество просмотров27K


Нас часто спрашивают, какие книги стоит почитать тем, кто делает первые шаги в сфере информационной безопасности? Наша команда экспертов по тестированию на проникновение составила подборку книг, которые помогут освоить практические вопросы ИБ.
Читать дальше →

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

Время на прочтение37 мин
Количество просмотров17K


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

Читать дальше →

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

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

Чтобы Всем было интереснее, мы не будем рекламировать свой сервис (ну если только чуть-чуть). Вместо этого, мы подготовили первую серию публикаций, которая будет посвящена такой увлекательной и крайне актуальной теме, как безопасность Web-приложений. Мы постараемся раскрыть опасности, сопутствующие любому действующему интернет-проекту и простым языком донести всю важность ответственного подхода к рутинным, казалось бы, мелочам в вопросах безопасности данных. Надеемся наши статьи будут не бесполезны для Вас. Уверены, так Вы узнаете нас гораздо лучше.
Читать дальше →

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

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

image

Жизнь активного предпринимателя — это, мягко говоря, езда по американским горкам.
Как же преуспевающие люди ухитряются переживать такие сумасшедшие дни?
Читать дальше →

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

Время на прочтение8 мин
Количество просмотров17K
Когда вы слышите словосочетание “повышение осведомленности в области информационной безопасности”, то что вам первым приходит на ум? Обучение пользователей не открывать письма от посторонних и не кликать на фишинговые ссылки? Обучение способам распознавания социального инжиниринга? Отслеживание, чтобы никто посторонний не зашел в офис, как будто бы он с вами? У нас в Cisco такая программа тоже есть и мы тоже регулярно проходим соответствующее обучение. Но сегодня мне бы хотелось рассказать о другой нашей добровольной программе повышения осведомленности, которая была создана менее чем за полгода командой из всего четырех человек с бюджетом менее 50 тысяч долларов. Обратите внимание еще раз. Добровальная программа! Создана четырьмя людьми! Меньше чем за полгода! Всего за 50 тысяч долларов! А прошло обучение и успешно сдало экзамен по этой программе свыше 20 тысяч сотрудников Cisco — инженеров и разработчиков.
Читать дальше →

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

Время на прочтение6 мин
Количество просмотров170K


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

Редактор издания Motherboard Майкл Берн (Michael Byrne) написал материал о том, как отправлять электронные письма для различных почтовых ящиков с помощью Python. Мы представляем вашему вниманию адаптированный перевод этой заметки.
Читать дальше →

Связка GMail + Python + Django

Время на прочтение1 мин
Количество просмотров8.2K
Существует прелестная библиотека для 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.

Кросс-пост с моего блога.

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

Время на прочтение18 мин
Количество просмотров39K
simple science

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

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

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

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

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

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

— ?!

О статье


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

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

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

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

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

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

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

Подтверждаю свою готовность внимательно прочитать многабукаф
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность