Хакер #305. Многошаговые SQL-инъекции
Американская Комиссия по ценным бумагам и биржам (SEC) приняла решение оштрафовать один из крупнейших международных финансовых конгломератов, Citigroup, на 7 млн долларов из-за программного бага. Оказалось, что Citigroup на протяжении 15 лет снабжал SEC неполными версиями отчетов, из которых просто выпадала часть информации.
Об ошибке стало известно еще в 2014 году, когда представители Комиссии по ценным бумагам и биржам запросили у Citigroup большой срез данных об уже осуществленных финансовых операциях. Инженерам Citigroup тогда поручили определить внутренние ID подразделений, с которыми предстояло работать. Инженеры и обнаружили ошибку, из-за которой, как оказалось, некоторые данные вообще никогда не попадали в отчеты.
Баг закрался в работу автоматизированного ПО, которое отвечало за составление отчетов, различая подразделения банков Citigroup по трехзначным кодам. В середине 90-х, когда эта программа только была создана, Citigroup присвоила каждому подразделению номер, состоящий из трех цифр. При этом значения от 089 до 100 были исключены из списка и применялись для «тестовых нужд».
Ситуация изменилась в 1999 году, когда Citigroup перестало хватить трехзначных кодов, так как сеть росла быстрее, чем прогнозировалось. Тогда разработчики предложили компании перейти на буквенно-цифровые коды, и в код закралась ошибка. Дело в том, что буквы A, B, C обрабатывались как значение, менее чем 0. То есть программа интерпретировала трехзначный код подразделения 10B, как значение меньшее, чем 100. Из-за этого некоторые операций Citigroup автоматически были отнесены к пулу «для тестовых нужд», и никогда не попадали в отчеты для SEC.
Обнаружив ошибку, инженеры Citigroup честно сообщили о ней SEC, доложив, что в период с мая 1999 года по апрель 2014 года предоставляемые отчеты были неполными. В нормальных обстоятельствах SEC позволила бы компании устранить ошибку и попросила бы предоставить исправленные версии отчетов. Но учитывая, что в данном случае проблема оставалась незамеченной на протяжении 15 лет, и Citigroup за это время успела подать 2382 отчета, из которых «выпали» 26 810 транзакий, Комиссия по ценным бумагам и биржам приняла решение наказать Citigroup. Окончательный вердикт был вынесен 12 июля 2016 года. На Citigroup было решено наложить штраф в размере 7 млн долларов. С полной версией заключения SEC можно ознакомиться ниже.
Фото: AP Photo/Andrew Harnik