«Если хотите, я могу зашифровать пароли»
Некоторые разработчики, которым дали прямое указание применить криптографию, использовали шифрование парольной базы с помощью 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
В таблице внизу (увеличивается по клику) приведены полные результаты по каждому участнику: сколько дней ему потребовалось на выполнение задания, сколько из этого времени он потратил на реализацию безопасности и какой алгоритм шифрования применил. В верхней половине таблицы те, кому дали прямое указание зашифровать информацию. Жирным выделены участники, которые сначала прислали небезопасное решение, но потом получили дополнительное указание реализовать защищённое хранилище паролей.
В подавляющем большинстве программисты не смогли реализовать основные методы безопасности, а 17 из 43 скопировали код со случайных веб-сайтов.
Только 15 разработчиков применили соль — строку данных, которая передаётся хеш-функции вместе с паролем, что существенно усложняет брутфорс.
В таблице (можно увеличить по клику) показаны демографические данные участников исследования. Как видим, в основном это мужчины, средний возраст 30 лет, из 11 стран (в двух случаях страна не указана)
Низкооплачиваемые и высокооплачиваемые группы сработали примерно на одном уровне качества.
В целом исследование довольно удручает. Можно предположить, что базовая осведомлённость о безопасности среди фрилансеров невероятно низка. Из 18 участников, которые получили специальные указания использовать криптографию, трое решили использовать Base64 и утверждали, например: «[Я] всё зашифровал, так что пароль не виден» и «Его очень сложно расшифровать».
Возможно, такое поведение специфично только для фрилансеров, а штатные сотрудники без посторонних указаний сразу стараются сделать безопасное решение? Исследование не даёт ответа на этот вопрос.