https://www.kolide.com/blog/is-grammarly-a-keylogger-what-can-you-do-about-it [kolide-log] [hamburger-] Product [house-208f] Home [credit-car] Pricing [slack-d949] Slack App [gold-lock-] Security Resources Blog Help Center Changelog Honest.Security Company Terms of Use Talk To Sales Try Kolide Free Sign In [kolide-log] Product Pricing Company Resources Talk To Sales Try For Free Sign In [self-remed] Self Remediation Engage end-users on Slack to self-remediation issues [endpoint-m] Endpoint Monitoring Monitor your entire Linux, Mac, and Windows fleet [honest-sec] Honest Security Device management that doesn't erode your values [compliance] Compliance Measure, achieve, and maintain your compliance goals [fleet-visi] Fleet Visibility Gain visbility across Linux, Mac, and Windows devices [service-de] Service Desk Real-time insight to quickly profile service desk issues Help Center Changelog Security What is Honest Security? From the blog * [blog-new-b] Is Grammarly a Keylogger? What Can You Do About It? * [blog-top-b] Is Grammarly a Keylogger? What Can You Do About It? * [blog-hot-b] Announcing Kolide's $17MM Series B Blog All Engineering Inside Kolide Tutorials Deep Dives Perspectives News Categories Categories All Engineering Inside Kolide Tutorials Deep Dives Perspectives News [cover] [twitter-3e] [linkedin-a] [hacker-new] [reddit-e95] [url-link-a] Contents Kolide Endpoint Security for Teams that Slack Try Kolide Perspectives Is Grammarly a Keylogger? What Can You Do About It? [jason-mell] Jason Meller Sometimes when I sit down and try to write, the words don't flow. The sentences are clumsy, the words bump into each other, and I always have the sneaking suspicion that there is a more straightforward way to get my point across. I just can't always get there on my own. Enter Grammarly. Their pitch? Forget that D+ you got in 9th Grade English 20 years ago; we will make you sound compelling, concise, --and let's face it-- smarter. Their cheerful videos provide persuasive examples of this value proposition in action, as pithy phrases (which all too closely resemble my writing skills) are transformed like Cinderella into glamourous ball-room dancing maxims for the ages. But just like Cinderella, there's always a catch. The problem, it seems, is that Grammarly is only willing to perform this magic trick on their cloud. That means, every. single. bit. of. text. you want improved is sent to them. As an individual, you may be all too willing to agree to that bargain. But what about businesses and IT teams? How do they evaluate Grammarly? On the one hand, it's a tool potentially beloved by your users, but on the other, it's a potential nightmare for keeping your secrets, well... secret! Is this any different than the same bargain offered by other cloud-based word processors or chat tools? Let's figure it out. Is Grammarly a Keylogger? No one wants their product to be called a keylogger. The term evokes images of creeps installing malware on devices for the express purpose of surveillance and password harvesting. Yet, by explicit definition, any tool that logs a user's keystrokes and sends them to a third party is technically a keylogger. This must come up a lot for Grammarly because they have an official response to the question right on their support page. Here is a direct quote (emphasis mine) Grammarly does not record every keystroke you make on your device. Grammarly accesses only the text you write when you are actively using a Grammarly product offering: The product checks only the text you want it to and provides writing suggestions. Additionally, Grammarly's product is blocked from accessing text in fields marked "sensitive." This means that Grammarly's desktop applications and mobile keyboards do not see anything typed in credit card forms, password fields, URL fields, email address fields, or fields where similar private information is provided. Sure, this is an answer, but as we will see later, it vastly oversimplifies how Grammarly captures text in practice. Grammarly is essentially saying that it is not a keylogger because the user chooses when Grammarly can receive text, and Grammarly provides value. It's an answer carefully built around a technicality. Sebastian breaks it down much better: Grammarly *IS* a keylogger. They try to dodge it by saying "Grammarly accesses only the text you write while using our product" https://t.co/50BXX9r6uu -- Sebastian (@sebmck) March 8, 2019 Here's the problem: Grammarly's framing of the question isn't helpful. When people ask, "Is Grammarly a keylogger?" they are really asking, "Am I going to regret using this service?" To answer that question as a security practitioner, here are some things I would want to know: 1. What methods does Grammarly use to capture text I write? 2. What sensitive data could be captured inadvertently? 3. What is Grammarly allowed to do with the text that they capture? Let's find out. What Methods Do Grammarly Products Use To Capture Text? Grammarly offers a variety of products under their branding. If I want to use Grammarly, the options include: * A web-based document editor * A web-browser extension * An app-specific add-in (ex: Microsoft Word) * A custom installable keyboard (for mobile devices) * An app running on your OS A graphic that displays Grammarly's apps. Each one of these methods comes with different risks and tradeoffs. Today I want to focus on what is likely the most popular method of utilizing Grammarly, running it as an app on your device. Since I run macOS, let's dig into that one. On macOS, when you install Grammarly, you are first presented with a screen that looks like this: A screenshot of the installation screen for the macOS version of the Grammarly app. The screenshot asks the user to add Grammarly to the list of apps with accessibility permissions and offers a button to kick off that process. And then helpfully pops up the following screen: A screenshot of the System Preferences app showing the Security pane. On the bottom of the app Grammarly has anchored its own window with arrows that direct the user to unlock the pane and check the box next to Grammarly which will instantly grant it the accessibility permissions. Grammarly is briskly moving you through this process because their app cannot function as designed unless it has these specific accessibility permissions. But why would a grammar app need accessibility permissions? It turns out that accessibility permissions are like the Holy Grail of permission entitlements. Accessibility permissions allow approved apps to fully control the entire computer as if they were sitting next to you, watching your screen, and holding their hand on top of yours while you typed on the keyboard and moved the mouse. Based on my brief usage of the app, in practice, this means: 1. Capturing all of the text inside any application used by the user. 2. Capturing new keystrokes entered into any other app. 3. Augmenting/Manipulating the UI of other apps in focus. Once this permission is granted, Grammarly can now capture text and send it back to its servers without any further user interaction. No other permissions or extensions are needed. Grammarly Captures Text That You Already Typed Before You Installed It Revisiting the keylogger answer from earlier: "...Grammarly accesses only the text you write when you are actively using a Grammarly product offering." In my reading, Grammarly heavily implies that users have a fair degree of control over what Grammarly can access. But in practice, this is very misleading. Let me show you why. --------------------------------------------------------------------- Below, I have composed a new note in Notes.app riddled with grammatical errors. I did not have Grammarly running while writing the document, so there isn't any possibility that keystrokes have been sent to them. The Notes.app with various grammatically incorrect sentences. After running the Grammarly app, re-granting the accessibility permission, and then putting the app in focus, the screen looks like the following: The same Notes.app with the various grammatically incorrect sentences now with the Grammarly widget activated and the text marked up by Grammarly. Grammarly processes text that was already entered in the window Grammarly parsed and marked up my document without me typing a single keystroke. All I needed to do was bring the window into the foreground. This makes sense; Grammarly would not be easy to use if it could only provide grammar advice on the documents and words you typed when it was running. I'm not even sure how much Grammarly even cares about the keystrokes you're typing; if it can read what was written previously, it does not need to. That being said, I believe it is stretching credulity when they say, "Grammarly accesses only the text you write when you are actively using a Grammarly product offering." This is a big problem when it comes to claims that users have control. As a user, I had no way to know that the instant I opened the Notes.app Grammarly would swoop in, scrape all the text, and send it to their servers. Now that I know a document was scraped, I can tell Grammarly to stop doing that in the future, but the cat is already out of the bag. As far as I can tell, there is no easy way to preemptively block Grammarly from accessing apps without you first allowing it to activate in the app and performing the block in-situ. How do I know when and where Grammarly will even activate? It's impracticable (perhaps impossible?) to tell until it's already happened. This lack of consent is fundamentally dishonest. What Sensitive Data Can Grammarly Capture? Now that we know Grammarly can capture text by reading the content of the apps in focus, how do we know it won't collect sensitive information? From their support page: ...Grammarly is blocked from accessing anything you type in text fields marked "sensitive," such as credit card forms or password fields. You can deactivate Grammarly at any time if you don't want it to check a particular piece of text. Sounds great on the surface, but let's dig in. First, what in practice constitutes a sensitive field? Their support only offers two obvious examples password fields and credit cards, but what about Social Security Numbers? Here I've constructed a simple form with the following markup: