Business Logic уразливості на www.liqpay.com

23:51 30.12.2010

Продовжу свою серсію записів про Business Logic уразливості на різних e-commerce сайтах. В статті Business Logic уразливості через CSRF я писав про Business Logic уразливості, що дозволяють маніпулювати фінансовими даними користувачів. Які можна ініціювати через CSRF атаки.

Після www.propage.ru в якості приклада таких уразливостей наведу уразливості на www.liqpay.com - електроній платіжній системі LiqPAY. Враховучи, що після оприлюднення мною попередніх уразливостей в LiqPAY, ПриватБанк проігнорував їх, я оприлюднюю їх одразу (full disclosure).

У листопаді, 15.11.2009, я знайшов Cross-Site Request Forgery та Insufficient Process Validation уразливості на сайті https://www.liqpay.com. Які дозволяють переводити гроші на інші рахунки LiqPAY чи на карти. Про що найближчим часом сповіщу адміністрацію сайта.

Виводити гроші з рахунків і карт користувачів можна через обідві уразливості (CSRF і Insufficient Process Validation). Дані уразливості наявні в двох функціоналах системи, тому можливі атаки на кожну з них: для виведення на інший рахунок LiqPAY і для виведення на карту. Тобто всього 4 уразливості.

CSRF:

Функціонали виведення грошей на інший LiqPAY акаунт і на карту вразливі до CSRF.

Для виведення коштів на інший LiqPAY акаунт потрібно відправити два запити:

POST запит на https://www.liqpay.com/?do=transfer_create&to=to_phone

do=from_phone_to_phone_confirm&currency=USD&to_phone=_num_&amount=1000&currency2=USD&special=transfer_create

POST запит на https://www.liqpay.com/?do=transfer_create&to=to_phone
do=from_phone_to_phone_result

Для виведення коштів на карту потрібно відправити два запити:

POST запит https://www.liqpay.com/?do=transfer_create&to=to_card

do=from_phone_to_card_confirm&currency=USD&to_card=_num_&amount=1000&currency2=USD&special=transfer_create

POST запит https://www.liqpay.com/?do=transfer_create&to=to_card
do=from_phone_to_card_result

Insufficient Process Validation:

В фунціоналах виведення коштів на інший LiqPAY акаунт і на карту немає перевірки автентичності запиту - через отримання sms-ки з кодом і введення даного коду. Тому OTP вводиться лише при логіні, а всі транзакції в системі не підтверджуються OTP. При тому, що подібний захист існує в Приват24. Але чомусь в LiqPAY ПриватБанк цього не зробив (мабуть бажаючи “спростити” цей процес для користувачів), що призвело до значного погіршення безпеки, особливо враховучи CSRF уразливості.

Виправлення CSRF не вирішить проблеми повністю. Тому що гроші з рахунків користувачів можна бути виводити через XSS, при доступі до мобільника користувача, через віруси або при тимчасовому доступі до комп’ютера. Тому потрібно виправляти також і Insufficient Process Validation.


Leave a Reply

You must be logged in to post a comment.