Читаем Взломать всё. Как сильные мира сего используют уязвимости систем в своих интересах полностью

Например, долговое соглашение 2013 г., принятое конгрессом, включало следующую формулировку: «SEC. 145. В подраздел (b) статьи 163 Публичного закона 111–242 с поправками внесены дополнительные изменения: "2013–2014" меняется на "2015–2016"». Это, казалось бы, безобидное положение, внесенное сенатором Томом Харкином, оказалось скрытым подарком для Teach For America[24]{152}. По сути, эта поправка продлила на два года действие другого законодательного акта, от которого выигрывали студенты, участвующие в программах подготовки учителей, в том числе рекруты Teach For America.

В 2020 г. конгресс принял Закон о помощи, поддержке и экономической безопасности в период коронавируса (CARES) на $2 трлн о мерах стимулирования экономики в условиях пандемии. На странице 203 законопроекта было внесено изменение, согласно которому инвесторы в недвижимость могли компенсировать свои убытки{153}. Эта налоговая льгота принесла магнатам недвижимости, таким как действующий на тот момент президент Дональд Трамп, прибыль в размере $17 млрд в год, которые могли стать налоговыми поступлениями. Положение не имело никакого отношения к COVID-19, а налоговая льгота, имевшая обратную силу, охватывала период, начинавшийся задолго до появления коронавируса. Спешка и скрытность помогли протащить это положение в законопроект. Его текст был окончательно доработан менее чем за час до голосования, что позволило республиканцам, входившим в рабочую группу законопроекта, добавить нужное положение буквально в последний момент.

Главная уязвимость законодательного процесса состоит в том, что законопроекты – это чрезвычайно большие и сложные документы, которые содержат множество положений без четко обозначенных последствий. Эксплойт внедряется в законопроект таким образом, чтобы законодатели этого не заметили. Нам кажется, что для такого рода махинаций требуется соучастие члена конгресса, который осознает последствия своего вклада в законопроект, но на самом деле внедрить эксплойт способен и рядовой сотрудник, не понимая того, что делает, и даже лоббист, разрабатывающий формулировку, которая в итоге попадет в текст закона.

Это настолько распространенная практика{154}, что язык не поворачивается назвать ее хакингом. За последние десятилетия власть все больше концентрировалась в руках лидеров политических партий в каждой из палат в ущерб законодательным комитетам, что способствовало установлению закрытого и непрозрачного законодательного процесса. Такое положение дел в сочетании с тем, что конгресс стал принимать меньше крупных законопроектов по сравнению с прошлыми сессиями, дает широкие возможности для внедрения скрытых положений, выгодных привилегированному классу и отраслям. Эта ситуация даже обыгрывается в одном из эпизодов «Симпсонов», когда клоун Красти избирается в конгресс{155} и протаскивает поправки в закон об управлении воздушным движением через законопроект об обеспечении флагами сирот.

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

Законотворчество устроено иначе. Оно децентрализованно на каждом из уровней. В демократическом обществе закон пишется представителями разных конкурирующих сил. У них разные цели и разные мнения о том, что должен делать закон. Даже если все хорошо понимали, за что они голосовали, в тексте больших законопроектов неизбежны лазейки, которые одни законодатели назовут ошибкой, а другие воспримут как полезную фичу.

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

Перейти на страницу:

Похожие книги

Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT
Фундаментальные алгоритмы и структуры данных в Delphi
Фундаментальные алгоритмы и структуры данных в Delphi

Книга "Фундаментальные алгоритмы и структуры данных в Delphi" представляет СЃРѕР±РѕР№ уникальное учебное и справочное РїРѕСЃРѕР±ие по наиболее распространенным алгоритмам манипулирования данными, которые зарекомендовали себя как надежные и проверенные многими поколениями программистов. По данным журнала "Delphi Informant" за 2002 год, эта книга была признана сообществом разработчиков прикладных приложений на Delphi как «самая лучшая книга по практическому применению всех версий DelphiВ».Р' книге РїРѕРґСЂРѕР±но рассматриваются базовые понятия алгоритмов и основополагающие структуры данных, алгоритмы сортировки, поиска, хеширования, синтаксического разбора, сжатия данных, а также многие другие темы, тесно связанные с прикладным программированием. Р

Джулиан М. Бакнелл

Программирование, программы, базы данных