Веб-разработчики пишут небезопасный код по умолчанию
«Если хотите, я могу зашифровать пароли»
Некоторые разработчики, которым дали прямое указание применить криптографию, использовали шифрование парольной базы с помощью Base64
Неужели в наше время возможно такое нарушение правил безопасности? Когда в СМИ появляется информация об очередной утечке данных, всегда вызывает недоумение, почему компания хранила пароли пользователей открытым текстом, не защитила API или сделала какую-то другую элементарную ошибку.
Из них только 43 согласились на заказ, который предусматривал использование технологий Java, JSF, Hibernate и PostgreSQL Новое исследование из Университета Бонна (Германия) показывает, что разработчики-фрилансеры по умолчанию придерживаются исключительно небезопасных практик, если только заказчик не требует большего.
Исследователи предложили 260 Java-разработчикам на Freelancer.com разработать систему регистрации для воображаемой социальной сети, которую заказчики якобы начинали делать.
Половине каждой из двух групп дали указания использовать защищённое хранилище паролей, другим — нет. Половина разработчиков получила за работу 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 и утверждали, например: «[Я] всё зашифровал, так что пароль не виден» и «Его очень сложно расшифровать».
Исследование не даёт ответа на этот вопрос. Возможно, такое поведение специфично только для фрилансеров, а штатные сотрудники без посторонних указаний сразу стараются сделать безопасное решение?