Софтуерен бъг напълнил сметката на програмист
Понякога неволна неточност в кода може да докара до… струпване на благосъстояние
(снимка: CC0 Public Domain)
Програмист, инцидентно объркал единствено няколко знака в кода на вътрешния програмен продукт на телекомуникационен оператор, за няколко часа станал доста богат – по сметката му постъпила внушителна сума. Но в последна сметка той трябвало да върне парите под зоркия взор на службата за сигурност и да поправя грешката в кода.
Софтуерният експерт в дребен мобилен оператор трансферирал голяма сума по сметката си, като направил единствено една неточност в програмния код. За тази любопитна преживелица от началото на 21 век споделя The Register. В обявата програмистът е именуван Трей.
100 вместо 0,01
Трей работи за дребна телекомуникационна компания, чието име не се разкрива. Фирмата интензивно изграждала клетъчни мрежи от трето потомство (3G) и се нуждаела от профилиран вътрешен програмен продукт за обработка на данни – нещо, което припомня система за таксуване на базово равнище.
Трей бил част от екипа, който създал софтуера. Един ден той забелязал, че шлюзът за заплащане не се държи вярно и по тази причина написал програмен продукт, който да изпраща тестови транзакции към акаунта му на шпации от пет минути, до момента в който шлюзът се възвърне.
Но планирайки да зададе размера на една транзакция на $0,01, той неверно написал $100. Това привлякло вниманието на службата за сигурност на оператора.
Преди внедряването Трей посочил софтуера, който написал, с цел да тества работата на шлюза, на своя управител и той го хареса толкоз доста, че настоял за незабавното му консолидиране в системата на оператора. Шефът на Трей не се тормозил от обстоятелството, че това е “домашно ” написан програмен продукт, създаден без указания, нито от обстоятелството, че е единствено ранна нестабилна версия, за което бил предизвестен от разработчика.
Три съществени неточности
Всъщност в програмния код на Трей са позволени три съществени неточности, две от които той не съумял да открие по време на тестването, а третата нямал време да поправи. Първата неточност е в цената на тестовите транзакции, която трябвало да бъде цяло число, последвано от модификатор.
Идеята на Трей била, че цялото число в цената ще бъде 1, а модификаторът ще бъде -2, което ще сътвори тестова транзакция от $0,01. Но експонентата била инцидентно заложена на 2 вместо на -2, вследствие на което всяка транзакция коствала $100.
Втората неточност е неналичието на по този начин наречената „ инспекция на жизнеспособността ” (liveness check). Когато един от шлюзовете за заплащане падне, програмата не заспива за пет минути след всяка несполучлива транзакция, а просто незабавно се пробва да обработи транзакцията още веднъж, което води до безконечен брой транзакции.
Третата неточност, за която Трей знаел, само че считал да я поправя по-късно, била, че изборът на заем или дебит в тестовите транзакции трябвало да бъде инцидентен, само че по някаква причина постоянно се появявал като заем. Трей решил, че това няма да е чак толкоз огромен проблем, като се има поради, че транзакциите трябвало да бъдат единствено $0,01 на всеки пет минути, само че не взел поради съществуването на предходните две неточности.
По-добре не спорете с защитата
Когато тестовата стратегия към този момент работила в инфраструктурата на оператора, един от шлюзовете за заплащане спрял да действа. Било късно вечерта, след края на работното време. Малката помощна стратегия на Трей реагирала неотложно и почнала да зарежда тестовата му сметка със $100 съвсем без спиране през идващите няколко часа.
Когато Трей дошъл на работа на идната заран, той бил посрещнат от чиновниците по сигурността на оператора с доста съществени изражения на лицата. След като го поздравили, те попитали какви лъжливи схеми се пробва да завърти зад тила на работодателя си. До този миг Трей натрупал цяло положение в тестовата си сметка, написа The Register, без да разкрива сумата.
Неговият директен началник съумял да избави Трей от цяла поредност от проблеми. Обяснил обстановката на чиновниците по сигурността и описал по какъв начин самият той е разрешил внедряването на нетествана стратегия. Не е известно какви наказания в последна сметка са били приложени против Трей и неговия началник, само че тестовата му сметка била наложително изпразнена.
Източник: technews.bg
КОМЕНТАРИ




