33C3 preroll music Herald: So many of us traveled to this Congress. Probably most of us. And we all took trains, or planes, or… maybe somebody drove by car. But most took trains and planes. And have you guys ever wondered about the infrastructure of those travel booking systems? Even more interesting, have you ever thought how secure those systems are? Karsten Nohl and Nemanja Nikodijevic… Karsten has a really nice record of security researches. He had talks about GSM protocols and last year he had his talk about payment system abuse which was really interesting. Together with Nemanja, he will show us his research on travel booking systems. And probably we will find out how we can get home free. Please give a really, really warm welcome to Karsten and Nemanja! applause Karsten Nohl: Thank you very much! Always feels great to be back! I just today noticed that the first time I was speaking at this conference is 10 years ago. So 10 years of… applause .. thanks you. 10 years of looking at 10 different legacy systems and finding vulnerabilities in all of them, so far. A lot of them were around RFIDs, or mobile protocols. This time we’re looking at something completely different, travel booking systems. And vulnerabilities in there. Relative to some of the other talks we’ve been giving, this will have less ‘hacking’ in it. Not because we lost our interest in hacking but because much less hacking was actually needed to exploit vulnerabilities here. laughter So, sorry for that if you expected a lot of hacking. There’ll be a little bit, that’s why Nemanja is here, but a little bit less than usual. So we’re talking about travel systems. And there are 3 main players, or actors in the commercial travel world. There are those people who provide travelling, airlines and hotels. There’s those people who help you book them, Expedia, websites like that or traditional travel agencies. And then there’s brokers who make sure that whatever is available can be booked through those agents. So those are really the backbone of travel systems but you don’t really think about them much, or at least I didn’t before looking into this research. The systems are very useful, as global systems. In fact, they’re called “global distribution systems”. And that tells you how old they are. This is before the internet was there. They go back to the 80ies and 70ies. So there was only one system that deserved the name of a global distribution system of, in this case, data. And this was travel system. So it makes sense to have these systems because, of cause, one seat on an airplane shouldn’t be sold multiple times, so there needs to be a global inventory somewhere. Also all airlines should be using just a few systems so that they can do 'codeshare agreements', e.g. so that, again, the same seats on a flight aren’t booked multiple times. And, consequently, these booking systems, they maintain three types of information. The first one, you are probably most aware of, are the prices. Airlines will put their price lists into these systems for booking sites to fetch. They’re called ‘fares’ in the travel world. The next important data item in there is ‘availability’. So not everything can be booked that has a price. There needs to be a seat available at a certain booking class. And, finally, when somebody does find an available seat to a fare that they want to purchase that is then converted into a ‘reservation’. So this is after the seat is taken. You may have seen some of this information before on travel web sites. Let me just show you the one that I like to use the most. The ‘ita matrix’, has been bought by Google a few years ago. So you can’t actually book through here any more. But they maintain the interface for whatever reason. And so, let’s say you search for a flight to San Francisco from here, at the end of the year. This, like any other web site will give you plenty of options from the different airlines. What’s different for this web site is that they give you a lot more details, if you know where to click. So the cheapest flight, really cheap actually, 325 bucks to go to San Francisco for New Year’s, a one-way trip, and what I like on this web site is the rules. So this is real data, that is kept in one of these GDS systems. And this already looks like the 70ies, right? laughter This would usually be shown on a terminal, maybe green font on black background, and somebody would read through here, and I would say, okay, so you wanna book for a certain day, it’s okay, the dates match, you wanna go on TAP (TP) – Portugal Airlines – so okay, that matches, and you could also take a few other airlines, and then you have to meet certain other restrictions, e.g. you can stop over here. So this flight goes through Lisbon, you can stay in Lisbon for up to 84 hours before flying on to the U.S. That’d be nice. And then it has all these other rules in here, e.g. you can not cancel this ticket, right? It’s non-refundable. But you can change it for a fee. And this goes on and on and on. For just a single fare, and there’s, of course, tens of thousands of fares available. Now this, you may be surprised to hear, is the only form in which these fares are available. There isn’t an XML, there isn’t a web service, this is how the airlines publish them. And then a web site like Expedia, they have to write a parser for it to be able to present flight options to you. You may have noticed if you tried to change or cancel flights they don’t allow that to web sites often. Expedia e.g. doesn’t, you have to call them. And if you call them they say: “Give me a moment, I have to read through the fare rules.” So in that case that just didn’t parse all this information. That’s the first thing that’s kept in these… or maintained in these large GDS, the booking systems: the fares. The other thing is the availability. That’s a little bit harder to access through public web sites. Expert Flyer is probably the best one to use. And availability is important. If you actually wanted to fly to San Francisco now for New Year’s we looked at the fare, well, this is Booking Class 'O', this is always the first letter. And then, if you look at the availability for Booking Class 'O', unfortunately it says ‘C’ for ‘closed’. So they don’t accept any more bookings. So just because there’s a price available doesn’t mean that anybody can actually book this flight. And, again, somebody like Expedia would have to now combine all of these different pieces of information to present a list of flight options for you. So let’s assume they did that and you did book something. Then, the third data item is created in one of these GDS. And that’s the 'passenger name record', PNR. And that looks something like this. Again, you’ll notice the same 70..80ies style. With lots of private information. Ed Hasbrouck - he is a privacy advocate in the U.S., probably the loudest voice to ask for more privacy around travel booking and he was kind enough to make this available on his web site, for all to see what information is kept. So, contact information, of course, things like e-mail. This one shows you again how old these systems are. So they don’t have the ‘@’ character! This is using a character set from punch cards! And in punch card you had 6 possible punches per character. So everything here needs to be encoded with a 6-bit character And there’s no space for ‘@’. So all ancient stuff. But still, a possible privacy hazard, right? You wouldn’t want anybody to access this kind of information about yourself. The three main players who run GDS’s – Amadeus, mostly in Europe, Sabre, mostly in the US, and then there’s Galileo that merged with a few other things into ‘Travelport’. And Galileo isn’t really so much used by airlines but it’s more used by travel agencies. And then, often, multiple of these systems they’re involved in the booking. So let’s say you go through Expedia and you book an American Airlines flight, the PNR has to be kept in Amadeus as well as Sabre. So there’s two copies here. Or let’s say you go through a travel agency that’s connected to Galileo, and you book a flight that has both Lufthansa and Aeroflot segments it would be kept in all three of them. So this is lots of redundancy depending on where your flight segments and booking agents come from. But sufficient to say there are three big companies, who apparently hold on to the private information of all travelers. Hundreds of millions of records for each of those systems. And we wanted to find out whether they can sufficiently protect this information. And there’s, of course, reasons to believe that they can’t. This is very old technology and it’s unclear whether they ever did any major security upgrades. But at the same time there’s reasons to believe that they are very well secured because this PNR data, this very information about travelers that has been disputed between different governments for a long time, in particular the U.S. Government, and asking for more and more information since 9/11 in multiple waves, and the E.U. governments that say: “No, you can’t have more information than you absolutely need. So they agree politically that, yes, the U.S. can get information on those travelers going to the U.S. but only certain data fields, and have to delete them after a few years. So this was years of negotiation. And you’d imagine that the systems at the forefront of this dispute they’d be secure enough that, let’s say, we couldn’t access those same information that even the U.S. Government is supposed to not access. So we set out to answer this simple question: do these GDS’s, do they have normal, basic security. Do they constrain access, do they authenticate users well, do they protect through rate limiting from web attacks, and do they log to be able to detect any possible type of abuse. We’ll go through each of them to see where those systems stand. Let’s start with access control. And this is just drawing from public sources, so, again, Ed Hasbrouck, this privacy advocate in California, he has been the loudest voice here, saying, there’s overreach by a lot of players already accessing PNR information. So e.g. if you have a booking, let’s say a flight booking, anybody who works at this airline can access your information. But then, if you add, let’s say, a car reservation to the same booking, anybody who works at the car rental company can also access let’s say the flight information. And any agent at the booking agency that you use can access all of this information. And if you keep adding information all of these people still have access to it. That’s just how these systems grew over time, but that’s a first indication to me that this certainly wasn’t built with modern security in mind. Most concerningly the people working at or for the GDS companies, they have access to everything, absolutely everything. Including their support stuff, as far as I understand. So these are external companies that help debug the system, and they have access to hundreds of millions of people’s private information. So way too many people have access to way too much information, e.g. if you did an online booking your IP address is stored there, basically forever, well, until the flight is over. But any of these people can now access your IP address, your e-mail address, phone number and all of this. So definitely that doesn’t seem to be fine-grained access control. But, as I said earlier, this has been known for a long time and criticized a lot. Not acted on, though, yet! How about authentication? The picture is actually even worse for authentication. And I want to distinguish two different cases here. I wanna distinguish professionals accessing records, so people working at travel agencies and airlines. And, as a second case I wanna distinguish travelers accessing their own records, like when you check-in online e.g., you access your own record. Professionals, the way they access it, typically, is that their agency is connected to one of these GDS’s through basically one account. So an entire agency system, or at least an entire location uses one account. So years ago somebody typed in some user name and password, and then it’s long been forgotten because locally they use a different access management. A few travel agencies were kind enough to help us in this research, and their access credentials, we saw them using, they’re just terrible. E.g. for one of the big systems that I won’t name you need the agent ID, so that you can get pretty easily. And then a password for the web service, so of the modern way of accessing, this is WS for web service and the date on which the password was created. So even if you have to brute-force 20 years, how many possible dates does a single year have? Times 20. This is ridiculously low entropy for an account that is supposed to protect information of millions of people, if not more. This is the best authenticator that we found in these systems! laughter It gets worse with travelers accessing their own information. Because there they just simply forgot to give you a password, not even a terrible password like this; there just isn’t one. And what they use instead is the booking code, ‘PNR locator’ it is sometimes called. I call it booking code. It’s a six-digit code. When you check-in online you need that code. And you only need that code and your last name. So you’d imagine that, if they treat it as a password equivalent then they would keep it secret like a password. Only – they don’t, but rather print it on every piece that you get from the airline, e.g. on every piece of luggage you have your last name and a six-digit code. On your boarding pass – it used to be there, and then it disappeared and then these barcodes showed up. So it’s inside the barcode. If you decode the barcode there is your PNR in there. I erased it here, this is still for a valid booking. laughter So, you have this six-digit codes printed everywhere and you can just find them on pieces of scrap at the airport. Certainly these tags you find all over, but also people throwing away their boarding passes when they’re done. And this is supposed to be the only way of authenticating users. And we’ll show you in a minute what kind of abuse is possible through that. But let’s first think about where else you could be able to find these PNR codes. Could it get any worse than somebody printing your password on a piece of paper that you throw away at the end of your journey. Of course the internet can make it worse! And what better technology to worsen the security problem than Instagram? So on Instagram… laughter and applause So you got all these bookings. And, in fact, there was one guy here, you see, he actually erased the information. But for one who knows what’s up, everywhere, there’s a hundred who don’t. And this is really all information you need. I saw a Lufthansa one just now, where was that? – Here. So here is a Lufthansa one. This is from today, posted by markycz at Frankfurt. This is really all you need to get somebody’s… laughter and applause Let’s see if this works. Yeah, sure enough. So. laughter 'Marky M.' on Instagram is apparently Marketa Mottlova and this is her booking reference. laughter I was debating whether or not to show this but you guys are gonna do it anyway when I’m done with this talk. laughter cheers and applause So a flight today from Munich to Frankfurt and then, on to Seattle. Let me point out one thing here. Where did I see the ticket number? off camera mumbling on stage Just use mine! It’s AndroidAPKN Oops. And then let me write down the password. Okay. Alright. So what I wanted to point out is that this isn’t even a Lufthansa ticket. So she checked in with Lufthansa in Frankfurt. But if you look at the ticket number, 016, that’s a United [Airlines] ticket. And it also includes flights on Alaska Airlines e.g. So any of these airlines have full access to this PNR. And many of them will just grant people access to it if they know the PNR and the last name. As Nemanja will show in a minute, even if they don’t know that yet. So... To recap for the moment: airlines give you a six-digit password that they print on all kinds of pieces of paper and that you will post on Instagram. Why shouldn’t you, everybody else does, too, apparently. 75,000 people at least over the last couple of weeks. So the authentication model here is severely broken, too. And what kind of abuse arises from this? Of course, you can now use this PNR, log in on Lufthansa as I have just done or a more generic web site, like Checkmytrip and look up peoples’ contact information at the very least. So there’s always an email address in there. There’s usually a phone number in there. If in Lufthansa you click on “I wanna change my booking” probably they’ll ask you for your payment information and pre-fill the postal address for that. So you get somebody’s postal address that they used for the booking, passport information, visa information. If you travel to the U.S. as she does there’s definitely passport information in the PNR. All of this information is now readily accessible. Now so far there was zero hacking involved. That’s why we have Nemanja here who will show you some actual hacking to get even deeper into these systems. Can we switch the screen? Nemanja Nikodijevic: So when… laughter When we started this research we needed to find lots of these boking numbers to see if there is some relation between them. So luckily we didn’t have to make any bookings that we had to pay because there are web sites like this one where you can just make a booking and pay it later but you get the booking reference number at the time. So let’s make some very normal German name… laughter ..looking for someone from Germany. Actually they check the phone number, so it has to follow the certain form. Let’s find Germany… from Berlin, 1234567. laughter And then ‘hans@sandiego.com’. As you can see I tried quite some… laughter So for this one we already got our booking reference number which is Y56HOY. And this one, in a minute. Okay, we have to wait a bit. Y5LCF4. So if you notice they are very close to each other, so they both start with Y5 which means that they were booked on the same day. Probably because one is on Lufthansa, the other one is on Air Berlin, there is slight difference. They are not exactly sequential. But we can say that they are concentrated in a certain range for a certain day. What we can do now is we can go to one of our servers. At first we have to check if checkmytrip works because I had some issues with the network. That’s… ooh! laughter This is a bit unexpected. We will have to skip this part where we actually look for Carmen Sandiego in one of our bookings. But… Karsten: Well, this is a side effect of responsible disclosure. So you tell a company that on this day you’ll do that thing to that web site, and they just either block the IP ranges here or just took down the web site which they have done a few times before. What you can do is… – say it again!! From audience: Can you test the hot spot? Karsten: Actually, I think the whole web site is turned off. Nemanja: What we can demonstrate, I think, is that if we go with this booking number, to Air Berlin web site, and then type last name, “Mueller”. And actually, because it’s six-bit encoding it has to be “UE”, no Umlauts allowed. So, “Select all the food!” laughter and applause Let’s see if we can find this flight. Karsten: The part of the demo that you didn’t show is just brute-forcing these ranges. If you know which ranges are used in a day you can try them all. Or at least we did many times. That would then, in theory, give you access to all of this. And not just in theory, in practice, unless they take down their entire web site which they knew we were gonna use for this demo. Nemanja: But on this, for example, if we caught that flight that we wanted to catch… Karsten: We’ll show it later. But at least the first win for privacy: no information is leaked through this web site for the rest of this talk, at least! laughter and applause Can we switch back to the other screen? ongoing applause One thing that you would have noticed had this not just been a flight reservation but an actual ticket: it would have given you options to rebook it, to add a frequent flyer number, all of that good stuff. So what’s the abuse potential here? So far we’ve only talked about privacy intrusion. And privacy intrusion is bad enough. Imagine somebody is snapping a picture of your luggage, that person has your email address and your phone number, right there, right then. But the abuse potential goes much beyond that. For instance, you can fly for free! You can fly for free using different methods. You can find somebody else’s booking and just change the date. The ticket… in fact, we can show it a little bit later. We had prepared for this demo that we are going to find through a little bit of brute-force that’s a flexible ticket. So you can just change the date, and change the email address. You just take that flight yourself. And as the airline checks… compares the ticket and your passport – oftentimes they do it visually. What they’ll do is they’ll send you a PDF, you change the name, you take it anyway. But at least in Schengen, in the EU, people don’t even do that. Let’s say you wanted to take it in your name. You can, depending on the airline, call them up or even use their web sites to cancel the ticket, and the issue a refund to you inside the PNR, and then use the money that’s freed up there to book a new ticket. Some airlines also give you MCOs – miscellaneous charges orders. Americans will know this very well, every time you get bumped from a flight they give you an MCO, “sorry, we can’t fly you home today, you’ll have to go tomorrow, but here is $1,000 towards a new ticket”. It’s real airline cash. And those same MCOs you can issue based on flight cancellation. So you cancel somebody else’s ticket and you get airline money to book your own ticket. And, again, there are no passwords involved. The only authenticator is this six-digit sequence that people post on Instagram, print on their boarding passes and that Nemanja should be able to brute-force on their web sites. What else can you do, once you have somebody’s PNR? You can change or add a mile number. And some tickets are really attractive for mile collection. Take a round trip to Australia in 1st class, get 60,000 miles right there, for one round trip, for one PNR. And that will get you a sweet, free flight to somewhere nice, or even some voucher for online and offline shopping. One website that I wish was still working is, of course, this one. laughter But they shut down business, apparently. Unrelated to this talk. laughter and single claps So you have access to somebody’s PNR, you can not just stalk them but change their flights or – which may trigger some curiosity – that flight can be taken twice. But you can very stealthily add your mile number everywhere, well, a new mile number matching that name to collect those sweet miles. Now, are all airlines affected by that? The demo that we didn’t get to show brute-forced for one last name, Sandiego, all the PNRs for a day. And it quickly found, in fact, a bunch of records. There’s not just one Sandiego flying that day. But in some airlines they’re a little bit smarter. For instance American Airlines, the largest airline in the world, they don’t just want the last name but also the first name. And if you’re interested in one specific person, let’s say ‘Carmen Sandiego’, you would still find that person. But if you want to conduct fraud that becomes a little bit more tricky. A fraudster would just pick a random, very popular last name and brute-force PNRs there. And that becomes more difficult if also you have to guess a first name. However, even American Airlines, those records can be accessed through other web sites. For istance Viewtrip, this is another generic web site like this infamous Checkmytrip that just went offline. And Viewtrip allows you to brute-force by just last name and PNR, again. So there’s multiple ways to access the same information. Some of which are more secured than others. And, of course, only the weakest link mattered. So Viewtrip, what they would say is they found the record and they can’t give you access to the information but then TripCase will which, again, takes only last name and reservation number. And they will tell you the first name also that then you can type in to the American Airlines web site again laughter to change the booking, let’s say. So there’s all these different ways to access a person’s information here. And everybody is slightly different. So let’s look at the entire universe of travel web sites, starting with just three big travel providers. Each of them uses six-digit booking codes. But they use these six-digits rather differently. Sabre e.g. they don’t use any numbers which of course severely impacts the entropy. But then others, e.g. Amadeus, they don’t use 1 and 0, because that could be confused with i and o, and then Galileo drops a few other characters. So at the end of the day none of them really used the entropy of even a six-digit pass code. All of them are in entropy lower than a randomly chosen 5-digit password. And we will never recommend anybody to use a 5-digit password, right? So this is strictly worse. And what makes it even worse, at least for privacy-intruding attacks, is the sequential nature of these bookings. You saw the two that Nemanja just now generated. Both of them were from the same, very small sub set. So if you just wanted to know all the bookings that a person did today, you can brute-force this in 10 minutes with a few computers running in parallel. It’s not so easy on Sabre because they seem to be chosen more randomly. However, Sabre has the lowest entropy, so if you just randomly want to find bookings for popular last names Sabre is your system of choice. They’re all weak, but the weaknesses differ in shades of grey for this privacy intruding and for the financial fraud-type attacks. As one example, though, of how easy it is to find these booking codes, if you look up 1,000 just randomly chosen booking codes in Sabre for the last name ‘Smith’ five will come back with current bookings. So half a percent of the entire name space is filled with current bookings for people called ‘Smith’! Now, add in all the other last names, their name space must be pretty damn full. And it’s only 300 mio. records if you calculate the entropy. So it looks like almost every record is used up and they’re running out of space. So they’ll have to fix this anyway at some point. But that, of course, makes it all the easier to randomly find and abuse other people’s bookings. Each of those providers runs a website that allows you to access all the PNRs in their system if you know the PNR and the last name. And one German reporter writing about this, he calls the websites that you didn’t know existed, that you have no use for but that, anyway, put your privacy at risk. So there doesn’t seem to be any up side to these web sites. I certainly don’t need to use them but they’re there, and they’re bad. Because when we did the research none of them had any protection from brute-forcing meaning we could try 100,000, even millions of different combinations – PNR and last name – and those websites wouldn’t complain even a bit. We did expose Amadeus to way more queries that the others and at some point they did notice, maybe also because some reporters just asked them for comments on the research. They have tried to improve. So the classic checkmytrip.com website that was just killed a few days ago – R.I.P., thank you, it’s gone, 50% of the problem solved. But the other website, that was still around up until literally half an hour ago. What they did over the last couple of days was, they added a captcha. But the captcha gave you a cookie. And the cookie you could again use for indefinite number of queries. laughter It’s a company that just hasn’t done web security before. But then they also limited the number of requests per IP address. Now, we do this from Amazon, so it’s not so difficult to spawn new IP addresses, but still… it severely slows us down. About 1.000 requests per IP address. Even if they now took down checkmytrip for good, of course, this is not the only pass to a reservation. As we’ve seen before you can just use the provider’s web site directly. And the popular ones in Germany, they differed in security quite a bit when we checked a few weeks ago. So Lufthansa itself differed on their different properties. The standard website asked for a captcha, not the first time, but I think starting from three requests, so a really good compromise. They make it comfortable to use for really anybody who just wants to look up their own records. But then they make it a little bit more painful for somebody who tries to look up too many. But then the mobile version e.g. didn’t have that captcha. And again, weakest link principle applies. Air Berlin, they had some rough IP filter, again, 1.000 requests per IP, that’s a little bit too much, they introduced a captcha today! So, again, in response to this. This is already showing some effect. Thank you to checkmytrip and Air Berlin for working on this over the holidays, much appreciated. Maybe, if you know anybody, thank you! applause On the other GDS’s the situation is much worse still. They’re still as bruteforceable as they ever were, as are the web sites. Except for the little bit of first-name extra complication on American Airlines, every web site we have tried is not protected from brute-forcing. And this is surprising to me. In my consulting work I have never seen a web site where not the first pentester ever looking at it would say: “Oh, you didn’t have rate limiting in it, please add it!” and then, two days later they had. So for most of this industry that is yet to happen. So no cookie here, either. Let’s talk about one more abuse scenario that’s… I can say they’re very relevant but that’s maybe because in my consulting life I’ve been dealing with human security for the last couple of years, appreciating that technology is mostly not the weakest link but the the gullibility of people working in the company. And the same probably goes for travelers. Imagine the scenario where you made a booking, just a few minutes ago. And now that airline, or at least it looks like that airline, sends you an e-mail saying “Thank you for making this reservation, here is all your booking stuff, summarized for you, please update your credit card information, though. The booking didn’t go through. I would click on that. I expect them to e-mail me, I know that sometimes credit cards are fuzzy, I would click on it and enter my credit card information again. And how is this possible? Of course we can stay ahead of the current pointer in this sequences and find bookings that were made in the last, let’s say, half an hour, for popular last names again. And each of those bookings will point us to an e-mail address, and give us all the context we need to include in this very, very targeted phishing. If nothing else, I think this should convince the airline industry to close these loop holes because the evilness of the internet will not ignore this forever. Phishers are always looking for new targets, and this will be a very juicy one. So we looked at the three big GDS’s now. There’s a few other players, e.g. SITA. It looks like on the way out but these two very big airlines, they still use it. So they’re certainly still relevant. They are even worse. They use, instead of a six-digit booking code they use five digits. And one digit is fixed per airline. So if you know you’re looking for Air India you don’t even have to brute-force that leaving just four digits to go through, and to brute-force. Now we don’t have a demo for this because we found three other more fun ones to demo. So… laughter Nemanja will now show you RyanAir, Oman Air and Pakistan International Airlines. Note that all of these are connected to big GDS systems. So it’s now the web sites that make it even worse than we already discussed before. And can we switch over to the other computer again? Thanks. Nemanja: Yeah, I guess, many people fly with Ryan Air here. They use Navitaire which is now owned by Amadeus. So they don’t share the same address space. But on the Ryanair web site you can either search for the reservation with the e-mail address and the reservation number or the last four digits of the credit card that you used for booking. laughter Karsten: Again, great authenticator, right? Ten thousand options. Nemanja: As they don’t have captcha we can have a look for… So we know that the last four digits of Carmen Sandiego’s card are these. Karsten: And if not we can just try all ten thousand. Nemanja: We can just try, yeah. We can do the other way around. So this way we know that… and that it starts with these characters. And let’s try to brute-force it. In the meantime let’s have a look at the Oman Air. They ask for the booking reference and for the departure airport. But departure airport doesn’t have to be just the departure airport but it can also be any airport that is within the reservation. So for Oman Air we think that it’s Muscat which is the capital. So usually… most of these slides go through there. Let’s see if we can find someone who is… Karsten: And he’s now just trying random booking codes that are valid within that name space. So, again, they don’t really use the full entropy. So that makes the search a little bit quicker but other than that it’s just a pure brute-force. Nemanja: And as there is no captcha as you can see we can go on to the next one. So this one is the winner! laughter They trust you that it’s yours! strong applause And let’s see … so we already have one for the Oman Air. Okay. This is the one… this is where… Karsten: That was RyanAir, huh? Nemanja: This is the RyanAir, yeah. So we didn’t bring these two characters. But… because we wanted to hide it. If we accidentally hit some booking with that card number we don’t want to show the booking reference number of someone else. So it might be even some of the people here. We can try… Even got one from the Pakistan. Carmen Sandiego is flying from SXF to TSR. And here we can just enter the… what was the, I think… if I’m right… Let’s see if this will work. Yeah, okay. Hello Carmen Sandiego. Karsten: So now we know where Carmen Sandiego is, finally. The point is, we made, you can brute-force these web sites rather easily and you don’t really trigger any alerts there, apparently. Which, again, coming from an IT security background I find pretty shocking. Can we switch back to the other screen? Let’s look at the last security feature that we would expect any IT system to have, these days. Especially knowing that it has been criticized for lack of IT security for a long time. And that, of course, is accountability, logging. At least track who’s legitimately or illegitimately accessing these records. It turns out that it has been asked for a long time by different people, again most notably Ed Hasbrouck, this privacy advocate, but also other reporters and other advocates have come across this for years, saying “there’s rumors that, let’s say, the Department of Homeland Security in the U.S., they have root access in these GDS’s. Where are the records, whether they are accessing it or not. Where are the records for abuse by support stuff in these GDS companies. Where are any records? The GDS companies have always said, “oh, we can’t keep any records, it’s not technologically possible.” I call BS on that. They are logging… in the tiniest minutia, any change to a reservation there’s a log for. And then access log does not exist? And it’s not technologically possible? I think there’s a completely different reason behind here. If, in fact, these companies gave access, unlawful access, or at least in violation of privacy laws in, let’s say, the E.U. or Canada, if, in fact, they gave that access to other governments the last thing you want is a trail of evidence showing that people have access to records. So this has nothing to do with technological restrictions, this is purely – those companies don’t wanna be in the middle of a debate where probably some sealed order in the U.S. makes them disclose all this information but laws in Europe make them not disclose the information. They just don’t wanna have evidence either way. But that leaves us in a very peculiar position where now we know that these systems are insecure, use very bad authenticators, expose this over web sites that can be brute-forced and don’t keep any record of if that actually happens. So it’s completely unknown how much abuse may be happening here. I think we can be pretty certain that the flight changes for people to fly for free, that they are not happening very frequently because that’s the only one of these attack methods that would leave very clear evidence, somebody actually complaining, saying “I wanted to take my flight but apparently somebody else already took it before me, or canceled it and took off with the money. But the other cases we have no idea whether or not they’re happening. They’re technologically possible, and nobody seems to be looking for these abuse patterns. In summary, there’s just three big global databases, two in the U.S., one in Europe. They keep all the information on all the travelers. This information includes your personal contact information, payment information, your IP address. So lots of stuff that in a lot of other systems we consider sensitive, private even. And it should be protected with a good password. We would advise people to use an 8-character or longer password, with special character. None of that exists here. The passwords here are six-digits. They are less than five digits at worth of entropy. They’re printed on scraps of paper that you throw away. They are found on Instagram an they’re brute-forcable through numerous web sites by the GDS companies and through the travel providers. So this is very, very far away from even weak internet security. This really predates the internet in stupidity and insecurity. And while there’s multiple scenarios in which either privacy of users is at risk or even fraud could happen none of this is even logged, and nobody knows or has any way of knowing the magnitude to which these systems are already abused. So what do we need here? We clearly need more limitations on who can access what. This is not just my ask. This has been asked for 10 .. 20 years. But more on the technical level, in a long term, we need passwords for every traveler. You should be able to post a picture of your boarding pass on Instagram without having to worry about somebody abusing it. This is a piece of paper that you will throw away. There should be nothing secret about it. If you wanna share it – feel free to. Somebody else needs to add a password to make that safe again. But that’s a very long-term goal. These travel companies, they’re so interwoven, as we saw today, that all of them really have to move at the same time. The GDS’s have to do their share. But then each of interconnected airlines has to do their share. We saw this one random ticket from Instagram, so this was a Lufthansa ticket with some Alaska Air components issued by United. So at least those three companies have to work together. And how many more different airlines today have code-share agreements. So we’re talking about hundreds of companies who have to come together and decide “we wanna introduce pass codes, passwords”, whatever you wanna call them, “for each booking”. So that is a long-term goal. In the short term, though, at the very least we can expect, is for all these web sites that do give access to travelers’ private information to do the bare minimum of web security. At the very least some rate limiting. Don’t allow us to throw millions of requests at your properties, and give us back honest answers. That is unheard of anywhere else in the “cloud”. But for travel systems who claim for themselves to be the first cloud ever this seems to be very standard. And then, finally, until all of this can be guaranteed, until there’s passwords and until there is good rate limiting I think we have a right to know who accesses our records, and there must be some accountability. Especially, knowing how insecure these systems are today. This is a long way, and I can only hope that we are starting a journey by annoying large companies like Amadeus. They have done their little bit of fixing over the weekend now, so hopefully some others will follow suit and we will have better systems. Until then, of course, I can only encourage all of you to look at more of these travel systems because there’s plenty more to find. We’re only scratching the surface here. And, more generally, to look at more legacy systems. I think we’re spending way too much time making some already really good crypto just a tiny bit better or finding a really good mobile operating system the next little jailbreak that will be fixed two days later anyhow ignoring all these huge security issues that have been there for many, many years in systems that are a little bit less sexy and riddled with bug bounties than something else that we do spend a lot of time on. So I hope I could encourage you to do that. I wanna just hand out a few thankyous to members of our team without whom this research wouldn’t have been possible, and to a few industry experts who were kind enough to read over these slides and provide feedback, and help us hopefully not have any major gaps on our information. And then, to you for showing up in such great numbers, thank you very much! applause Herald: Wow, great talk. Thank you very much! We have five minutes for Q&A. So please line up on the microphones, and we’ll take some questions. First one! Question: Do you have any indication of how secure the systems are on the other end, that the airlines supply their fares into the entire systems? Is there any indication that those systems might be more secure than on the customer side? Or would it be easy to inject a cheap fare, e.g. by impersonating the airline with weak passwords? Karsten: Honestly, we don’t know. It was definitely on our list to research but we don’t have time for everything so we focus more on the customer privacy. But one thing that I really would want to test if I had any way of doing it: imagine the parsers for these strings. Imagine injecting some special characters in that. I don’t know who creates these strings and maybe I don’t wanna know. But if anybody does and you could play with some SQL commands I think a lot of web sites would wake up understanding that on that front they don’t do enough security either. Herald: Okay, question from the Signal Angel? Signal Angel: A question from IRC. Recently, U.S. Customs And Border Patrols started collecting social media identifiers for foreign citizens trying to enter the U.S. on a Visitor Visa. Could that information be accessible through PNR’s? Karsten: That’s a good question. I don’t think you would be. From Audience: They are! Karsten: So, I… From Audience: Yes, they are! Karsten: They are in the PNR? From Audience: Yes! Karsten: Okay. laughter I would have imagined that it’s more a case like this journalist, Cyrus Favia. He requested through FOIA disclosure all the records that the U.S. Government kept on his travelling. And he found a lot more stuff than just in the PNR. They had notes in there like “he’s a journalist”, “we had to search him extra for that”, stuff like that. So they don’t wanna write that into the PNR. But the Government keeps separate records that may be indexed by PNR, I don’t know. Herald: Okay, microphone here! Question: Can you say something about how long information will be stored in those travel systems, and whether users have a right to get them deleted? Karsten: That’s a good question. I think that differs by system. So in Amadeus records are removed pretty quickly. Days, or at most, weeks after the last flight is finally done. But in Sabre I had the impression that much older records was still in there. Which may explain why their data set is so dense. If you keep accumulating all the information. By the end of the day this is all going back to mainframe technology. So I don’t think anybody understands these algorithms any more. They just kind of work. Question: The deletion? Karsten: The deletion, yeah. I don’t think you can request anything to be deleted. I don’t think they consider you a person that they wanna talk to. You’re not the customer! Question: Thanks! Herald: Okay, the microphone there, in the… Question: It seems that the immediate way to abuse these systems is, like you said, with abusing money, and the mileage etc. It seems that those paths are actually somehow monitored by airlines, so if I’m collecting miles and take it not under my name that would raise some flags. You think that’s not the case? Karsten: Yes, I should have been more explicit how this attack works, the mile diversion. So, of course, you have to have an account in the same name as the person flying. So had his demo worked, he would have a PNR for a lady Carmen Sandiego. You can just go to miles&more and create an account under that name. A lot of airlines, though, they also allow you to change your name. So you just change it whenever you found a round trip Australia ticket, you change the name to whatever that target name is. And I know for a fact that people are doing that right now, not you guys, before even. Based on Instagram photos. So people are diverting miles by creating new accounts or by keeping changing the names of the accounts. And yes, airlines do sometimes notice this but only when it becomes excessive. And sure, that’s their money. I just hope that it will become so excessive that it’s such a big problem that it can’t be ignored any more. And then the privacy issues get fixed on the same token where privacy is never enough to convince a big company. But if you throw in a little bit of fraud it may be enough. applause Herald: Okay, one last question. Microphone here! Question: Hi Karsten! When people use like GDS’s they have these really archaic… there are not even… there are like actual terminals, not even pseudo-terminals. And then they expose like these EPI’s for the sake of writing your code in like Java or whatever. I’m wondering if there’s research to be done at that level? Or did you just not look at that, or that’s just an area of further research? Karsten: We did, quite a bit. But we found no way of making that public in any way that wouldn’t require a login from a travel agency and all of that good stuff. So I think the most I wanna say about that is the logins that travel agencies have, they’re terribly secured. But, of course, I can’t encourage anybody to go out and hack them. But if you did and you had access you’d be logging in to something that looks like a terminal. And you’d be typing some commands. And the next thing you know it throws a Java stack trace at you. So these just look like terminals. They have moved well beyond that while still maintaining this look and feel of a mainframe. And they’re terribly insecure. So these stack traces, they just come left and right even if you try to do the right thing! laughter Question: Thanks! Herald: Okay we have one question from the internet! Signal Angel: Somebody wants to know, how do you avoid DDoS’ing those services when you just brute-force the booking numbers? Karsten: A good question. Of course we don’t wanna hurt anybody, so we tried to keep the rates low. And it turns out if you throw 20 Amazon instances at them they don’t go down yet. And… laughter Herald: Okay. Thank you very much, Karsten and Nemanja! applause postroll music subtitles created by c3subtitles.de in the year 2020. Join and help us!