Вы находитесь на странице: 1из 24

3d secure

или что скрывается в


механизмах безопасности
онлайн-платежей

@webr0ck
whoami

• Twitter: @webr0ck
• Pentester @Digital Security
• N Red Team member
• Bug hunter (Yandex, Mail.ru, QIWI)
• Sometimes a speaker (ZeroNights, Defcon)
Александр Романов
Заместитель директора
департамента аудита
al.romanov@dsec.ru

Digital Security 2
Содержание

01 04
Что такое 3DS И что в итоге?
Терминология и область применения Описание найденных уязвимостей

02 05
Как это работает? Заключение
Варианты использования и версии Полезные ссылки

03
А поподробнее?
Разбираемся в передаваемых внутри
системы сообщениях

Digital Security 3
Что такое 3DS

3D-Secure (Three-Domain Secure)


XML-протокол, используется как дополнительный уровень защиты банковских карт при
совершении интернет-платежей. Безопасность повышается за счёт двухфакторной
аутентификации пользователя.

«3D» означает «3 домена», в которых работает протокол. Это домен эмитента (домен банка,
выдавшего карту), домен эквайера (домен продавца и банка, в который перечисляются
деньги) и домен совместимости (домен, предоставляемый платёжной системой для
поддержки протокола 3D Secure).

Технология впервые была предложена платежной системой Visa в рамках услуги Verified by
Visa (VbV). Сегодня услуги, основанные на данном протоколе, также приняты и другими ПС:

• Mastercard под названием Mastercard SecureCode (MCC)


• JCB International как J/Secure
• AmEx как SafeKey
• Мир (НСПК) как Мир Accept

Digital Security 4
Что такое 3DS

Зачем это вообще нужно?

Дополнительный уровень защиты — в виде запроса дополнительной информации

Перенос ответственности — ответственность переносится на банк-эмитент, выпустивший


карту, или на самого клиента

Повышение доверия потребителей — лояльность к онлайн-платежам поспособствовала росту


электронной коммерции

Digital Security 5
Как это работает?

DS Transaction Phase 3DS 1.x 3DS 2.x


Версии 3DS
Ranges cache loading CRReq/CRRes PReq/Pres
(Preparation Message)
v1.0 - 2001 г - …
Participation/enrollme VEReq/VERes AReq/ARes
v2.0 - 2014 г – Deprecated nt check (Authentication
v2.1 - 2017 г Message)
v2.2 - 2018 г
Frictionless N/A
Part of AReq/ARes
authentication
Challenge PAReq/PARes CReq/CRes
authentication (Challenge Message)
and confirmation +
RReq/RRes
(Results confirmation
Message)

Digital Security 6
Как это работает?

Digital Security 7
Как это работает?
v.1, но чуть более подробно
PaReq
User
Emitent
Shop(MPI)
Bank(ACS)
PaRes

CRReq PaReq VEReq


и VEReq

PaRes VERes
СRRes и
VERes

Interoperability Domain
In user browser
Access Control Server (ACS)
Hidden Communication Merchant plug-in (MPI)
Digital Security 8
А поподробнее?

VEReq и VERes

Digital Security 9
А поподробнее?

Pareq

url: https://site.ru/acs/pareq

MD=5ebde4d3-3796-7a4d-5ebd-
e4d300003dd0&PaReq=eJxVUstywjAM%2FBUm98QPDDiMcIc2dMoh0AedKb2ljiDpNAFMUgJfXzuFPnzSrj
QraWW4aoqPzieafb4pRx4LqNfBUm%2FSvFyPvOfFrS%2B9KwWLzCBGT6hrgwpi3O%2BTNXbydOS96VDo
cEX9FePaF1IIPwlF6qeoV7Inqeyh9hTcjx9xp%2BDcSNk%2BAQdygVbR6CwpKwWJ3l1PZ0rwQZ9SIGcIBZpp
pAaSuse7POwC%2BeagTApUy%2FEsmrwE8Xw2WQJpKdCbuqzMUfWFLb4AqM2HyqpqOyTkcDgExabEY3B
MyhSbwNRAXB7I70D3tYv2Vq%2FJUzU7Teg8ejjE7xMWn9Z8Hk35fKEtNx4BcRWQJhUqTplklIoOC4c9NuwO
gLQ8JIUbRDHK2vW%2BEWxdk%2FG%2F1F8KrO%2FGnuWyywUBNls7v62wZv7EQH5nvrlzlurKGsUGNOwy
0ZfhXf5udlkmV7ey98rfmnjpjG6LnGJubeKUslbSASBOhpxvSM7nt9G%2Fb%2FEFnkK9RA%3D%3D&TermU
rl=https%3A%2F%shop.ru%2Fgates%2F3ds

Digital Security 10
А поподробнее?

Pareq это всего лишь zlib->base64->urlencode

Git: https://github.com/webr0ck/3D-Secure-audit-cheatsheet

Digital Security 11
А поподробнее?

Pares похож на Pareq, но со своей изюминкой

• Signing Certificate
• Signature
• Digest это SHA256 из строки:
Нужные поля из Message + Secret

Digital Security 12
А поподробнее?

Pares – вывод ошибок

• <ThreeDSecure><Message
id="poEpShmja0A36YWe0JOyr4Zt"><Error><version>1.0.2</version><errorCode>99</errorCode><errorMes
sage>Permanent system failure.</errorMessage><errorDetail>Failed to build error
message.</errorDetail></Error></Message></ThreeDSecure>

• <errorCode>5</errorCode><errorMessage>Format of one or more elements is invalid according to the


specification.</errorMessage>

• <errorCode>98</errorCode><errorMessage>Transient system failure</errorMessage>

• <errorCode>4</errorCode><errorMessage>Critical element not recognized</errorMessage>

Digital Security 13
А поподробнее?

Нужно больше примеров: Pareq

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE ThreeDSecure [<!ENTITY ac SYSTEM


"file:///proc/sys/kernel/hostname">]><ThreeDSecure><Message id=“123-123-123-123-123-
123"><PAReq><version>1.0.2</version><Merchant><acqBIN>510069</acqBIN><merID>&ac;</merID><name>
MerchantName</name><country>643</country><url>http://asdas.as</url></Merchant><Purchase><xid>U3
Vic2NyaWJlX0B3ZWJyMGNr</xid><date>20181004
21:34:21</date><amount>202000</amount><purchAmount>202000</purchAmount><currency>643</currenc
y><exponent>2</exponent><desc>AcquirerName</desc></Purchase><CH><acctID>DYasdVQAOX6as3dfcxccw
zPCR6Q74eS5</acctID><expiry>2209</expiry></CH></PAReq></Message></ThreeDSecure>

Digital Security 14
А поподробнее?

Нужно больше примеров: Pares

<ThreeDSecure><Message id=" 123-123-123-123-123-123 "><PARes id=" 123-123-123-123-123-123


"><version>1.0.2</version><Merchant><acqBIN>510069</acqBIN>
<merID>ACS server name</merID>
</Merchant><Purchase><xid>U3Vic2NyaWJlX0B3ZWJyMGNr</xid><date>20181004
21:34:21</date><purchAmount>202000</purchAmount><currency>643</currency><exponent>2</exponent>
</Purchase><pan>000000000000000</pan><TX><time>20181004
21:34:21</time><status>U</status></TX><IReq><iReqCode>55</iReqCode><iReqDetail>PAReq.CH.acctID</iRe
qDetail></IReq></PARes></Message></ThreeDSecure>

Digital Security 15
А поподробнее?

ACS эндпоинты

• /acs/pareq/___uid___
• /acspage/cap?RID=14&VAA=B
• /way4acs/pa?id=____id____
• /PaReqVISA.jsp
• /PaReqMC.jsp
• /mdpayacs/pareq
• /acs/auth/start.do

Digital Security 16
Обновляемся до v.2

Digital Security 17
Как это работает? v.2

Digital Security 18
Как это работает? v.2

Digital Security 19
А поподробнее?

Areq (base64url) расскажет всё о вас и об устройстве, с которого совершается покупка

Digital Security 20
А поподробнее?

А что контролирует пользователь? CReq (base64url json)

Data Element Field Name


{ 3DS Server Transaction ID threeDSServerTransID
"threeDSServerTransID":"8a880dc0-d2d2-4067-bcb1- ACS Transaction ID acsTransID
b08d1690b26e", Challenge Cancelation Indicator challengeCancel
"acsTransID":"d7c1ee99-9478-44a6-b1f2-391e29c6b340", Challenge Data Entry challengeDataEntry

"messageType":"CReq", Challenge HTML Data Entry challengeHTMLDataEntry


Challenge Window Size challengeWindowSize
"messageVersion":"2.1.0",
Message Extension messageExtension
"sdkTransID":"b2385523-a66c-4907-ac3c-91848e8c0067", Message Type messageType
"sdkCounterStoA":"001" Message Version Number messageVersion
} OOB Continuation Indicator oobContinue
Resend Challenge Information Code resendChallenge
3D secure SDK использует JWE SDK Transaction ID sdkTransID

Digital Security 21
Проблемы (найденные и возможные)

На что смотреть в v1
• XXE в параметре Pareq:
• DOS
• File read
• SSRF
• XSS в параметре TermUrl
• Blind XSS - все параметры и заголовки попадают в систему мониторинга
• Pareq не подписан, но в нем есть цена!

На что смотреть в v2
• Blind XSS - все параметры и заголовки попадают в систему мониторинга
• Challenge flow, главное его поймать…

Digital Security 22
Заключение

Выводы
• Чем больше систем и механизмов защиты задействовано в процессе платежа, тем выше
защищенность средств клиента
• Сложные и важные бизнес-процессы подвержены достаточно простым уязвимостям
• Важно внимательно изучать документацию систем, которые вы встречаете
• 3ds SaaS

Полезные ссылки
• https://github.com/w3c/webpayments/wiki
• https://www.emvco.com/emv-technologies/3d-secure/
• https://3dsserver.netcetera.com/3dsserver-saas/doc/current/schema/3ds-api.html
• https://github.com/webr0ck/3D-Secure-audit-cheatsheet

Digital Security 23
inbox@dsec.ru +7 (495) 223-07-86

Спасибо за внимание!