Как создавался интернет и почему он похож на один большой костыль?
Как развитие интернета способствовало развитию уязвимостей и как это в спешке пытаются (но это не точно) все исправить.
Почему попытки классификации уязвимостей выглядят смешно?
Почему практически все, что нас окружает - плохо и как с этим жить дальше?
2. В 1930-х годах правительство США поручило Гарвардскому
и Принстонскому университетам разработать архитектуру
ЭВМ для военно-морской артиллерии.
3. • Архитектура фон Неймана
Совместное использование шины для памяти программ и памяти
данных
• Гарвардская архитектура
Исходя из физического разделения шин команд и данных,
разрядности этих шин (следовательно, и адресные пространства)
могут различаться и физически не могут пересекаться
4. • Архитектура фон Неймана
Совместное использование шины для памяти программ и памяти
данных
• Гарвардская архитектура
Исходя из физического разделения шин команд и данных,
разрядности этих шин (следовательно, и адресные пространства)
могут различаться и физически не могут пересекаться
5. Как люди с болью и
страданиями шли к
современному интернету
7. А для чего?
Для публикации гипертекстовых
документов, которые были бы связаны
между собой гиперссылками.
Приставку «гипер» тогда любили, да.
Как сейчас «кибер».
8. Интернет Камень
Возможность записи текста Да Да
Передача данных На длинные расстояния Только на короткие расстояния
Децентрализованность Да Нет
Удобство Да Нет
9. OOPS
Уже в 1980-е годы стало очевидно, что
распределение адресного пространства
происходит значительно более
быстрыми темпами, чем было
заложено в архитектуру IPv4. Это
привело сначала к появлению
классовой адресации, позднее
бесклассовой адресации, и в конечном
итоге к разработке нового протокола
IPv6.
10. Сейчас IPv6 дает практически
неограниченное количество
«прокси» злоумышленникам
21. Формы уязвимы к атакам CSRF (межсайтовая подделка
запроса) - костыль, csrf-токены и их аналоги
Пароли передаются прямо в ссылке (костыль –
внедрение сессионных идентификаторов)
Фиксация сессии и их утечки
24. PHP развивает мир
динамических
сайтов
• Низкий порог вхождения
(легкий и понятный ЯП)
• PHP код можно внедрять в HTML
страницу (и наоборот)
• Поддержка множества баз
данных (да здравствуют SQL
инъекции)
26. Что было и что осталось
Костыли вида <a href=“javascript:void(0)”>tag</a>
Верстка таблицами и прозрачными картинками
Мертвые теги 90х, такие как marquee (бегущая
строка).
27. Много лишнего
• Осенью 2009 года Бернерс-Ли
извинился за то, что в созданном им
стандарте веб-адресов
используются две косые черты
("слэши" - "//"). По его словам, они
были совершенно лишними, и
добавление их к адресам вызывало
исключительно трату времени.
• www.site.com, ну вот зачем тут
www?
34. От атак с помощью js очень сложно
защититься
1) Неявные вызовы функций
2) Отсутствие строгой консистентности для
интерпретации (тот же jsfuck.com)
3) Он умеет все, что может пользователь, только больше
(работать с данными, DOM-деревом, кликать кнопочки)
48. Подытожим
XSS – это Cross Site Scripting с замененной буквой. В
переводе – межсайтовое выполнение сценариев, в
которой выполнение сценариев может быть не
межсайтовым.
Не уязвимость, а атака с разным уровнем риска
¯ _ (ツ) _ / ¯
50. Пароли должны умереть
В среднем 3 используемых
пароля
Повседневный, усложненный и
пароль для использования в
мобильных устройствах
Стандартное
мышление - у многих
людей одинаковые
пароли
51. Видели плановые
смены паролей?
• Бессмысленная штука, так как
пароли злоумышленник использует
здесь и сейчас
• Начинают использовать
инкрементные пароли
• Есть сообщение, что пароль устарел
– меняют пароль на новый, а затем
тут же на старый
53. Стало безопаснее?
У нас есть пароль. При входе просит код из SMS.
Злоумышленник крадет телефон или восстанавливает симку.
Жмет «забыл пароль» – восстанавливает пароль через SMS.
Входит в наш аккаунт, подтверждает код из SMS.
57. • Некорректные (небезопасные) примеры в книгах, уроки,
преподавание
• Уязвимости «из коробки» – по умолчанию продукты имеют
небезопасную конфигурацию
• Некорректные советы по предотвращению и исправлению
уязвимостей
«экранируй кавычки» - говорили они
«заверни данные в функцию htmlspecialchars» - кричали они
62. Проблема 2000 года
Проблема, связанная с тем, что разработчики программного
обеспечения, выпущенного в XX веке, иногда использовали два знака
для представления года в датах, например, 1 января 1961 года в таких
программах представлялось как «01.01.61». Некоторые вычислительные
машины имели уже аппаратную обработку даты, однако всего два
десятичных знака (т.е. вместо 4 цифр "1961" хранились и
обрабатывались только 2 цифры "61", см. подпись ко второй картинке
справа).
При наступлении 1 января 2000 года при двузначном представлении
года после 99 наступал 00 год (то есть 99+1=00), что интерпретировалось
многими старыми программами как 1900, а это, в свою очередь, могло
привести к серьёзным сбоям в работе критических приложений,
например, систем управления технологическими процессами и
финансовых программ.
63. TODO: Проблема 2038 года
Ожидаемые сбои в программном обеспечении 19 января
2038 года. Данная проблема затрагивает программы и
системы, в которых используется представление времени
по стандарту POSIX (UNIX-время), которое представляет
собой количество секунд, прошедшее с 1 января 1970
года. Такое представление времени — это стандарт для
Unix-подобных операционных систем (из-за
повсеместного использования языка Си).
64. И еще куча всего
• Wi-Fi
• Смартфоны
• Интернет вещей
• Использование слабых
криптографических функций и
функций свертки