Submind YouTube summaries
Thumbnail for Learning the Language of Privacy: Language Learning Apps and Privacy

Learning the Language of Privacy: Language Learning Apps and Privacy

Watch on YouTube

Video summary

Matthew Plasencia presents his master's degree project titled "Privacy Invasion in iOS Language Learning Applications," which investigates the privacy vulnerabilities within popular apps like Duolingo, Busuu, and Memrise. The research originated from an initial interest in creating Capture The Flag (CTF) challenges but evolved into a deeper forensic analysis after his advisor suggested exploring advertising systems further. This shift led to a comprehensive examination of how these applications generate ads, transmit data across networks, and potentially expose user information to third-party advertisers through mechanisms like real-time bidding and interstitial advertisements. To conduct this investigation, Plasencia utilized open-source digital forensics tools on jailbroken iPhones running Debian Linux. He employed the Universal Forensic Apple Device Extractor (UFED) for full file system extraction and Wireshark combined with a man-in-the-middle proxy to decrypt network traffic. While he initially considered using Storm Sniffer as an alternative, challenges during early lessons led him to rely heavily on these tools to capture unencrypted packet data. The process involved installing root CA certificates to trust the decryption keys, allowing him to inspect HTTP requests and responses that revealed specific identifiers sent from the devices to advertising networks such as Unity Ads Network, AppLovin, and Google Ads. The analysis uncovered significant discrepancies between app privacy policies and actual network behavior, particularly regarding data transmission in both free and paid versions of these applications. Although Duolingo's paid version claimed not to share user data with advertisers according to their policy, the forensic evidence showed that mediation contents containing device metadata were still being sent to Unity 3D ad networks. Similarly, Busuu transmitted transaction metadata including account IDs and device types regardless of whether ads were displayed or purchased away. Memrise exhibited less frequent communication but was found to ping Facebook's advertising network unexpectedly, highlighting a common issue where apps retain advertiser APIs even when users pay to remove visible advertisements. In conclusion, the study demonstrates that many mobile language learning applications may be violating their own privacy policies by transmitting user-identifying data and device information to third-party advertisers via API calls. Plasencia emphasizes that while these apps offer engaging ways to learn languages through gamification and diverse content types like stories and podcasts, they pose risks for privacy-conscious users who wish to avoid having their data shared with entities they do not trust. He recommends avoiding such applications if one is concerned about unauthorized data collection and suggests future research should extend this analysis to Android versions and specific ad formats within the Unity mediation system.
Read the full video transcript
So, hello everyone. I'm Matthew Plasencia, and in today's presentation, I will be talking about the project that got me my master's degree. And this master's degree project was titled privacy invasion in iOS language learning applications. And the deal that I did with that is I used some open source apps for digital forensics and just overall cybersecurity in order to help me find out privacy vulnerabilities in common language learning apps. >> [snorts] >> So, before I get into the actual meat and potatoes of this project, I didn't Let me introduce myself. So, I am Matthew Plasencia, and as you know, as I already said, I have a master's degree in computer science from Cal Poly Pomona. And I got that this past May. So, I'm very happy about that. And I was lucky to get a job in my field of digital forensics very quickly after that. And I'm working there now. And one of my many hobbies on the side is working with computers and very and a lot of Linux and this computer is running Debian at the moment. And I also like to try and run other operating systems like Red Hat and the BSDs and some other Linuxes. And now this presentation, as I said, is going to outline my master's degree project and all of the stuff that I did inside it. And how I used these digital forensics tools in order to help me find out digital forensic insights of these language learning apps that I was interested in. And I will do this by first laying out the background of all of the things that I did, then I'll go into the apps that I used, then the open-source tools, and after that, the fun parts, which are the methodology and the results that I got. And the end of this will be after I do that. And so, for my background, that's going to be first, so this project started really at the end of the end of maybe three semesters of floundering around through various other projects. And actually, this project started out of out of the idea that was the genesis of the CTF that was presented here last year for the scale CTF 2025. So, you have the idea that went into this to thank for that if you played it. And so, while I was doing [snorts] the idea before this, which was to generate CTF questions and generate my own sort of CTF CTF material for that, my advisor was telling me no that that was not in-depth enough. And so, one of the apps that I was using, which was Duolingo for questions, I looked into that a little bit more and then I kept going deeper and deeper into that and until I looked into how it worked with the advertising systems. and after looking into advertising systems, I got I got something that my advisor said yes on that I can move forward and delve deeper. So, that is how it happened. And so, I ended up diving deeper into how ads are generated and how ads send data across from the phone to the network and to the places where they send all this data. So, that's pretty cool and you'll hear more about that later on. But, towards the end of the research, I came up with this question to make the report complete. And this question was, is there any user identifying data that is packaged up and sent between between the phone and the servers? That's common between Okay, wait. Is any user identifying data packaged and sent in a different way between free and paid applications mobile language learning applications? And I cut out a lot of stuff from this presentation about advertising systems because I didn't think that was relevant. But, some of the main things that you may want to know about advertising systems are some definitions such as advertising terminal or such as the demand-side clients and supply-side clients, which are Demand-side clients are things like this computer that I'm presenting on or the phone that some of you guys may use and those are the devices that receive the ads. And supply side clients are the clients >> [snorts] >> like servers up in the cloud somewhere that deliver the ads over to you. And real-time bidding is the process by which these ads are selected that you see. And so real-time bidding processes are some very a split-second and very precise processes that allow the highest paid bidders on a on a certain ad to show their ad over to you. And one that you'll be hearing twice or more during this presentation is going to be the word interstitial, which means just coming between two things. So in this case, interstitial would be referring to an ad such as an ad that you would see on your game when you're when you press a button, say you're on your home screen and you say I want 25 gems and I'm going to watch an ad for that. And that interstitial ad would play between you pressing the button and getting the ad. And content distribution networks are just the servers that supply us with all this cool content that we see and all the annoying ads. And the apps that I used were Duolingo, Busuu, and Memrise. So we'll see a little bit more about these in this section. So Duolingo is one that you guys all may know and I'm very familiar with. And the reason you guys know Duolingo is probably because of this green little owl guy which tends to be a little needy for your attention. Sending you notifications like I'm going to steal your parents or something along those lines, something funny that gets your attention. But anyways, this works in attracting people to it and getting and even getting them to pay. Because it does have a lot of ads in its free version and its paid version is the answer to that problem of wanting to get rid of the ads. And so for this whatever free version and paid version you get certain features that are the same mostly. Which are exercise types that you'll see as well as some AI features. And these AI features, some of them are locked to the highest paid tiers, but we don't need to talk about those today. And one of the things that I liked very much about this is the amount of languages that it had. So it had languages [snorts] that you like like Greek, French, German, and all those others. And other interesting ones like Arabic, Turkish, and even some fictional ones like High Valyrian and Klingon. Which I didn't play. And for those character-based languages like Korean, Greek, Russian, and Arabic, they had very cool character exercises that I played through for ones like Arabic and Greek, which I liked very much. And they taught me the scripts. And so the exercise types that you get are things like what you'll see on first of all, to the to my right, your left, to the left of your screen you you see things that start with a work being exercise, a size with fill in the blank, and a size with a microphone, which you would say the words bir saniye lutfen in Turkish, and you would get that right. And you also have a path of a bunch of lessons that will allow you to progress through the app on Duolingo. And the one of those types of lessons that you'll see is also a story, and another one is a podcast type. And those two are the same. And the story, like this one, which is l'ascenseur, which is the elevator in the French, will give you a story about an elevator, and you have to understand it and answer questions throughout about your comprehension of whatever was being said through that. And you do a similar thing in your podcast exercises exercises, but in the podcast exercises, the only difference that it has is that it's much shorter than the story. And it has only two sort of two of these exercises within it. And my favorite feature of Duolingo, which you'll see here that I was doing for a long time, which is the streak in the app. So, I played this consistently every day from August 19th, 2020, to mid-June of last year, which was totaling over 2,000 days. And I learned bits and pieces of a lot of languages throughout all that time. And I know people spend a lot of days streaking on one language, but I couldn't do more than probably 500 days on a language. And they have two paid tiers, which I show one here I show one of which here, which is the one that I paid for, which is Duolingo Super Duolingo. It was going to say Super Duolingo Super. But yeah, that's you can see the paid features up there, which are not very relevant to what we have here. But now, unlike Duolingo, we have Busuu and this Busuu app is very different than Duolingo, but also very similar in that it's different because it's run by the people at Chegg, which is very interesting. And it is also free with a paid tier. If not, I wouldn't have used it for this. And the interesting difference that it has between this and Duolingo is that it has history parts of lessons, and I enjoy that for knowing the context of how certain things in languages came about and how different languages interact with each other being in similar regions as one another. >> [snorts] >> And having some interplay there. And so, you'll see here on your left that Busuu also has the path type thing, but in a different kind of way than other ones. And it also has character-based exercises for things like Arabic, which allow you to learn characters in a similar way to Duolingo, but without really tracing them out and doing them by hand as you would write them with your finger as if you're doing it on it on a tablet with a pen, that would be even better. And like Duolingo, it has a profile page and has some friends list features to do things with your friends and learn in a community. So now I have Memrise, which is a similar but also very different. And it's mostly very different because >> [snorts] >> although it's a free and a paid tier, it has a very different system in that this system has a space repetition system only with levels in which you click the button to start a lesson and you keep on leveling up by each lesson that you do and each one that you get right is counted less than the ones that you get wrong. And it has a very interesting feature, too, that allows you to listen to native speakers speak the language for reals rather than the other two with their AI-generated voice lines, which is pretty fun. And for this one, I don't have any pictures since the report that I did for this didn't include any pictures. And as a result of that, I will be going into my open-source tools. And there's a few very good tools here if you've been in the digital front digital forensics community. >> [snorts] >> And one of them is my one of my favorite ones for extracting information from iPhones, which is the device that I use for this. And that is the Universal Forensic Apple Device Extractor or UFED by one of my favorite guys in the digital forensics community, who is Christian Peter. And this one is an all-in-one suite for extracting things from iPhones. So so long as you have a jailbroken iPhone, you're going to be able to take information from the iPhone in a full file system format, which gets you all the files and all of the data on the iPhone including your iTunes information and any any any any app information from the iPhone. As opposed to your things like regular iTunes backups and logical plus backups, which just capture iTunes data and other data related to that. And in addition to these, they also have different log generation techniques, which are your Apple sysdiagnose log, which gives you diagnostics data, and your Apple unified logs, which gives you unified log data from the sysdiagnose and other things that are processes running on the iPhone. >> [snorts] >> And you can see this on his GitHub page and you're going to like what you see if you want to gather data from your iPhone. And so with UFED, these next this slide and the one after it shows pictures of how it's used. So how I did it was first of all, I I actually first of all, there there are binaries for this, but since I was using this on Mac to make it easier to work with the iPhone and do everything all in one platform, I went ahead and said, "Okay, I need to gather every single dependency." So after I gathered every single dependency and then I was able to see the bar on the left side of the window. I entered my path in that enter path thing. And then after I clicked acquisition options and it clicking that took me to the acquisition options from which I picked full file system and I just clicked okay since this is a default and the documentation said that this was okay. And this phone that I used on here was not the phone that I actually used for the research, but it's just as an example, so the one that I actually used took longer than this one since it was a 64 GB phone. And on that phone, I'll get into this more later, but it didn't have the data that I wanted. And the data that I wanted dealt more so with network logs and for those of you who are into cybersecurity and know a thing about network traffic, you'll know that Wireshark is one tool that we can use to gather that. And for you for those of you guys who don't know about Wireshark, it's just an all-in-one tool that's used by us cybersecurity people to gather every single activity of a network. When I opened this with root privileges, which is basically admin if you're in Windows land, so when I opened it with root privileges, I was able to get something like the screen that you see on the screen over there and this showed something along the lines of all of these interfaces and picking something like the one that gives me the most data, which is your e n zero, which is your network, gives us a capture like this. And all that you need to know about this capture is that most of the data in this capture is going to be encrypted. And with encrypted captures, we're not able to see much. So, we need a tool that deploys something to get in between those thing between the Mac or whatever device and the network and decrypt the packets so that we could see what's inside and be able to see what information is being sent between the phone and the servers. And the first thing I found was a cleverly named app called Wireshark Helper. And the Wireshark Helper is obligatory between the Mac and the iOS system. And in this in during my research, it was free and open-source for both Mac and iOS. But today when I checked it, the Mac version was locked behind a paywall of $10. So, you need to shell out a little bit of money in order to do this if you want to use the Wireshark Helper. And the way that did my man in the man in the middle proxy, which is how this whole operation works, is through an interface on the Wireshark called the remote virtual interface or RVI. And in this case, it was my first slot for RVI since I have nothing and that's called RVI0. And so, in order to set this up, I just had to run the command as you see in this frame from the video. And it gave me three things. First of all, an NSS key log file which I put into a certain directory in Wireshark. And after that, it gave me a root CA certificate, which I have to put into on my phone. I have to go to the link that it shows. It would show on my screen and download that onto the phone, trust it, and or install it and trust it, I should say. And then after that, I can use the Wireshark helper app on the phone as you see on the right of the screen and type in the network address on my local host network. And connect to it and once I start gathering traffic from the phone, it will look something like this with everything decrypted. And that is very cool. But one thing that I found is that this was a little bit inefficient for me to gather my traffic from. So, I ended up looking for things that are on the iPhone only. And the one that I ended up finding pretty quickly was Storm Sniffer which is an all-in-one platform for gathering network information and analyzing that information. But unfortunately, it's neither fully free neither open source. So, you're going to have to pay a little bit of money. And that money is only $3. But $3 will get you this man-in-the-middle or MITM function on the far right of your slide. I mean, on the far left. And [snorts] once you get that function by doing the same thing that I described before by gathering the CA certificate and installing and trusting it, you can press the start button and capture all your traffic and stop it by pressing the green stop button that would pop up. And then in the second picture, you're going to see you're going to see two full captures that happened. And those two full captures that happened are stored in HR format, which I inspected on Wireshark just to do everything in my Mac with a tool called But that ended up being a little bit too too strenuous for me, so I ended up just fully using the app at a certain point. And what how the app gave our information is very cool. It had you can scroll through scroll through left to right on the top bar to see all of the major sections of what you would find in a packet. And scroll up and down for all the minor parts of that section of the packet. And one thing that we'll go into is the packet information of certain requests later on. And this is the experimentation side, which lists my trials and tribulations of doing this experiment. And so after gathering all of my applications and gathering all of the requirements to run them on my Mac and my iPhone, and having it jailbroken, I first had UFED and I ended up skipping UFED in the very beginning stages of this because all that the iPhone had on it was basically data that was more along the lines of app executables and files related to things that the apps made and not necessarily network information that was gathered. And the golden ticket to my network information was actually capturing the packets that went out to the network from the phone. And so when I went to went into network sniffing, I had to do the same basic thing, which was go into my VPN profiles and trust each one I mean install each of them and then go into the privacy and security settings and trust each of the certificates. And once I did something like that, the dark theme image is what I was able to get and that meant that it went all the way through. And so, both of these apps did a pretty good job of getting all of the things that I needed, but Storm Sniffer had some problems and those problems mainly being a problem of me not being able to get through lessons early on when I was going all the way through the lesson gathering information. With the mic, caused me to just go all the way to Storm Sniffer for everything. And throughout the first parts of my research, I was heavily doing ad ad-based traffic in order to see if it led me to any malicious ads. And towards the end of it, my advisor told me to also add add traffic with ads inside it in order to make sure that these apps, when you pay for them and pay for not getting ads or not getting anything that's showing your device information or anything about you to advertisers because that's probably a violation of privacy. And we'll see more about that later on, but for now, I talked about HTTP Cat, but I did use that in order to look at some of the information in the stuff on my Mac by air dropping in the HAR over to my Mac from the iPhone through the early stages of the process. And the flowchart was basically this where I went ahead and started the lesson and for most of the process I got maybe one or two less one or two exercises exercises before the end and when I got to that point I went in and started the Storm Sniffer or whatever other one and said and said, "Oh, yeah, I'm going to I'm going I'm going to see what ad what ads or what information is being sent over and I I played everything and then after playing everything I stopped it and analyzed whatever happened and whatever traffic went through and I recorded it as a data point. And so many of my data points for the ad traffic went to these sites which are anything from the Unity Ads Network anything from osdk.mediation.unity3d.com anything from anything from the AppLovin network anything and anything from the Google Ads network. And when it came to the osdk.mediation that was one of the big providers of the data that I put in my findings and we'll talk about more about that in a few moments. But one of the fun things that I found is that the Unity 3D ad network was used to supply all the ads for these apps. And the Google Ads network was what all these ads came through and through my Google Ad Center, I was able to meticulously go through all of the ad types that I had and see what ads that I actually wanted to see more of and which I wanted to see less of. So, you'll see here that on ad types such as the games, I clicked less of them with a minus button. And with the plus button, I could get more of home furniture or food or anything like that. And so, the data that actually goes to the network is pretty interesting here. So, first of all, what you'll see here, if you can actually see the small text on the screen, is that you're going to see each link to mediation has three selected types of identifiers to it. And the two main ones that I like to focus on are the ad format and the compression type. And the ad format here is three, which is interstitial, and that is expected since I got this ad probably in a Duolingo lesson after finishing the entire thing and clicking the next button before I went home. And the compression type refers to the file that you see here in the body of this request. And if you guys don't know anything about web requests, this is JSON data, as you can see by the leading curly brace, and you can see it's encrypted in a cer- or encoded in a certain type of format by the first few letters, which are 4 H 4 S I and three A's after that. And if you [snorts] want to get a head go ahead and see the slides, I will send them to you later on. But I have a link in this slide to where I found this command. But since I was on a Unix-like system, I was able to use a cool command to actually decode all this all this JSON information in here. And that was the base64 command. And if I put all the data that's in this body into a file, say something arbitrary like the name input file, and run base64 minus capital D on the Mac or lowercase D on other Unix functions, I on this and pipe the results of that into zcat, I'm able to see it. And zcat gives me some sort of thing that looks like this. And so you'll see here, if you can actually see all of that on the screen, you'll see that it has things like device data, the date and time that it was going on, maybe locate data about the location and time zone, and maybe even timestamps, if you're lucky. So that was what I found in the ad. And we're going to see some a little bit more of that in some of the ad-free versions of it. But before we see that, we're going to go into seeing other stuff, which is a call to app app-analytics. ATT.com, which is an Apple proprietary thing, which just syncs with the server telling you what kind of ad preferences and tracking preferences you have on that device. And that was a post request of a GIF with HTTP error code HTTP success code of 204. And to get into the results that I added to this, which were specifically for the ad-free versions, which are Duolingo paid, Busuu paid, and Memrise paid, you're going to see some information here that may not be necessarily the same as what you would get these days if you were to do the same experiment. Because during the experimentation process, I found that some of these things varied at certain times. So, just take some of these results with a grain of salt. But, what I found on the mediation contents for Duolingo paid is I found similar data to to actually what's on a couple slides before, similar data to that. Sent to mediation on our on our Duolingo paid version, and according to their privacy policies which I read, they're not sharing any sharing or collecting any of your data when you pay for them. So, that's a pretty interesting difference than their privacy policy. And in the same way, actually before I move on to that, I should say that this basically by the time of around March of 2025, this stopped happening for me. So, that was pretty interesting. But, one thing that did not stop happening for me is getting mediation contents being sent over to Busuu in the Busuu paid version. And in the same way, there was similar information between Busuu and on the paid and free versions. And the interesting thing also is it showed metadata of the transaction which are things like probably your account number, your account ID, your device type, and other information about the phone. And whereas the [snorts] other two sent things to mediation, I didn't really see much, maybe two or three pings to mediation on the free version of Memrise, but mostly Memrise didn't send much to mediation, but across all of my research and testing and across all times, it's an interesting things to both the ATT and ep2.facebook.com, which I found is part of the Facebook Ads Network, which is something that I didn't expect it to do, but nevertheless, that was interesting to find. And in finding that, and finding all of that stuff, I leveled all of this impact up as these mobile language learning apps are cool, but they may be breaking their privacy policies by gathering this data with the APIs that they use to gather it. Because even though they say that they're not showing you ads, they still have the APIs for these advertiser functions within their apps, and >> [snorts] >> that is not a very good idea for our privacy. And I recommend that you guys stay away from this if you guys don't want to have this happen to you, and you don't want your data being sent off to third parties that you don't agree with. And in my report, I summarized future work as to look at the Android versions and to see how they're similar and differ to this. And to do further research on the ad formats in the Unity 3D ad mediation because I saw during this research that there was certain things there was also a code two, but I didn't see much about a code two, I think. And also to see how to figure out what's being pinged over to that ATT servers in that GIF. And and [clears throat] some more stuff, but that other stuff wasn't important. And with work and life going the way it is right now, I don't think I'll ever get to this, but it may be something for you guys to do if I interested you guys in doing some research on these language learning apps in Android. And now I'm getting to the end of this. So, the summary that I prepared for this is that language learning apps are new and interesting ways of learning languages that allow you to interact with your phone or a computer in order to learn these languages and they also may include online advertising, which can be a bit of a hard sell for some people who are privacy conscious. >> [snorts] >> And if you want to gather data from these apps on a phone such as an iPhone, you need a man-in-the-middle wireless sniffer app in order to decode all of the traffic. And the ones who do that, you can find that apps like Duolingo and Busuu share data about your device with the Unity 3D ads mediation, and that is not a good idea. >> [snorts] >> And that'll be the end of the That's the end of the presentation. So, thank you guys for reading and watching. And you can contact me at email address at plasenciamat31@gmail.com if you want to have a copy of these slides. And you can also check out my Substack at substack.com/@matthewplasencia @matthewplasencia in order to see what I write about about cybersecurity, digital forensics, technology, philosophy, and some other stuff. And I also have a YouTube channel that covers topics that go in with that. So, now I'm at about 40 minutes of presentation time, so we have probably about 10 minutes to do some question and answer.