Веб-разработчики пишут небезопасный код по умолчанию

«Если хотите, я могу зашифровать пароли»


5b5ftwhnbu3caqowwkemv5iyhwy.png


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

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

Новое исследование из Университета Бонна (Германия) показывает, что разработчики-фрилансеры по умолчанию придерживаются исключительно небезопасных практик, если только заказчик не требует большего.
Исследователи предложили 260 Java-разработчикам на Freelancer.com разработать систему регистрации для воображаемой социальной сети, которую заказчики якобы начинали делать. Из них только 43 согласились на заказ, который предусматривал использование технологий Java, JSF, Hibernate и PostgreSQL

Половина разработчиков получила за работу 100 евро, а половина — 200 евро. Половине каждой из двух групп дали указания использовать защищённое хранилище паролей, другим — нет.

Хотя выборка явно мала, но разница настолько значительная, что она позволяет предположить некие общие тенденции. Вот некоторые результаты исследования:

  • Кому не были предоставлены инструкции, 15 из 18 хранили пароли открытым текстом
  • Кому поручили использовать защищённое хранилище, трое тоже хранили пароли в открытом тексте.
  • Программисты, которые зашифровали пароли, использовали небезопасные методы: 31 программист использовал для шифрования такие методы, как Base64, MD5, SHA-1 и т. д.
  • Только 12 фрилансеров применили безопасные методы, такие как bcrypt и PBKDF2.


8 человек использовали для шифрования Base64
10 — MD5
1 — SHA-1
3 — 3DES
3 — AES
5 — SHA-256
1 — HMAC/SHA1
5 — PBKDF2
7 — Bcrypt

В таблице внизу (увеличивается по клику) приведены полные результаты по каждому участнику: сколько дней ему потребовалось на выполнение задания, сколько из этого времени он потратил на реализацию безопасности и какой алгоритм шифрования применил. В верхней половине таблицы те, кому дали прямое указание зашифровать информацию. Жирным выделены участники, которые сначала прислали небезопасное решение, но потом получили дополнительное указание реализовать защищённое хранилище паролей.

ytw5h5afyeyx7k0dc1nxaya1diq.png

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

Только 15 разработчиков применили соль — строку данных, которая передаётся хеш-функции вместе с паролем, что существенно усложняет брутфорс.

fz9jyw7nqo1xqpy4jj5k4zwucly.png
В таблице (можно увеличить по клику) показаны демографические данные участников исследования. Как видим, в основном это мужчины, средний возраст 30 лет, из 11 стран (в двух случаях страна не указана)

Низкооплачиваемые и высокооплачиваемые группы сработали примерно на одном уровне качества.

В целом исследование довольно удручает. Можно предположить, что базовая осведомлённость о безопасности среди фрилансеров невероятно низка. Из 18 участников, которые получили специальные указания использовать криптографию, трое решили использовать Base64 и утверждали, например:»[Я] всё зашифровал, так что пароль не виден» и «Его очень сложно расшифровать».

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


jwexjbpgonbyh_esgg71ncrp-dw.png

© Habrahabr.ru