Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do not allow to reuse TOTP passcode #3878

Merged
merged 3 commits into from
May 2, 2018

Conversation

lafriks
Copy link
Member

@lafriks lafriks commented May 1, 2018

No description provided.

@lafriks lafriks added type/enhancement An improvement of existing functionality topic/security Something leaks user information or is otherwise vulnerable. Should be fixed! labels May 1, 2018
@lafriks lafriks added this to the 1.5.0 milestone May 1, 2018
@codecov-io
Copy link

codecov-io commented May 1, 2018

Codecov Report

Merging #3878 into master will decrease coverage by 0.01%.
The diff coverage is 0%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #3878      +/-   ##
==========================================
- Coverage   20.18%   20.16%   -0.02%     
==========================================
  Files         145      145              
  Lines       29151    29156       +5     
==========================================
- Hits         5883     5880       -3     
- Misses      22374    22381       +7     
- Partials      894      895       +1
Impacted Files Coverage Δ
models/twofactor.go 0% <ø> (ø) ⬆️
routers/user/auth.go 0% <0%> (ø) ⬆️
modules/process/manager.go 69.56% <0%> (-4.35%) ⬇️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update c58e1e4...a3bc0c2. Read the comment docs.

@bkcsoft bkcsoft added the lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. label May 1, 2018
@ghost
Copy link

ghost commented May 1, 2018

Thank you for taking care of the security issues reported, even those with lower priority like this one.

@techknowlogick
Copy link
Member

techknowlogick commented May 1, 2018

LGTM

edit: noticed a minor typo

@bkcsoft bkcsoft added lgtm/need 1 This PR needs approval from one additional maintainer to be merged. and removed lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. labels May 1, 2018
@@ -176,6 +176,8 @@ var migrations = []Migration{
NewMigration("add is_fsck_enabled column for repos", addFsckEnabledToRepo),
// v61 -> v62
NewMigration("add size column for attachments", addSizeToAttachment),
// v62 -> v63
NewMigration("add last used passcode column for TOPT", addLastUsedPasscodeTOPT),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Incorrect acronym, this should be TOTP (per: https://en.wikipedia.org/wiki/Time-based_One-time_Password_algorithm). There are other places in this PR that have the incorrect acronym.

Sorry for noticing this after my LG-TM, this should be an easy fix though.

Copy link
Member

@jonasfranz jonasfranz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM except the typo reported

@bkcsoft bkcsoft added lgtm/done This PR has enough approvals to get merged. There are no important open reservations anymore. and removed lgtm/need 1 This PR needs approval from one additional maintainer to be merged. labels May 2, 2018
@lafriks lafriks changed the title Do not allow to reuse TOPT passcode Do not allow to reuse TOTP passcode May 2, 2018
@lafriks
Copy link
Member Author

lafriks commented May 2, 2018

@techknowlogick fixed

@techknowlogick
Copy link
Member

thanks @lafriks, I've just approved.

Copy link
Member

@daviian daviian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we just store the hash of it instead of the plain passcode? Seems to be a more trustable approach to solve this.
My gut says this should be handled as sensitive information.

@lafriks
Copy link
Member Author

lafriks commented May 2, 2018

@daviian it is one time usage passcode. Hashing would not give much anyway as it could be easily bruteforced back to normal value (only six digits so that would take few seconds to get value back from hash), I don't think it would change much if anything

@daviian
Copy link
Member

daviian commented May 2, 2018

Don't want to block that PR ;)

But if it's that easy to bruteforce TOTP, why use it in the first place?

@techknowlogick
Copy link
Member

@daviian I think @lafriks means that it is easy to bruteforce a hash of 6 characters, so if an attacker has access to the DB a hash wouldn't really stop them from knowing what the token was. This is fine because tokens change every 30 seconds, and this is a protection just in case someone MITM a user to intercept the token so it can't be re-used.

@daviian
Copy link
Member

daviian commented May 2, 2018

@techknowlogick @lafriks You are totally right! 👍

@lafriks lafriks merged commit 1e1ece8 into go-gitea:master May 2, 2018
@lafriks lafriks deleted the fix/otp_reuse branch May 2, 2018 15:02
@lafriks
Copy link
Member Author

lafriks commented May 2, 2018

As this is more enchantment and it is hard to backport to 1.4 without breaking upgrade process, I will not backport it

@ghost
Copy link

ghost commented May 2, 2018

Personally I don't care too much, but may I ask why finders don't receive any credits? Indeed, it would be really appreciated...

@techknowlogick
Copy link
Member

@cezar97 I can't speak on behalf of the other maintainers, but I've asked for a thanks to be added to the blog post for the release notes. As only owners see the security reports I wasn't able to add the appropriate thanks to my PR for the release blog post.

@lafriks
Copy link
Member Author

lafriks commented May 3, 2018

@cezar97 finders will get credits in blog post

@lafriks lafriks added the type/changelog Adds the changelog for a new Gitea version label Jul 3, 2018
aswild added a commit to aswild/gitea that referenced this pull request Jul 6, 2018
* SECURITY
  * Limit uploaded avatar image-size to 4096x3072 by default (go-gitea#4353)
  * Do not allow to reuse TOTP passcode (go-gitea#3878)
* FEATURE
  * Add cli commands to regen hooks & keys (go-gitea#3979)
  * Add support for FIDO U2F (go-gitea#3971)
  * Added user language setting (go-gitea#3875)
  * LDAP Public SSH Keys synchronization (go-gitea#1844)
  * Add topic support (go-gitea#3711)
  * Multiple assignees (go-gitea#3705)
  * Add protected branch whitelists for merging (go-gitea#3689)
  * Global code search support (go-gitea#3664)
  * Add label descriptions (go-gitea#3662)
  * Add issue search via API (go-gitea#3612)
  * Add repository setting to enable/disable health checks (go-gitea#3607)
  * Emoji Autocomplete (go-gitea#3433)
  * Implements generator cli for secrets (go-gitea#3531)
* ENHANCEMENT
  * Add more webhooks support and refactor webhook templates directory (go-gitea#3929)
  * Add new option to allow only OAuth2/OpenID user registration (go-gitea#3910)
  * Add option to use paged LDAP search when synchronizing users (go-gitea#3895)
  * Symlink icons (go-gitea#1416)
  * Improve release page UI (go-gitea#3693)
  * Add admin dashboard option to run health checks (go-gitea#3606)
  * Add branch link in branch list (go-gitea#3576)
  * Reduce sql query times in retrieveFeeds (go-gitea#3547)
  * Option to enable or disable swagger endpoints (go-gitea#3502)
  * Add missing licenses (go-gitea#3497)
  * Reduce repo indexer disk usage (go-gitea#3452)
  * Enable caching on assets and avatars (go-gitea#3376)
  * Add repository search ordered by stars/forks. Forks column in admin repo list (go-gitea#3969)
  * Add Environment Variables to Docker template (go-gitea#4012)
  * LFS: make HTTP auth period configurable (go-gitea#4035)
  * Add config path as an optionial flag when changing pass via CLI (go-gitea#4184)
  * Refactor User Settings sections (go-gitea#3900)
  * Allow square brackets in external issue patterns (go-gitea#3408)
  * Add Attachment API (go-gitea#3478)
  * Add EnableTimetracking option to app settings (go-gitea#3719)
  * Add config option to enable or disable log executed SQL (go-gitea#3726)
  * Shows total tracked time in issue and milestone list (go-gitea#3341)
* TRANSLATION
  * Improve English grammar and consistency (go-gitea#3614)
* DEPLOYMENT
  * Allow Gitea to run as different USER in Docker (go-gitea#3961)
  * Provide compressed release binaries (go-gitea#3991)
  * Sign release binaries (go-gitea#4188)
@go-gitea go-gitea locked and limited conversation to collaborators Nov 24, 2020
@delvh delvh removed the type/changelog Adds the changelog for a new Gitea version label Oct 7, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
lgtm/done This PR has enough approvals to get merged. There are no important open reservations anymore. topic/security Something leaks user information or is otherwise vulnerable. Should be fixed! type/enhancement An improvement of existing functionality
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants