Search
Write a publication
Pull to refresh
4
0.2
Bronx @Bronx

User

Send message

WPAD: инструкция по эксплуатации

Reading time6 min
Views82K


Привет! Я Максим Андреев, программист бэкенда Облака Mail.Ru. На последнем Security Meetup’е я поделился результатами своего исследования протокола автоматической настройки прокси WPAD. Для тех, кто пропустил, — сегодняшний пост. Я расскажу о том, что такое WPAD, какие возможности для эксплуатации он предоставляет с точки зрения злоумышленника, а также покажу примеры того, как можно частично перехватывать HTTPS-трафик с помощью этой технологии.
Читать дальше →

Искусственный интеллект совершил реверс-инжиниринг механизма регенерации плоских червей

Reading time3 min
Views21K
image
Планария удивлена прогрессом в области ИИ / Википедия

Впервые при помощи искусственного интеллекта учёными-биологами было получено решение задачи, над которой они бились более 100 лет. Ими была получена модель, в соответствии с которой плоские черви планарии отращивают утерянные части тела. Это не только первая биологическая модель, полученная искусственным интеллектом, но и в принципе первая подробная модель этого процесса.

Чтобы приблизить мечту человека о выращивании новых органов, учёным требуется понять точный механизм того, как эти органы вырастают у живых организмов. С одной стороны, более-менее известна роль ДНК и генетических компонентов организмов на молекулярном уровне. С другой стороны, непонятно, как на основании этой информации клетки выстраиваются до нужного размера, формы и ориентации. Такими исследованиями и занимаются в частном университете Тафтса, США.
Читать дальше →

Уязвимость TLS Logjam — FREAK с DH

Reading time4 min
Views16K
image

Исследователи из CNRS, Inria Nancy-Grand Est, Inria Paris-Rocquencourt, Microsoft Research, Johns Hopkins University, University of Michigan и University of Pennsylvania обнаружили новую уязвимость в TLS, схожую с FREAK, но более опасную и применимую в реальной жизни — Logjam. В случае с Logjam, атака производится на сессионные ключи, которые устанавливаются во время обмена про протоколу Диффи-Хеллмана, с целью понижения их криптостойкости до 512-битных. Такие ключи, как показали исследователи FREAK, можно взломать в течение нескольких часов, однако здесь ситуация несколько иная: из-за того, что многое (устаревшее) ПО использует общедоступные статичные DH-группы и одни и те же предопределенные начальные простые числа, существует возможность предварительного выполнения дискретного логарифмирования методом решета числового поля до определенного состояния, которое позволяет быстро, в течение 2 минут, взломать сессионный ключ той DH-группы, для которой было сделано такое вычисление.

Ученые произвели предварительный расчет для двух популярных экспортных DH-групп: первая группа используется в Apache в версиях 2.1.5-2.4.7 и встречается на 7% сайтов из TOP 1M по версии Alexa, а вторая зашита в OpenSSL, еще когда он назывался SSLeay, в 1995 году. Расчет занял неделю для каждой группы, и проводился он с использованием модифицированной версии CADO-NFS.
По заявлению исследователей, предварительный расчет этих двух групп позволяет взламывать до 80% зашифрованных соединений на серверах, которые поддерживают экспортные DH-ключи. Были предложены и продемонстрированы на видео три способа проведения атаки:
  • Оффлайн-дешифрование слабых подключений для серверов, использующих 512-битные DH-ключи по умолчанию, при пассивном прослушивании трафика
  • Понижение стойкости ключей до 512-битных с использованием TLS False Start, путем MiTM-подмены отправляемых на сервер данных о типе DH
  • Понижение стойкости ключей до 512-битных путем MiTM-подмены отправляемых на сервер данных о типе DH, и приостановления соединения до момента взлома ключей
Читать дальше →

50+ лучших дополнений к Bootstrap

Reading time5 min
Views202K


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

Для статьи я подобрал наиболее полезные дополнения «на все случаи жизни».
Читать дальше →

Entity Framework и производительность, попытка вторая

Reading time3 min
Views15K
В первой своей попытке закрыть дыру в производительности Entity Framework'а я рассматривал только материализацию. Но дальше в процессе работы, как того и следовало ожидать, я наткнулся и на другое, более весомое ограничение. Операции вставки, модификации и удаления записей происходят тоже медленно. На 100 вставок EF посылает в базу 100 запросов на вставку, никак не пытаясь их сгруппировать.

Кроме этого, в одном из проектов была обнаружена одна неприятная ошибка: EF версии 5.0.0, при работе с Oracle, в Clob/Xml поля не позволяет вставлять строки более 2000 символов.
Решение

Удобоваримый вызов Java методов из нативного кода

Reading time7 min
Views18K
Существует довольно много приложений под Android, которые совмещают C++ и Java код. Где Java выступает оберткой/прослойкой, а C++ выполняет всю грязную работу. Пожалуй, ярким примером могут служить игры. В связи с этим часто приходится вызывать Java код из нативного для доступа к системным свойствам и плюшкам, которые предоставляет система (переключится на другую активность, послать или скачать что-либо из интернета). Причин много, а проблема одна: каждый раз приходится писать в лучшем случае 5 строчек кода и помнить, какую сигнатуру функции нужно запихнуть в параметр. Потом еще нужно перевести эти параметры в нужный тип. Стандартный пример из туториалов:

long f (int n, String s, float g); 

Строка-сигнатура для данного метода будет (ILjava/lang/String;F)J.

Вам удобно это все запоминать? А переводить С-строки в jstring? Мне — нет. Мне хочется писать:

CallStaticMethod<long>(className, “f”, 1, 1.2f); 

Подробности под катом

Интерфейсы «пользователю надо – всё равно пройдёт»

Reading time5 min
Views69K
Вот комикс «приключения одного пользователя в форме заказа»:



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

Изменения в Visual C++

Reading time12 min
Views36K
Когда вы захотите обновить версию Visual C++ компилятора (например, перейти с Visual Studio с 2013 на 2015), будет не лишним узнать, почему вы можете столкнуться с тем, что код, который прежде успешно компилировался и выполнялся, теперь будет вызывать ошибки компиляции и/или ошибки времени выполнения.
Эти проблемы могут быть вызваны многочисленными изменениями компилятора для соответствия стандарту С++, изменениями в сигнатурах функций или изменениями расположения объектов в памяти.
Узнать подробнее

Защита личных данных на Android-телефоне

Reading time26 min
Views119K
Мобильных компьютеров уже давно больше, чем стационарных. И наших личных данных на них так же значительно больше, чем на стационарных. При этом текущий дизайн OS мобильных устройств создаёт впечатление, что одна из их основных задач — как можно сильнее упростить доступ третьим лицам (в основном — корпорациям и государству, но и мелким разработчикам мобильных приложений тоже обламывается от этого пирога) к вашим личным данным.

Частичная открытость Android немного улучшает ситуацию, но полноценного решения проблемы утечки приватных данных пока не существует. Основная проблема в том, что пока на устройстве используются блобы нет никаких гарантий, что в них нет закладок (вроде обнаруженных в прошивках Samsung Galaxy). Аналогичная проблема с проприетарными приложениями без открытых исходников (вроде всего пакета GApps, начиная с самого Google Play Маркет). По сути всё как раз наоборот — крайне высока вероятность, что закладки там есть. Нередко их даже не пытаются скрывать, выдавая за удобные «фичи» для синхронизации и/или бэкапа ваших данных, обеспечивания вас полезной рекламой, и «защиту» от вредоносного софта или на случай утери устройства. Один из самых надёжных способов защиты своих данных описан в статье Mission Impossible: Hardening Android for Security and Privacy, но там речь не о телефоне, а о планшете, причём с поддержкой только WiFi (мобильных чипов без блобов по-моему вообще пока ещё нет, для мобильного инета вместе с этим планшетом предлагается использовать отдельный 3G-модем, блобы в котором никому не навредят т.к. на этом модеме личных данных просто нет), и, на всякий случай, физически отрезанным микрофоном. Но, несмотря на невозможность полноценно защитить личные данные на телефоне, я считаю что стоит сделать максимум возможного: прикрыть столько каналов утечек, сколько получится — ведь мало кто может позволить себе не использовать мобильный телефон или не держать на нём личные данные (хотя бы контакты и историю звонков).

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

Автоматизация тестирования Web-приложений

Reading time13 min
Views108K


Автоматизация тестирования – место встречи двух дисциплин: разработки и тестирования. Наверное поэтому, я отношу эту практику к сложным, но интересным.

Путем проб и ошибок мы пришли к следующему технологическому стеку:
  1. SpecFlow (опционально): DSL
  2. NUnit: тестовый фреймворк
  3. PageObject + PageElements: UI-абстракиця
  4. Контекст тестирования (информация о целевом окружении, пользователях системы)
  5. Selenium.WebDriver

Для запуска тестов по расписанию мы используем TFS 2012 и TeamCity.
В статье я опишу, как мы к этому пришли, типовые ошибки и пути их решения.
Читать дальше →

Интересные заметки по C# и CLR

Reading time11 min
Views49K


Изучая язык программирования C#, я сталкивался с особенностями как самого языка, так и его средой исполнения, *некоторые из которых, с позволения сказать, «широко известны в узких кругах». Собирая таковые день за днем в своей копилке, что бы когда-нибудь повторить, чего честно сказать еще ни разу не делал до этого момента, пришла идея поделиться ими.

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

Microsoft показала Project Astoria: как будет выглядеть использование Android-кода в Windows-приложениях

Reading time2 min
Views32K

На сайте Microsoft в разделе Universal Windows Platform Bridges появился анонс программного инструмента Project Astoria, предназначенного для переноса Android-приложений в Windows 10. Аналогичный по смыслу анонс с также звучным названием Project Islandwood сделан и для iOS.

Однако для Android, в отличие от общих заявлений в разделе для iOS, что Xcode-проекты можно будет импортировать в Visual Studio и собирать Windows-приложения с минимальными изменениями ObjectiveC-кода, инженеры проекта показали короткое видео с беглым описанием возможностей Project Astoria.
Узнать подробности

7 вещей, которые каждый дизайнер должен знать про дизайн доступных сайтов

Reading time7 min
Views47K
image

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

1. Доступность – это не препятствие для инноваций


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

Всегда помните, что вы занимаетесь дизайном не ради своих коллег. Разрабатывайте сайт для самых разных людей, которые будут взаимодействовать с вашим продуктом.
Читать дальше →

Expressions в C# — impress yourself!

Reading time9 min
Views110K
.NET 4.0 уже не за горами и принесет кучу всего нового, нужного и не очень, крутого и суперкрутого. Однако и в старом добром .NET 3.5 есть много разных интересных фич, которые не используются в повседенвной работе, но иногда здорово облегчают жизнь разработчикам. Одна из таких замечательных штук — это Expressions.
Много текста и кода

Интересные моменты работы LINQ to SQL. Опять

Reading time9 min
Views13K
С моего предыдущего поста прошёл месяц, по-моему самое время продолжить. В этот раз поговорим об Inheritance Mapping’е, ну а особо интересующихся в конце статьи ждёт сюрприз.

Итак, начнём.

Проблемы с дискриминатором


Разумеется, мы храним в нашей базе данных полиморфные сущности. Например, есть сущность CustomerOperation, которая отражает некоторую операцию, которую можно совершать над потребителем. Операции совершаются в основном через сервисы, поэтому есть наследник CustomerServiceOperation, а так же у нас есть механизм WebTracking’а, для которого есть WebTrackingOperation. Но довольно слов, лучше покажу код:
Читать дальше →

Самый худший из когда-либо созданных API

Reading time21 min
Views39K

Детальный взгляд на логирование переключение контекста с помощью Event Tracing API для Windows.


В ответ на пост прошлой недели, я получил следущее электронное письмо:
Может быть, я немножко опоздал с вопросом по поводу Вашего недавнего поста, но, на всякий случай, спрошу: Вы имеете какие-либо методы (стратегии) работы с внешней библиотекой, от которой Вы не можете избавиться, и которая нарушает некоторые (или все) принципы написания дизайна API (скорее всего, имеются в виду принципы, рекомендации, которые описаны в предыдущей статье автора. Прим. перев.)? Может, есть какие-то истории? Это расплывчатый вопрос, но я просто спрашиваю о любом опыте (как пользователя) использования API, который действительно запомнился.

— Michael Bartnett

Это напомнило мне то, что, действительно, я всегда хотел детально описать шаги, необходимые для использования плохого API — просто чтобы подчеркнуть насколько ужасно это может быть для разработчика. Я не думаю, что люди, которые разрабатывают API, действительно понимают насколько важно сделать его правильно и насколько много ненужной работы проделывают сотни, тысячи, а иногда и миллионы других разработчиков при неправильной, ошибочной разработке API. Итак, я почувствовал, что достаточно важно написать статью, которая покажет насколько много ненужной работы написанный API может вызвать.

Наверное, это была бы неплохая статья в цикле еженедельного разбора плохих API. Но, поскольку у меня нет времени на что-то подобное и есть возможность разобрать только один API, то возникает наиболее ВАЖНЫЙ вопрос — какой именно API я должен выбрать?

Event Tracing API для Windows


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

Гугл предлагает усилить JSON с помощью Jsonnet

Reading time5 min
Views28K
Гугл открыла исходный код своего проекта Jsonnet, языка для конфигурации, который заменяет стандартный JSON и добавляет новые возможности без нарушения обратной совместимости. Среди таких возможностей: комментарии, ссылки, арифметические и условные операторы, массивы и работа с объектами, импорт, функции, локальные переменные. Программы на Jsonnet транслируются в совместимый с JSON формат данных.

Комментарии. Jsonnet принимает комментарии в стиле С ( /* … */ ) и С++ ( // )

Ссылки. Ключевое слово self может быть использовано для ссылки на текущий объект. Оператор $ позволяет использовать корневой объект.

Арифметические и условные операторы. Оператор + может складывать числа, строки, массивы и объекты. Операторы == и != возвращают true или false. Оператор if работает как тернарный оператор ?: в С. Далее несколько примеров с операторами языка и результат. Примеры взяты со страницы проекта.
// bar_menu.3.jsonnet
{
    foo: 3,     
    bar: 2 * self.foo,  // Multiplication.
    baz: "The value " + self.bar + " is "
         + (if self.bar > 5 then "large" else "small") + ".",
    array: [1, 2, 3] + [4],
    obj: {a: 1, b: 2} + {b: 3, c: 4},
    equality: 1 == "1",
}
Читать дальше →

BIDI (unicode bidirectional algorithm)

Reading time5 min
Views16K
imageМультиязычные сайты — это хорошо, но довольно муторно. И если для самых популярных языков достаточно иметь несколько вариантов текста, то с добавлением RTL (right-to-left) всё становится гораздо хуже. Приходится заводить новый набор стилей с заменой всего правого на левое и наоборот (касается свойств типа float, padding, margin etc), но и это ещё не все. Могут возникнуть ситуации, когда в одном документе соседствуют фразы на языках с разным направлением, здесь и начинает работать bidi. Если это кому-нибудь интересно....
Подробности

Арабская локализация: слова, слова, слова

Reading time7 min
Views21K


Эта вторая часть рассказа про локализацию ABBYY FineReader Sprint на арабский. В отличие от первой части, где собственно про язык было мало, а про окна много, здесь речь пойдет уже про письменность и ее особенности.
Читать дальше →

Слой кэширования поверх Linq to SQL

Reading time10 min
Views7.9K
За последний год мы перенесли внушительную часть настроек DirectCRM в базу данных. Множество элементов промо-кампаний, которые мы до этого описывали исключительно кодом, теперь создаются и настраиваются менеджером через админку. При этом получилась очень сложная структура БД, насчитывающая десятки таблиц.

Однако, за перенос настроек в базу данных пришлось расплачиваться. Об архитектуре, позволяющий кэшировать редко меняющиеся Linq to SQL сущности, смотрите под катом.
image
Читать дальше →

Information

Rating
4,336-th
Registered
Activity