1 00:00:00,970 --> 00:00:02,510 Good afternoon, everybody. 2 00:00:02,510 --> 00:00:04,090 My name is Nimit. 3 00:00:04,090 --> 00:00:06,730 I'm one of the co-founders at Votes. 4 00:00:07,050 --> 00:00:17,650 And I'm here to talk about some of the security data we've collected during the course of our mobile voting pilots over the last couple of years. 5 00:00:17,810 --> 00:00:22,850 So before we dive into the data, just a quick overview about Votes. 6 00:00:22,850 --> 00:00:29,630 As many of you may know, Votes is the youngest elections company in the US. 7 00:00:29,930 --> 00:00:39,890 We got started almost by accident after winning a hackathon at South by Southwest in Austin, Texas, way back in 2014. 8 00:00:39,890 --> 00:00:43,390 The theme of the hackathon was Hack to the Future. 9 00:00:43,410 --> 00:00:46,630 What's the one thing you would do in the future and how you do it? 10 00:00:46,830 --> 00:01:06,070 And so my brother and I, he was there and we ended up prototyping this new election system, which used smartphones, biometrics, real-time identity verification, and then also locked the ballots on a blockchain-based infrastructure. 11 00:01:06,170 --> 00:01:15,470 To our surprise, we ended up winning the first prize and that led to a whole series of events and eventually the company started in 2015. 12 00:01:15,830 --> 00:01:27,130 So since then, we've done 67 elections so far and 11 of these have been public government election pilots. 13 00:01:27,130 --> 00:01:34,490 We've also done non-governmental elections, primarily with the state political parties in various states. 14 00:01:34,490 --> 00:01:43,810 And so some of the data we're going to share today covers a wide array of our elections from a security perspective. 15 00:01:44,010 --> 00:01:55,730 And then we'll also dive in into a couple of really interesting elections we did recently, where for the first time we were able to collect a lot of interesting data. 16 00:01:55,750 --> 00:02:01,670 So I'll begin with a quick introduction about our system. 17 00:02:01,670 --> 00:02:15,290 It's a smartphone app-based mobile voting platform and the key components here are essentially the voters' smartphone devices, an iPhone or a compatible Android. 18 00:02:15,290 --> 00:02:24,670 Then you have the cloud infrastructure where the backend servers are running and also distributed blockchain infrastructure. 19 00:02:24,870 --> 00:02:32,830 And then you have the election administration-specific interfaces to the election jurisdiction. 20 00:02:32,870 --> 00:02:40,430 And then from there, their traditional infrastructure is ballot printers and tabulation equipment. 21 00:02:41,010 --> 00:02:49,970 And the way the entire process works is essentially, right now, the system is being piloted only for absentee voters. 22 00:02:49,970 --> 00:02:59,930 And within absentee voters, a very small subset of people, essentially military voters who are deployed, their families and any U.S. 23 00:03:00,790 --> 00:03:06,330 overseas, they're commonly referred to as Yokawa voters. 24 00:03:06,710 --> 00:03:23,910 And so if you're in that eligible group and your jurisdiction is participating in a pilot, then you sign up normally as an absentee voter and then submit a form to your election clerk, typically your county clerk, and then they do a little bit of vetting. 25 00:03:23,910 --> 00:03:28,810 And then if you're eligible, they will pre-provision you on the system. 26 00:03:29,010 --> 00:03:36,350 And then you get an invitation to download the application on your smartphone, iPhone or compatible Android device. 27 00:03:36,350 --> 00:03:40,970 So you begin with the email number and email ID and a mobile number. 28 00:03:40,990 --> 00:03:48,190 And then once you've done the initial onboarding, you are asked to do an identity check. 29 00:03:48,190 --> 00:03:52,270 So you'll have to take a picture of a government-issued photo ID. 30 00:03:52,590 --> 00:03:58,130 Right now, you can use a driver's license, state ID or passport. 31 00:03:58,130 --> 00:04:04,910 You can use some other forms of ID as well if you don't have those three, but those are the most commonly used ones. 32 00:04:05,930 --> 00:04:13,310 And then once you've done the scan in the application front and back, then you're asked to take a live video selfie. 33 00:04:13,870 --> 00:04:22,110 Then once you've completed that, it does a matching to make sure the picture you took of yourself matches the picture on the ID. 34 00:04:22,610 --> 00:04:31,890 Liveness check is done as well to weed out any fakes or any other kind of fraudulent activity. 35 00:04:31,950 --> 00:04:41,950 And once everything matches, the data on your ID is compared to the voter registration file which is provided to us by the jurisdiction for the pilot. 36 00:04:41,950 --> 00:04:55,310 All that matches, your identity is digitized, stored in the secure space on the handset, and all the documents you've provided are deleted at that point because we don't need them. 37 00:04:55,310 --> 00:05:00,070 We don't want to increase the threat surface after that as well. 38 00:05:00,230 --> 00:05:02,270 So at this point, you're ready to receive your ballot. 39 00:05:02,270 --> 00:05:08,270 So as you can see from the flow diagram, that's essentially a 10-step process. 40 00:05:08,650 --> 00:05:24,990 And once you've received the ballot, it's essentially your mobile representation of your actual paper ballot which you would receive if you went to work in person at your precinct, or if you opted into vote by mail, essentially the same ballot you'd get here. 41 00:05:25,250 --> 00:05:30,810 And so you map the ballot on the phone, and then you may be asked to sign an affidavit. 42 00:05:30,870 --> 00:05:48,810 Sign with the finger on the screen, and then once you're ready to submit, you confirm your choices, do your biometric verification on the device again, and at that point your ballot gets submitted to the network, anonymized, and you get a receipt so you can verify your selections, 43 00:05:48,810 --> 00:05:54,010 and then also participate in the audit process as well. 44 00:05:54,250 --> 00:06:04,310 And in the background, the jurisdiction gets an anonymized and anonymized copy of your receipt, and then close to election day, a paper ballot is printed. 45 00:06:04,550 --> 00:06:08,870 And then there's a pre-tabulation audit on election day. 46 00:06:08,870 --> 00:06:17,070 Printed paper ballots are tabulated just like other paper ballots, and there's no hand reproduction required. 47 00:06:17,970 --> 00:06:22,590 And then once the election's over, during the canvas phase, there's a full audit where receipts are prepared. 48 00:06:22,590 --> 00:06:27,130 So end-to-end, that's how the process works. 49 00:06:27,850 --> 00:06:34,510 Now that we've looked at kind of how the system functions, let's look at the threat model. 50 00:06:34,510 --> 00:06:44,170 So as you can see, it's a pretty interesting threat model here, obviously, because it's an internet-connected device. 51 00:06:44,170 --> 00:06:48,270 It is different from traditional methods of voting. 52 00:06:48,270 --> 00:06:55,530 So let's kind of run through the flow, and at each step we can look at some of the threats. 53 00:06:55,950 --> 00:07:04,710 This is the first phase, as you saw, you opted in, the county clerk approves you, and then you've started to download the app. 54 00:07:04,710 --> 00:07:21,510 So obviously, if you're not careful, you could download an incorrect app by mistake, or the app may already be compromised ahead of time by a bad actor, or there may be malware on your device which, you know, prevents normal functioning of the application. 55 00:07:21,510 --> 00:07:23,690 So it's kind of the first stage. 56 00:07:23,870 --> 00:07:33,090 Next, look at, now you're at the voting stage, so the threats here are maybe the biometric capability on your phone isn't working as it's supposed to. 57 00:07:33,450 --> 00:07:43,190 And obviously, at this stage, if there's malware, your apps can be reverse engineered, and there can be attempts made to change how you're voting. 58 00:07:43,750 --> 00:07:49,610 So that's the threat vector, and we'll see how there are ways to mitigate that a little bit later. 59 00:07:49,830 --> 00:08:01,210 Then obviously, in the transmission phase, the transmission is not secure, the transmission channel, that data may never reach the destination or may corrupt it on the way. 60 00:08:01,210 --> 00:08:06,210 So we look at ways as to how that can potentially be mitigated as well. 61 00:08:06,210 --> 00:08:08,370 And then the voter gets a receipt. 62 00:08:08,370 --> 00:08:15,930 So the receipt, there's a chance somebody else may get hold of your receipt if you're not careful. 63 00:08:16,210 --> 00:08:26,150 Obviously, that's an active area of research on how to create self-destructing receipts, but it's a potential threat vector. 64 00:08:26,190 --> 00:08:44,150 And so finally, once the ballots reach the jurisdiction, as they are printing the paper ballot for tabulation, and they do a pre-tabulation audit, so there is a potential threat vector which would likely get caught by the pre-tabulation audit. 65 00:08:44,230 --> 00:08:47,030 Nevertheless, important to keep in mind. 66 00:08:47,030 --> 00:08:51,610 Thank LA Times for making this nice picture available to us. 67 00:08:51,610 --> 00:08:52,770 Very nicely done. 68 00:08:52,770 --> 00:08:54,850 Makes it simple to understand. 69 00:08:55,510 --> 00:09:05,370 And so now that we've looked at the high-level threat model, let's look at what kind of threats we've seen in the wild over the last couple of years. 70 00:09:05,610 --> 00:09:09,710 So we like to group them into a few different categories. 71 00:09:10,090 --> 00:09:13,170 So there's obviously threats at the device level. 72 00:09:13,170 --> 00:09:15,890 There's threats at the network level. 73 00:09:15,890 --> 00:09:19,750 And so those are kind of user-centric scenarios. 74 00:09:19,750 --> 00:09:25,410 And then overall is the cloud infrastructure, our corporate network. 75 00:09:25,410 --> 00:09:29,030 So obviously those are areas of interest as well. 76 00:09:29,270 --> 00:09:39,950 So in terms of what we've seen, passive scanning, obviously, which happens to pretty much everybody these days who has a public-facing web asset. 77 00:09:39,950 --> 00:09:45,050 We've also seen active analysis of our web assets. 78 00:09:45,090 --> 00:09:49,550 So people actually trying to reverse engineer some of that stuff. 79 00:09:49,550 --> 00:09:54,110 And phishing of our staff, clients. 80 00:09:55,230 --> 00:09:58,570 Email spoofing attempts as well. 81 00:09:58,790 --> 00:10:03,650 Social engineering, obviously we're well aware of what happened recently. 82 00:10:03,990 --> 00:10:09,930 We've had attempts, phone calls, people pretending to be who they're not. 83 00:10:09,950 --> 00:10:13,530 We've seen DNS tampering attempts as well. 84 00:10:13,530 --> 00:10:16,490 SIM swap, SIM takeover attempts. 85 00:10:16,490 --> 00:10:21,570 And then reverse engineering of the mobile applications, sometimes partial. 86 00:10:21,570 --> 00:10:26,870 And then through the analysis, mobile API level attacks. 87 00:10:26,990 --> 00:10:32,330 So people actually trying to figure out how the API is working and trying to attack it. 88 00:10:32,330 --> 00:10:40,830 We've also seen on the Android side attempts to compromise the TEE, some of the TEEs are stored. 89 00:10:41,330 --> 00:10:46,950 And then malware, we do come across malware on several devices. 90 00:10:46,970 --> 00:10:54,230 And we'll see later on in one of our lectures, an interesting case that came to light. 91 00:10:55,110 --> 00:11:02,330 So before we dive into some of the data, it's going to be useful to look at the MITRE attack framework. 92 00:11:02,390 --> 00:11:12,310 So recently, MITRE updated the mapping for not just the enterprise side, which covers the cloud aspects in our case, but also the mobile side. 93 00:11:12,390 --> 00:11:22,150 So we mapped that data to what we've seen, as you can see on iOS, some interesting things to note and the device level. 94 00:11:22,690 --> 00:11:26,230 And then similarly, network-based vectors. 95 00:11:26,230 --> 00:11:29,870 So we already spoke about the SIM swap. 96 00:11:29,870 --> 00:11:37,510 And then you'll see some of the other ones in the data head, such as rogue Wi-Fi and things like that. 97 00:11:38,290 --> 00:11:51,730 Similarly, on the Android side, similar to iOS, a couple of different things, but we find the mapping useful, just as we plan out our work. 98 00:11:51,730 --> 00:11:55,310 And I'm sure a lot of you are looking at this as well. 99 00:11:55,370 --> 00:12:02,930 Similarly, on the network side for Android, let's look at a few case studies here. 100 00:12:03,530 --> 00:12:10,830 2018 was when we had first opportunity to do public elections in the US. 101 00:12:11,210 --> 00:12:17,430 And so since then, we've had some interesting opportunities to collect data. 102 00:12:17,650 --> 00:12:21,230 So we'll start with something from 2018. 103 00:12:21,870 --> 00:12:39,270 One of the really interesting things we saw early on back then was the attempts to use multiple devices with the same adversary and using different mobile numbers and emails and trying to do the same thing. 104 00:12:39,270 --> 00:12:49,710 So in that scenario, the mitigation deployed by the system was to treat this as a malicious activity and block office access. 105 00:12:50,350 --> 00:13:04,950 We did see people use phone numbers in some telco blacklist, as well as people using well-known tools like WebSuite to probe the platform, probe the API endpoints. 106 00:13:05,250 --> 00:13:09,990 And in one of these cases, we were able to record the traffic through a honeypot. 107 00:13:09,990 --> 00:13:15,810 So some of that is available as part of the open data package and is also available. 108 00:13:15,810 --> 00:13:21,670 We'll share some public links at the end of the presentation, so you can get it from there as well. 109 00:13:22,310 --> 00:13:31,150 The other interesting thing from a case study perspective was people trying to reverse engineer the application. 110 00:13:31,510 --> 00:13:40,710 The system has an initial handshake process and we saw some attempts, manual attempts to engineer that handshake process. 111 00:13:40,710 --> 00:13:52,330 And so in that scenario as well, one of the mitigations was to block the IP address ranges or block the device IDs, depending on the nature of the attack. 112 00:13:52,530 --> 00:14:01,070 But that's an area where we have some feedback on better approaches to mitigate those kinds of attempts. 113 00:14:02,070 --> 00:14:16,630 Email spoofing, so we did see, we continue to see a lot of email spoofing attempts and obviously with DMARC that helps to mitigate that, but nevertheless we do keep track of it. 114 00:14:16,630 --> 00:14:33,390 Another interesting case study was involved, essentially network-based attempts to scan the passively and then use that information to actively look at infrastructure, particularly the API endpoints. 115 00:14:33,390 --> 00:14:36,890 So that's where we see a lot of interest. 116 00:14:37,750 --> 00:14:45,770 And then more recently we've had an opportunity to do somewhat larger elections in terms of participation. 117 00:14:45,770 --> 00:14:58,910 Some of the early pilots had a very small number of voters, so the opportunity to collect meaningful data was a little limited from a security, on-device security, network security perspective. 118 00:14:58,950 --> 00:15:10,890 But with one of the elections this year, some very interesting data to analyze, and so I'd love to share that. 119 00:15:10,890 --> 00:15:15,850 One focuses around, we call it the mobile threat detection. 120 00:15:15,850 --> 00:15:21,950 We partner with third parties for that capability as well as some stuff we have. 121 00:15:22,130 --> 00:15:29,010 And the way that's structured is, we call it a multi-channel component architecture. 122 00:15:29,010 --> 00:15:36,670 The device is communicating with obviously our back-end, it's also communicating with the third-party system. 123 00:15:36,670 --> 00:15:41,190 Similarly, our back-end is communicating with the third-party system. 124 00:15:41,910 --> 00:15:54,770 A good example was, somebody tries to reverse-engineer the app and hooks the specific locations where some of that code is getting triggered to try and bypass it. 125 00:15:55,030 --> 00:16:01,310 You could potentially disrupt two of these channels, but it'd be hard to disrupt the third channel. 126 00:16:01,510 --> 00:16:08,710 So that, in this case, acts as a saving grace and also as a extra detection mechanism. 127 00:16:09,410 --> 00:16:13,330 And so some of this capability is actively deployed. 128 00:16:13,970 --> 00:16:18,610 Next, probably the most interesting part of the presentation. 129 00:16:18,610 --> 00:16:25,130 So this is data from one of our recent elections, where a few thousand people participated. 130 00:16:25,790 --> 00:16:32,290 And this was kind of the device split, predominantly more iOS than Android. 131 00:16:32,290 --> 00:16:39,990 And then in terms of the threats we detected, on the network side, it was pretty even, 50-50. 132 00:16:40,210 --> 00:16:47,370 But on the device side, we saw sort of a lopsided share of threats being detected on Android. 133 00:16:47,370 --> 00:16:56,050 That could be a function of the devices that were being used, or maybe the unique factors to this election as well. 134 00:16:56,150 --> 00:16:58,910 But something interesting to keep in mind. 135 00:16:59,310 --> 00:17:01,150 Sort of diving one level deeper. 136 00:17:01,650 --> 00:17:07,270 So on the iOS side, let's kind of look at some of the network security threats. 137 00:17:07,510 --> 00:17:11,230 And this data, by the way, is available in the open data set. 138 00:17:11,250 --> 00:17:13,150 I believe it's the part one. 139 00:17:13,150 --> 00:17:17,350 So you can kind of dive in at your convenience as well. 140 00:17:17,370 --> 00:17:25,290 But at the iOS level, we saw 18 devices who were connected. 141 00:17:25,290 --> 00:17:30,910 So this was amongst the few thousand and the 64% who were using iOS. 142 00:17:31,070 --> 00:17:36,870 There were 18 devices detected which the Wi-Fi was deemed to be unsafe. 143 00:17:37,290 --> 00:17:41,970 And so obviously that creates a potential for a man-in-the-middle type of attack. 144 00:17:41,970 --> 00:17:51,130 So the experience was they were not able to complete the process on the device or ask to contact the support team. 145 00:17:51,910 --> 00:17:59,170 In that case, they were requested to either switch to the cellular network or switch to a different Wi-Fi network. 146 00:17:59,770 --> 00:18:04,350 In this case, once they did that, they were able to proceed. 147 00:18:06,170 --> 00:18:11,330 Similarly, on Android, similar number, about 17. 148 00:18:11,590 --> 00:18:17,810 On Android, we also saw an interesting case for potential ARP poisoning. 149 00:18:17,810 --> 00:18:23,170 ARP is address resolution protocols, I'm sure many of you know. 150 00:18:23,170 --> 00:18:33,150 In this case, it was a little hard for a support team to detect because we didn't have visibility into what the voter's home network looked like. 151 00:18:33,170 --> 00:18:41,450 And so it required a little bit of troubleshooting, but eventually turned out to be a media device which was causing this poisoning. 152 00:18:41,630 --> 00:18:46,350 And so the team requested the voter to turn off the media device. 153 00:18:46,570 --> 00:18:50,050 And then the threat went away and they were able to proceed. 154 00:18:50,570 --> 00:18:58,070 So an area we'd love to do a little more research, but it was interesting that we came across this one case. 155 00:18:59,090 --> 00:19:02,430 Next, let's look at some device level threats. 156 00:19:03,090 --> 00:19:07,730 On the iOS side, we did detect a few devices where the pin was not set. 157 00:19:07,730 --> 00:19:15,070 In that case, mitigation and resolution was to force the users to send in or activate the biometrics on the device. 158 00:19:15,070 --> 00:19:17,410 Otherwise, they couldn't really proceed. 159 00:19:17,930 --> 00:19:22,350 And we saw a few cases of side-loaded apps. 160 00:19:22,690 --> 00:19:30,310 And in each of those cases, when a little bit of due diligence was done, they were deemed to be legitimate apps. 161 00:19:30,310 --> 00:19:33,190 And so the voters were able to proceed. 162 00:19:33,450 --> 00:19:38,670 It was good to see them being detected in case they could pose a threat. 163 00:19:38,670 --> 00:19:42,070 So definitely something we'd like to research more on. 164 00:19:42,190 --> 00:19:50,210 On the Android side, a much larger number of devices without pins, which we weren't sure why, but was interesting. 165 00:19:50,490 --> 00:19:59,210 89 devices didn't have pins set, so all those voters were forced to set a pin or activate the biometric capability on the devices. 166 00:19:59,430 --> 00:20:09,990 Similarly, on the side-loaded side of things, a lot more side-loaded apps, which kind of made sense given the ecosystem on Android. 167 00:20:10,150 --> 00:20:16,710 So it did take quite a bit of time to go through these, make sure everything was okay. 168 00:20:16,730 --> 00:20:22,470 Luckily, the election went for three days, so our support team had enough time to troubleshoot. 169 00:20:22,730 --> 00:20:28,610 In this investigation, we did find two instances where the device did have malware. 170 00:20:29,010 --> 00:20:32,110 And it was a fairly well-known malware. 171 00:20:32,110 --> 00:20:34,350 I'm sure many of you probably heard about it. 172 00:20:34,350 --> 00:20:46,830 But it was interesting that we were able to detect this, inform the voter, they were able to delete the offending apps, reset the devices, and then proceed. 173 00:20:47,130 --> 00:20:54,250 And then once the new checks were confirmed, they were actually able to vote successfully and complete the audit as well. 174 00:20:54,990 --> 00:21:02,270 A couple of other interesting Android-specific things, we did detect some instances of USB debugging being enabled. 175 00:21:02,590 --> 00:21:10,490 Nothing malicious on that front, but during the active voting, the phone was not connected to a computer. 176 00:21:10,490 --> 00:21:11,550 So that was fine. 177 00:21:11,550 --> 00:21:17,650 And then we did have another 21 devices where developer options were enabled. 178 00:21:17,650 --> 00:21:24,610 So once again, no direct impact, but something we'd like to keep track of. 179 00:21:25,030 --> 00:21:31,670 And as I mentioned earlier, this data is available as part of the package we've released. 180 00:21:31,670 --> 00:21:50,490 We'd love more feedback and suggestions on how to collect, how to analyze this in a better way, especially areas around malware and other really interesting things we were able to learn from here. 181 00:21:51,330 --> 00:21:55,730 And you'll notice that the data is, for the most part, anonymized. 182 00:21:55,730 --> 00:21:59,710 And that's true of the collection process as well. 183 00:22:00,350 --> 00:22:06,810 The voter is the one who's asked to initiate and not knowing what exactly has happened. 184 00:22:06,810 --> 00:22:14,850 So the data does not contain any personally identifying information, to the best of our knowledge. 185 00:22:15,190 --> 00:22:21,170 And lastly, love any suggestions and feedback from the community. 186 00:22:21,170 --> 00:22:30,790 We're a young company, the youngest company in this space, trying to do something which is unusual, to say the least. 187 00:22:30,810 --> 00:22:36,730 And so we'd love suggestions and feedback to improve and what things we could do better. 188 00:22:37,270 --> 00:22:40,810 And appreciate the participation of the community. 189 00:22:40,810 --> 00:22:48,450 Thank you for the DEF CON voting village team for giving us this opportunity to share this data. 190 00:22:48,990 --> 00:22:56,250 And we'll be sharing more of this data as we do more election pilots. 191 00:22:56,730 --> 00:23:00,810 And we'd love to continue to get feedback from everybody. 192 00:23:01,750 --> 00:23:08,610 More information is available on our website, especially under white papers and under the security section. 193 00:23:08,610 --> 00:23:17,230 So please feel free to explore and give us feedback and look at the data as it's posted in the future as well. 194 00:23:17,230 --> 00:23:25,510 Once again, thank you and hope you all have a great DEF CON experience this year, especially at the voting village. 195 00:23:25,690 --> 00:23:25,930 Thank you. 196 00:23:25,930 --> 00:23:26,690 Take care.