7. MISUNDERSTANDING THE SSL API
7.1 Amazon Flexible Payments Service (PHP)
Amazon Flexible Payments Service (FPS) provides SDKs that
merchants use to transmit customers’ payment details to the FPS
gateway. The PHP version of the FPS SDK uses a wrapper around
the libcurl library (see Section 4.2) to establish an SSL connection
to the gateway.
cURL’s options for certificate validation are set in
srcAmazonFOPSClient.php as follows:
curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curlHandle, CURLOPT_SSL_VERIFYHOST, true);
...
/ / E x e c ut e t h e r e q u e s t
$response = curl_exec($curlHandle);
This well-intentioned code contains a fatal mistake. cURL’s default value of CURLOPT_SSL_VERIFYHOST is correctly set to 2. In the
curl_setopt($curlHandle,CURLOPT_SSL_VERIFYHOST, true) call,
true silently turns into 1, overriding the default and instructing
cURL to check the existence of any common name in the certificate
(Section 4.2), which may or may not match the name requested.
Any PHP code using this Amazon-provided SDK to establish an
SSL connection to the Amazon Flexible Payments Service gateway
is insecure against a man-in-the-middle attack
The URL verification utility—found in srcAmazonIpnReturnUrlValidationSignatureUtilsForOutbound.
php—is broken in a very similar way. This utility is critically important because it is used by merchants to verify the origin of the
calls informing them that a customer’s payment has been successfully processed (see Section 5). Because Amazon’s PHP SDK does
not correctly verify the origin of the IPN call, e-commerce sites
using it may be vulnerable to “shop-for-free” attacks [23].
7. MISUNDERSTANDING SSL API7.1 บริการชำระเงินที่ยืดหยุ่น Amazon (PHP)อเมซอนยืดหยุ่นชำระเงินบริการ (FPS) ให้ SDKs ที่ร้านค้าที่ใช้ในการส่งรายละเอียดการชำระเงินของลูกค้ากับ FPSเกตเวย์ รุ่น PHP FPS SDK ใช้กระดาษห่อรอบรี libcurl (ดูส่วนที่ 4.2) เพื่อสร้างการเชื่อมต่อ SSLการเกตเวย์ ตั้งอยู่ในขดของตัวเลือกสำหรับการตรวจสอบ certificatesrcAmazonFOPSClient.php เป็นดังนี้:curl_setopt ($curlHandle, CURLOPT_SSL_VERIFYPEER, true);curl_setopt ($curlHandle, CURLOPT_SSL_VERIFYHOST, true);.../ / E x e c ut e t h e r e q u e s t$response = curl_exec($curlHandle)รหัสนี้เจตนาประกอบด้วยความผิดพลาดร้ายแรง อย่างถูกต้องมีตั้งค่าเริ่มต้นของขด CURLOPT_SSL_VERIFYHOST 2 ในโทร curl_setopt ($curlHandle, CURLOPT_SSL_VERIFYHOST จริง)จริงอยู่เบื้องหลังจะเป็น 1 แทนค่าเริ่มต้น และสอนม้วนกระดาษเพื่อตรวจสอบการมีอยู่ของชื่อทั่วไปในการ certificate(ส่วน 4.2), ซึ่งอาจ หรืออาจไม่ตรงกับชื่อที่ร้องขอรหัส PHP ใด ๆ ใช้ SDK นี้ Amazon มีการสร้างการSSL เชื่อมต่อเกตเวย์ Amazon บริการชำระเงินมีความยืดหยุ่นจะไม่ปลอดภัยจากการโจมตีคนในกลางโปรแกรมอรรถประโยชน์ verification URL ซึ่งพบใน srcAmazonIpnReturnUrlValidationSignatureUtilsForOutboundphp-เสียในลักษณะคล้ายกัน โปรแกรมอรรถประโยชน์นี้เป็นสิ่งสำคัญเหลือ เพราะมันถูกใช้ โดยพ่อค้าเพื่อตรวจสอบแหล่งมาของการโทรแจ้งไปที่ การชำระเงินของลูกค้าได้รับเรียบร้อยแล้วประมวลผล (ดูส่วนที่ 5) เนื่องจาก SDK PHP ของ Amazon ไม่ไม่ถูกต้องตรวจสอบแหล่งมาของ IPN โทร เว็บไซต์อีคอมเมิร์ซใช้อาจเสี่ยงต่อการโจมตี "ร้านสำหรับฟรี" [23]
การแปล กรุณารอสักครู่..