Пълният курс по етично хакерство: от начинаещ до експерт. Хаквайте като киберпрестъпници с черни шапки. Тестване за проникване, Kali Linux, WiFi и уеб хакерство, както и хакерският начин на мислене зад всичко това.

Изтекли кредитни карти все още плащат на касите. Изследователи са похарчили 500 долара за една трансакция и 2,79 долара в магазин. Картите вече са били върнати за замяна, но сметката зад тях е останала отворена.

Платежната карта дава едно обещание на лицевата си страна. Отпечатаната там дата е денят, в който картата спира да работи. Магазините разчитат на нея, банките разчитат на нея, а вие разчитате на нея, когато пускате стара карта в чекмеджето, вместо да я унищожите. Изследователи от Университета на Масачузетс в Амхърст развенчаха това обещание. Техният извод е, че датата изобщо не е свойство на самата карта. Датата е политика, проверявана на различни места от страни, които никога не сравняват данните си помежду си, а карта, чийто срок е изтекъл, все още може да плаща.

За да разберете как, трябва да имате представа как протича едно безконтактно плащане.

Когато доближите картата си до терминал, той изисква данните от нея. Картата отговаря с номера на сметката си, датата на изтичане и няколко други полета. Терминалът чете тази дата, сравнява я с днешната и решава дали да продължи. Ако картата е изтекла, той отказва трансакцията на място. Това сравнение е единственото нещо, което стои между старата карта и плащането.

Датата, която терминалът сравнява, се изпраща в открит текст и нищо не я свързва с останалата информация.

Това би било преодолимо, ако имаше само едно копие на датата. Но те са две. Първото е полето, което терминалът чете за своята проверка – таг 5F24. Второто се намира в блока с данни за сметката, който се изпраща на вашата банка, когато плащането се извършва онлайн за одобрение – таг 57. Терминалът гледа първото, вашата банка гледа второто, а версията на Visa за безконтактния стандарт не изисква двете да съвпадат.

Ето какво изпраща картата обратно:

Стойността 240831 в таг 5F24 означава 31 август 2024 г. В таг 57, след номера на сметката, същата дата се появява отново в различна форма. Променете първата дата с бъдеща такава, оставете втората недокосната и терминалът ще приеме карта, която вече е изтекла, докато банката ще получи данни за сметката, които изглеждат напълно нормално.

Очевидният въпрос е защо криптографията на картата не спира това, тъй като платежната карта подписва данните за трансакцията, а промяната на подписани данни нарушава подписа. Датата на изтичане обаче не е част от данните, които се подписват.

Ключовете също не изтичат. Картите носят сертификати със свои собствени дати на валидност, а в спецификацията се казва само, че картата не трябва да надживява сертификата на своята банка. Никъде не се казва, че сертификатът трябва да изтече заедно с картата, и банките умишлено издават сертификати, които важат и след датата на картата, за да може подмяната им да се припокрива. Изтекла карта все още може да докаже автентичността си, да се подпише правилно и да генерира валидна криптограма. Отвътре нищо в нея не е изтекло.

Това оставя вашата банка като последна линия на защита, но самият стандарт затваря и тази врата. По време на трансакция терминалът поддържа петбайтов регистър на състоянието, в който записва как са преминали проверките му, и когато реши, че дадена карта е изтекла, той задава съответния бит в този регистър. Раздел B.1.1 от спецификацията на ядрото на Visa обаче инструктира терминала да изпрати този регистър към банката, попълнен с нули.

Терминалът е забелязал. Банката никога не е била уведомена.

Това, което достига до банката, е валидна криптограма, номер на сметка, която все още е активна, и отчет, в който се казва, че нищо не се е объркало. Оттам нататък всичко опира до начина, по който всяка банка проверява данните. Някои валидират сметката: съществува ли този номер, отворена ли е сметката, и одобряват трансакцията. Други валидират картата: дали точно тази конкретна карта, с точно тази конкретна дата, е тази, която в момента считат за валидна. Изпитани са пет големи американски банки и те не са на едно мнение.

Една от тях одобри всичко. На собствения терминал на изследователите изтекла карта, която вече е била върната на банката, е платила 1,00 долар, след това 100,00 долара, а после и 500,00 долара. Извън лабораторията тя е платила 2,79 долара в магазин и 3,19 долара в хранителен магазин, на обикновени търговски терминали, които нямат нищо общо с тяхната тестова конфигурация. Картата на снимката им завършва на 8634.

Втора банка позволи на трансакцията да достигне до мрежата и след това я отказа, като изпрати имейл на картодържателя да използва новата карта вместо старата. Същата атака, същият стандарт, но противоположен отговор, тъй като това решение е оставено изцяло на преценката на банката.

Другите картови мрежи отказаха трансакциите, и начинът, по който всяка от тях го прави, е важната част, защото показва, че това е било напълно предотвратимо:

  • Mastercard сравнява двете полета за изтичане на срока едно с друго и третира несъответствието като грешка в данните на картата.
  • American Express включва датата в данните, които нейните карти подписват, така че всяка промяна нарушава подписа.
  • Discover поставя всички данни за трансакцията под един общ хеш и ги проверява накрая.

Три начина да се направят нещата правилно в рамките на един и същ стандарт. Разликата има име в спецификациите. Ядрото на Visa използва бързо динамично удостоверяване на данни (Dynamic Data Authentication), което оставя датата на изтичане извън данните, подписвани от картата. Ядрото на Discover използва комбиниран метод...