Skip to content
This repository has been archived by the owner on Apr 25, 2024. It is now read-only.

We have disabled the Geeknote app for all Evernote accounts #89

Open
en-security opened this issue Apr 3, 2018 · 50 comments
Open

We have disabled the Geeknote app for all Evernote accounts #89

en-security opened this issue Apr 3, 2018 · 50 comments

Comments

@en-security
Copy link

Hello,

Evernote has disabled the integration between this app and our service due to security concerns. If you’d like to learn more, please review this post on our customer forums:

https://discussion.evernote.com/topic/112711-we-have-disabled-the-geeknote-app-for-all-evernote-accounts/

Regards,

The Evernote Security Team

@jeffkowalski
Copy link
Owner

@en-security, I've read the thread from Rich Tener and I don't understand the action. Geeknote simply uses the approved API to access the service via commandline. Is there a security problem with the program itself? Shutting it off now limits the functionality of legitimate users without recourse.

What's the next step?

@en-security
Copy link
Author

@jeffkowalski
Hi Jeff,

Please contact us directly at [email protected] so that we can discuss next steps.

Thanks,

Jeff Lanza
Evernote Security

@jeffkowalski
Copy link
Owner

Geeknote users and developers,

I connected with the Evernote security team this evening, and I wanted to share their status update and recommendation with you:

Thanks for getting in contact with us. We detected that an attacker had weaponized the use of Geeknote to automate accessing Evernote accounts. The attacker learned the password to a small percentage of our users’ accounts and connected the Geeknote app to them. 

In situations like this, we reach out to the developer to work with them to stop the abuse on their end of the service. We were unable to reach the registered developer for Geeknote. When we looked at the Geeknote app, we found that the consumer secret was publicly available in the source code. This situation doesn’t comply with our API license (http://dev.evernote.com/doc/reference/api_license.php), so we revoked it.

Moving forward, you have a couple of different options.

1) Register for a new developer key at https://dev.evernote.com. We’ll issue you a consumer key and secret and with some app changes, you can support oauth as an authentication method. You’ll probably want to rename the app (Geeknote 2). You’ll also need to setup a web service to protect the consumer secret, store the oauth tokens, and broker the communications between Geeknote and our service. I realize this could take a non-trivial amount of time and expense, so I recommend looking at option 2.

2) Update the Geeknote code to support Personal Developer Tokens (http://dev.evernote.com/doc/articles/dev_tokens.php). This would let any Evernote user download a token that can be used with a stand-alone app like Geeknote. This is the easiest path forward to get users back online with Geeknote.

We currently whitelist which users can use personal developer tokens. We’ve already seeded that whitelist with every Geeknote user that was using the app before the credential stuffing attack happened.

I believe that setting the environment variable EVERNOTE_DEV_TOKEN to the token acquired via path 2 above should be sufficient. Please do NOT check that token into a repo.

I could use help in a more permanent solution via path 1 described above.

I'm grateful to the evernote team for their security vigilance and for their quick help today.

@pierrefrancois
Copy link

I don't understand fully what I have to do. I acquired a new developers token, which I stored inside the file $HOME/.evernote_dev_token. When I run EVERNOTE_DEV_TOKEN=$(cat $HOME/.evernote_dev_token) geeknote notebook-list, I don't get any output. I wonder if I need to login again.

@jeffkowalski
Copy link
Owner

I'm not sure what's going on, @pierrefrancois
You may want to examine the process in the debugger and see what's going on at https://github.com/jeffkowalski/geeknote/blob/master/geeknote/oauth.py#L175 where the environment variable is used. Hope this helps you get started.

@iafan
Copy link

iafan commented Apr 4, 2018

When setting the EVERNOTE_DEV_TOKEN env variable, I'd recommend enclosing the token in double quotes. Also, you need to export this variable so that it will be visible in the child process. A simplest way to test if the environment variable works is to create a wrapper shell script, like that:

#!/bin/sh
export EVERNOTE_DEV_TOKEN="...your.dev.token.here..."
geeknote "$@"

Save it as e.g. gn, make it executable: chmod +x gn and then run: ./gn notebook-list

@pierrefrancois
Copy link

I saw in the .py sources of geeknote that my version is an old one, without reference to the environment variable EVERNOTE_DEV_TOKEN. I will upgrade to the new version and see if this hack does the trick.

@ghostwheel
Copy link

ghostwheel commented Apr 5, 2018

I don't understand why Evernote recommends that geeknote use developer tokens, but when I talked to a rep to get a developer token, the reply was "We have disabled developer tokens for Geeknote at this time"
It could be that that rep didn't have the right info. Who would you contact for a developer token?

UPDATE: I did get a token now.

@aiguofer
Copy link

aiguofer commented Apr 5, 2018

@ghostwheel
Copy link

@aiguofer What I see there is "Update: the creation of developer tokens is temporarily disabled."
If I understand correctly, this has been since October, though some users see a different response on that page. And the recommendation was to contact support:
https://discussion.evernote.com/topic/108911-developer-token-are-not-supported-anymore/
I did, and now I got that reply, but the ticket is still in process, so I might get a token eventually. I just wanted to see if there is a better way to contact Evernote for this...

@iafan
Copy link

iafan commented Apr 5, 2018

@ghostwheel you did everything right, and it seems like a miscommunication on Evernote's side. I'll follow up with CS internally on that.

@jeffkowalski
Copy link
Owner

@pierrefrancois please ensure you're using version 2.0.13, the latest release of geeknote.
If you simply type geeknote with no arguments, you should see

Version: 2.0.13
Geeknote - a command line client for Evernote.
Use geeknote --help to read documentation.

@ghostwheel
Copy link

OK, I did get a token!

@iafan
Copy link

iafan commented Apr 5, 2018

In the future, if anyone expects a significant delay with getting access to developer token functionality, feel free to post your Zendesk ticket number here so that we can connect dots and be able to escalate your ticket through our customer support pipeline.

@pierrefrancois
Copy link

@jeffkowalski I installed a new version of geeknote from the git repository issuing git clone git://github.com/VitaliyRodnenko/geeknote.git but after installation, I get version 0.1 running. What did I wrong? How do I best install geeknote on Ubuntu for being sure to get at least version 2.0.13?

@jeffkowalski
Copy link
Owner

@pierrefrancois you need to clone my repo (this one we're in right now), not vitaliy's

@pierrefrancois
Copy link

pierrefrancois commented Apr 6, 2018

@jeffkowalski it works. Thanks.
The linuxbrew system didn't work right of the box on Ubuntu 17.10. So I compiled from the sources.
I had to enforce the use of python2 in a python3 environment.
The installation command needed to be prefixed by sudo: sudo pip2 install --upgrade . The documentation in the file README.md would gain to be more accurate on that point.

@Mladia
Copy link

Mladia commented Apr 17, 2018

Everything currently works, using developer tokes. Cloning this repository and installing with pip (following instructions from REAMDE).
I created a wrapper, which exports the EVERNOTE_DEV_TOKEN variable, exaclty like @iafan said and everything works so far.

@atwinkelman
Copy link

@Mladia How did you obtain a developer token? It seems that https://www.evernote.com/api/DeveloperToken.action is still "temporarily disabled". Did you obtain a developers token through the customer support ticket system?

@iafan
Copy link

iafan commented Apr 17, 2018

@atwinkelman if you see the 'temporary disabled' message, you need to open a customer support ticket to have this functionality enabled for you. We tried to identify and whitelist previous Geeknote users so that they wouldn't have to go through customer support, but we may have missed some.

@atwinkelman
Copy link

@iafan Thanks! I've opened up a support ticket yesterday but haven't heard back yet.

I have not used geeknote yet so I wouldn't be on the list. I'm coming over from nixnote2 since I'm having problems getting nixnote2 to run now. I'd like to take a copy of my notes to the field with no internet access.

@Mladia
Copy link

Mladia commented Apr 18, 2018

@atwinkelman I used this link https://www.evernote.com/api/DeveloperToken.action .

Thanks to @aiguofer from a post here.

@iafan
Copy link

iafan commented Apr 18, 2018

@atwinkelman if you can provide your support ticket number here, I can escalate it.

@atwinkelman
Copy link

atwinkelman commented Apr 18, 2018

@Mladia Thanks for the link.

@iafan I heard from the support team last night, so I should be set now. I set up a wrapper like you suggested and it works! Thanks for the help.

@Dieterbe
Copy link

Dieterbe commented Apr 29, 2018

I get the same "temporary disabled" message, however i'm not able to create a support ticket. Every time I go to support site it asks to login to create a ticket, so i hit login, which takes me to my notes, then if i go to the the support page again (whether via the help menu or in a new tab) it says i'm logged out again and must login again, and i get stuck in a cycle. Anyone else had this problem? how were you able to create a ticket?

UPDATE: somehow I got it working, zendesk #2492444
UPDATE2: got a token

xdgc added a commit to xdgc/geeknote that referenced this issue May 6, 2018
This is a reaction to jeffkowalski/geeknote jeffkowalski#89. Evernote has revoked
geeknote's API credentials, and for now at least it's necessary for each
user individually to use a personal developer token. It's only necessary
to provide it once, via environment, but that's still somewhat buried.

This update detects when the OAuth temporary token api call fails, and
prompts for a developer token. Once user has entered one, it's retained
in the client settings database and doesn't need to be provided again.
@saamkhya
Copy link

Can I login to the same account from different machines with the same developer token?

@pierrefrancois
Copy link

pierrefrancois commented Jun 27, 2018 via email

@dindom999
Copy link

does yinxiang.com work?

@iafan
Copy link

iafan commented Jun 28, 2018

@dindom999 you should be able to do export GEEKNOTE_BASE=yinxiang before running Geeknote for it to talk to app.yinxiang.com (see this code). The developer token must also be activated on app.yinxiang.com (tokens are not shared between two service instances).

@dindom999
Copy link

dindom999 commented Jun 28, 2018

Thinks @iafan ! I know export GEEKNOTE_BASE=yinxiang as I already did. What I mean is , I am not sure is there developer token for app.yinxiang.com , I found
temp disable when click in https://app.yinxiang.com/api/DeveloperToken.action .
I worry about yingxiang.com ignoring developer token.

@iafan
Copy link

iafan commented Jun 28, 2018

@dindom999 Developer tokens are disabled by default (for security reasons), but you can go to Yinxiang support and ask to unlock this functionality for you.

@dindom999
Copy link

It works! thanks @iafan

@WhyNotHugo
Copy link

Do each of us need to manually open a ticket to request that tokens be enabled?
That's really poor UX; what's up with that?

None of the support categories seem to fit this request either, so I kinda just picked something vaguely related. Can you pick up #2684290?

@jeffkowalski
Copy link
Owner

@WhyNotHugo, I'm not sure what you mean by "pick up #2684290"
Can you elaborate?

@iafan
Copy link

iafan commented Oct 12, 2018

@jeffkowalski that's likely the support ticket number at Evernote. @WhyNotHugo (and future visitors): if you opened the ticket to enable developer tokens, it will be processed; let's not hijack this issue as a support channel. You can also provide your feedback directly to Evernote Customer Support.

@iafan
Copy link

iafan commented Oct 12, 2018

@jeffkowalski it probably makes sense to also lock the conversation on this ticket since it provides enough information on the subject.

@alanyei alanyei mentioned this issue Oct 19, 2018
@biluncloud
Copy link

@iafan I've requested a ticket #2716322, could you please help to proceed?

@XayOn
Copy link

XayOn commented May 19, 2019

To open a request ticket it's required to have a paid account.
Does that mean geeknote can only be used from evernote paid accounts?

@jeffkowalski
Copy link
Owner

jeffkowalski commented May 19, 2019 via email

@iafan
Copy link

iafan commented May 20, 2019

@XayOn @jeffkowalski if one needs a token, create a new full-access API key from https://dev.evernote.com/ and then request its activation on production Evernote server. We will send you an instruction on how to exchange your personal API key for a personal auth token that you can use in Geeknote (just let us know in the activation request comment that you need this key for use in Geeknote).

@XayOn
Copy link

XayOn commented May 20, 2019

Thank you @iafan.
I'll give it a try.

@XayOn
Copy link

XayOn commented May 21, 2019 via email

@jeffkowalski
Copy link
Owner

I'd welcome a doc PR, @XayOn

@XayOn
Copy link

XayOn commented May 26, 2019 via email

@iafan
Copy link

iafan commented May 26, 2019

@XayOn if you're about your particular API key activation request, it was processed the same day (did you get an email?). API key requests are reviewed in batches, and usually it takes 1-2 days to process a request.

@XayOn
Copy link

XayOn commented May 27, 2019

@iafan ok, thanks.

I didn't receive any confirmation email nor instructions on how to get the personal auth token with it... 😕

@iafan
Copy link

iafan commented May 28, 2019

@XayOn I just re-sent the email. Please check your spam/trash folder.

@XayOn
Copy link

XayOn commented May 29, 2019

Sorry for the noise, I changed my mind several times on formatting.

@iafan Thanks a lot for your support, it worked nicely.
@jeffkowalski I added instructions to readme on #116

@komodikkio
Copy link

komodikkio commented Aug 5, 2019

Hi all.
I need some help to solve this, cause it's making me mad
I followed the token request path and i was able to generate it.
I'm trying now to login with the newly created access token but, when issuing "geeknote login" command i get this error:
EDAMSystemException(errorCode=8, rateLimitDuration=None, _message='authenticationToken')
I tryed both ways, manually exporting the EVERNOTE_DEV_TOKEN variable in the shell and also using the wrapper iafan suggested
I opened a support ticket (n° 2890110)
Could someone help me find my mistake?
Thanks in advance

EDIT:
Looks like my problem was caused by a previous failed login attempt wrote inside the db or in the geeknote app path
As adviced here I deleted the db file and doing so, i noticed there was a isyinxiang file inside the .geeknote folder
After deleting the db and the isyinxiang file, i was able to login successfully

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

16 participants