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

Already on GitHub? Sign in to your account

Deprecate all emacswiki packages. #2342

Open
milkypostman opened this Issue Jan 3, 2015 · 50 comments

Comments

Projects
None yet
Owner

milkypostman commented Jan 3, 2015

We should avoid all emacswiki packages in MELPA.

At this point we should also avoid adding further wiki packages.

Owner

purcell commented Jan 3, 2015

Amen.

Contributor

syl20bnr commented Jan 7, 2015

Will you provide somewhere the complete list of the future deprecated packages ?

Contributor

PythonNut commented Jan 10, 2015

Could deprecated packages be pulled from emacsmirror instead? I've talked to Drew Adams, and he wants to keep icicles on emacswiki.

Member

tarsius commented Jan 11, 2015 edited

Will you provide somewhere the complete list of the future deprecated packages ?

M-x rgrep RET :fetcher wiki RET

Could deprecated packages be pulled from emacsmirror instead?

For that see #2128.

I believe that while pretty much everyone around here actually involved in the mirroring and packaging of elisp thinks that the wiki no longer is a good place to distribute libraries, dropping support for it is seen more as a long time goal. Just doing it now is also an option, but I don't think the hope that this would cause the remaining libraries to be migrated to some vcs repository sooner, is really justified.

I've talked to Drew Adams, and he wants to keep icicles on emacswiki.

We've all been there.

dunn added a commit to dunn/melpa that referenced this issue Dec 26, 2015

dunn added a commit to dunn/melpa that referenced this issue Dec 26, 2015

jeffgran added a commit to jeffgran/melpa that referenced this issue Jan 5, 2016

glyph commented Feb 10, 2016

Apropos of the last commit referenced above, it looks like the deprecation is already done - is this issue just waiting for the last existing emacswiki recipe to actually be deleted?

@tarsius tarsius self-assigned this Mar 12, 2017

Member

tarsius commented Mar 12, 2017

I've assigned this to myself as a way to keep track of it. This does not necessarily mean I will do something.

@tarsius tarsius added policy and removed feature recipes labels Mar 12, 2017

Member

tarsius commented Apr 5, 2017 edited

This has come up on reddit again. That doesn't really change anything, but somehow it pushed me closer to advocating a clear cut.

Ultimately this is up to @purcell and @milkypostman. Also I think that even if you decide to drop support for the Emacswiki, we shouldn't rush anything. (But we shouldn't let it sit for another two years either.)

I'm going to produce some data on which non-wiki packages would be affected by this. Might take me a while until I get to that though, because I want to address some related issues in epkg and the Emacsmirror first (since there I am the maintainer, not just a somewhat regular contributor).

Owner

milkypostman commented Apr 5, 2017

I think I posted before I want to remove all emacswiki packages because of this exact threat. When I do need a package from emacswiki I manually download it, I don't use melpa because I am concerned about this.

I'm happy to have them removed. It seems that now is indeed the time. The percentage of emacswiki packages is low. If we remove them and people complain, I'm sure we can work it out. I.e., have someone move the package to github or other dvcs.

Contributor

alphapapa commented Apr 5, 2017 edited

I'm not sure that I even have any wiki-sourced packages installed, because the very idea repulses me. ;) But as a member of the community, I would appreciate them being removed for the good of all of us. I definitely think we should be proactive rather than waiting for something bad to happen. Let's just bite the bullet, and anyone who really needs wiki-sourced packages can 1) keep using what they have installed, or 2) install them manually. I really don't want MELPA to be the subject of an LWN security article someday...

Member

tarsius commented Apr 5, 2017 edited

Here's a first table listing wiki packages that non-wiki packages depend on. It does not include any indirect dependers and it is based on automatically extracted dependency information, not the Package-Requires header.

| Dependee (27)    | Author                 | Depender                      | Fetcher | Author                  |
|------------------+------------------------+-------------------------------+---------+-------------------------|
| dirtree          | Ye Wenbin              | prosjekt                      | github  | Austin Bingham          |
| ert-expectations | rubikitch              | caskxy                        | github  | Hiroaki Otsu            |
| ert-expectations | rubikitch              | coverage                      | github  | Kieran Trezona-le Comte |
| ert-expectations | rubikitch              | creds                         | github  | Antoine R. Dumont       |
| ert-expectations | rubikitch              | req-package                   | github  | Edward Knyshov          |
| faces+           | Drew Adams             | floobits                      | github  | Geoff Greer             |
| filesets+        | Drew Adams             | helm-filesets                 | github  | Graham Clark            |
| findr            | David Bakhash          | jump                          | github  | Eric Schulte            |
| fit-frame        | Drew Adams             | anything-project              | github  |                         |
| font-lock+       | Drew Adams             | all-the-icons                 | github  | Dominic Charlesworth    |
| frame-fns        | Drew Adams             | floobits                      | github  | Geoff Greer             |
| hexrgb           | Drew Adams             | jabber                        | git     |                         |
| hexrgb           | Drew Adams             | on-screen                     | github  | Michael Heerdegen       |
| hexrgb           | Drew Adams             | paper-theme                   | github  | Göktuğ Kayaalp          |
| hide-lines       |                        | syslog-mode                   | github  | Harley Gorrell          |
| highlight        | Drew Adams             | cider-eval-sexp-fu            | github  | Sylvain Benner          |
| highlight        | Drew Adams             | eval-sexp-fu                  | github  | Takeshi Banse           |
| highlight        | Drew Adams             | evil-extra-operator           | github  | Dewdrops                |
| highlight        | Drew Adams             | evil-search-highlight-persist | github  | Juanjo Alvarez          |
| highlight        | Drew Adams             | nrepl-eval-sexp-fu            | github  | Takeshi Banse           |
| highlight        | Drew Adams             | php-boris-minor-mode          | github  | steckerhalter           |
| highlight        | Drew Adams             | sonic-pi                      | github  | Joseph Wilk             |
| http-post-simple | Tom Schutzer-Weissmann | org-readme                    | github  | Matthew L. Fidler       |
| http-post-simple | Tom Schutzer-Weissmann | tumble                        | github  | Federico Builes         |
| key-chord        |                        | buffer-flip                   | github  | Russell Black           |
| key-chord        |                        | use-package-chords            | github  | justin talbott          |
| lacarte          | Drew Adams             | helm                          | github  | Thierry Volpiatto       |
| levenshtein      | Aaron S. Hawley        | cmake-ide                     | github  | Atila Neves             |
| levenshtein      | Aaron S. Hawley        | ten-hundred-mode              | github  |                         |
| look-mode        |                        | look-dired                    | github  | Joe Bloggs              |
| menu-bar+        | Drew Adams             | floobits                      | github  | Geoff Greer             |
| multi-term       | Andy Stewart           | elscreen-multi-term           | github  | wamei                   |
| multi-term       | Andy Stewart           | helm-mt                       | github  | Didier Deshommes        |
| multi-term       | Andy Stewart           | navorski                      | github  |                         |
| shell-command    | TSUCHIYA Masatoshi     | anything                      | git     | Tamas Patrovics         |
| shell-history    | rubikitch              | anything                      | git     | Tamas Patrovics         |
| showtip          | Ye Wenbin              | sdcv                          | github  | Andy Stewart            |
| sr-speedbar      | Sebastian Rose         | ppd-sr-speedbar               | github  | Robert Dallas Gray      |
| sr-speedbar      | Sebastian Rose         | projectile-speedbar           | github  | Anshul Verma            |
| strings          | Drew Adams             | ergoemacs-mode                | github  | David Capello           |
| thingatpt+       | Drew Adams             | el-spice                      | github  | Vedang Manerikar        |
| transpose-frame  | S. Irie                | nu-mode                       | github  |                         |
| w32-browser      | Emacs Wiki, Drew Adams | nsis-mode                     | github  | Matthew L. Fidler       |
| yaoddmuse        |                        | company                       | github  | Nikolaj Schumacher      |
| yaoddmuse        |                        | org-readme                    | github  | Matthew L. Fidler       |

Owner

milkypostman commented Apr 5, 2017

Contributor

alphapapa commented Apr 5, 2017

possibly we should mirror those packages. tarsius would have to say though.

I would strongly prefer that, especially if the mirrors were manually updated. I realize that's a chore, but I feel like leaving anything pulling from any kind of wiki is just a bad idea on principle, even if they say they have locked the pages in some way. What if the wiki were compromised someday? I guess the same could be said for any server being pulled from, even GitHub, but I still feel that wikis are generally not well engineered compared to other software and are just more risky.

(I realize I'm just a noisy back seat driver here, so I will watch silently if you're tired of my chiming in.)

Member

tarsius commented Apr 5, 2017 edited

I have added 15 of these packages to the Emacsorphanage, updated the Emacsmirror to mirror from there, and updated Melpa to import from there too.

For more information about the Emacsmirror and the Emacsorphanage see https://emacsmirror.org. For information about packages in the orphanage see https://emacsmirror.net/stats/emacsorphanage.html (but note that I have not updated that yet since adding these packages).

Most of these package did not see any changes in several years. A few were modified about a year ago by someone other than the author/maintainer.

If some edits one of these packages on the Emacswiki going forward, then Melpa and the Emacsmirror won't pick up those changes - but that's kind of the point. If someone (including the person who previously maintained it (to some extend) on the Emacswiki) would like to maintain one of these packages, then they should contact me.

These repositories contain the full history though in most cases with bad commit messages.

Someone(tm) should review these packages for security risks they may already contain.

Contributor

alphapapa commented Apr 5, 2017

Thank you for doing that, Jonas!

Member

tarsius commented Apr 5, 2017 edited

Did the same for three more packages. Here is an updated table:

| Dependee (12) | Author     | Depender                      | Fetcher | Author               |
|---------------+------------+-------------------------------+---------+----------------------|
| faces+        | Drew Adams | floobits                      | github  | Geoff Greer          |
| filesets+     | Drew Adams | helm-filesets                 | github  | Graham Clark         |
| fit-frame     | Drew Adams | anything-project              | github  |                      |
| font-lock+    | Drew Adams | all-the-icons                 | github  | Dominic Charlesworth |
| frame-fns     | Drew Adams | floobits                      | github  | Geoff Greer          |
| hexrgb        | Drew Adams | jabber                        | git     |                      |
| hexrgb        | Drew Adams | on-screen                     | github  | Michael Heerdegen    |
| hexrgb        | Drew Adams | paper-theme                   | github  | Göktuğ Kayaalp       |
| highlight     | Drew Adams | cider-eval-sexp-fu            | github  | Sylvain Benner       |
| highlight     | Drew Adams | eval-sexp-fu                  | github  | Takeshi Banse        |
| highlight     | Drew Adams | evil-extra-operator           | github  | Dewdrops             |
| highlight     | Drew Adams | evil-search-highlight-persist | github  | Juanjo Alvarez       |
| highlight     | Drew Adams | nrepl-eval-sexp-fu            | github  | Takeshi Banse        |
| highlight     | Drew Adams | php-boris-minor-mode          | github  | steckerhalter        |
| highlight     | Drew Adams | sonic-pi                      | github  | Joseph Wilk          |
| lacarte       | Drew Adams | helm                          | github  | Thierry Volpiatto    |
| menu-bar+     | Drew Adams | floobits                      | github  | Geoff Greer          |
| strings       | Drew Adams | ergoemacs-mode                | github  | David Capello        |
| thingatpt+    | Drew Adams | el-spice                      | github  | Vedang Manerikar     |
| yaoddmuse     |            | company                       | github  | Nikolaj Schumacher   |
| yaoddmuse     |            | org-readme                    | github  | Matthew L. Fidler    |
Member

tarsius commented Apr 5, 2017 edited

And here is a table of all packages from the wiki, sorted by author.

| Author (44)                   | Package                 |
|-------------------------------+-------------------------|
|                               | ac-dabbrev              |
|                               | aok                     |
|                               | batch-mode              |
|                               | better-registers        |
|                               | csv-nav                 |
|                               | dropdown-list           |
|                               | eldoc-extension         |
|                               | fuzzy-format            |
|                               | fuzzy-match             |
|                               | goto-chg                |
|                               | jira                    |
|                               | list-processes+         |
|                               | point-undo              |
|                               | redo+                   |
|                               | sqlplus                 |
|                               | summarye                |
|                               | wimpy-del               |
|                               | yaoddmuse               |
| Adrian Kubala                 | buffer-stack            |
| Alex Schroeder                | disk                    |
| Alex Schroeder                | typing                  |
| André Riemann                 | centered-cursor-mode    |
| André Riemann                 | fliptext                |
| Andy Stewart                  | auto-install            |
| Andy Stewart                  | chm-view                |
| Andy Stewart                  | dired-sort              |
| Andy Stewart                  | irfc                    |
| Arni Magnusson                | dos                     |
| Benjamin Rutt                 | backup-each-save        |
| Benjamin Rutt                 | top-mode                |
| Binu Jose Philip, Drew Adams  | w32browser-dlgopen      |
| Chris Stucchio                | multi-eshell            |
| Christoph Conrad              | highlight-current-line  |
| Davis Herring                 | unbound                 |
| Dino Chiesa                   | rfringe                 |
| Dino Chiesa                   | tfs                     |
| Dino Chiesa, Alex Henning     | thesaurus               |
| Drew Adams                    | apropos-fn+var          |
| Drew Adams                    | apu                     |
| Drew Adams                    | autofit-frame           |
| Drew Adams                    | browse-kill-ring+       |
| Drew Adams                    | cmds-menu               |
| Drew Adams                    | col-highlight           |
| Drew Adams                    | crosshairs              |
| Drew Adams                    | cursor-chg              |
| Drew Adams                    | cus-edit+               |
| Drew Adams                    | dired+                  |
| Drew Adams                    | dired-details+          |
| Drew Adams                    | dired-sort-menu+        |
| Drew Adams                    | doremi                  |
| Drew Adams                    | doremi-cmd              |
| Drew Adams                    | doremi-frm              |
| Drew Adams                    | doremi-mac              |
| Drew Adams                    | eyedropper              |
| Drew Adams                    | face-remap+             |
| Drew Adams                    | facemenu+               |
| Drew Adams                    | faces+                  |
| Drew Adams                    | files+                  |
| Drew Adams                    | filesets+               |
| Drew Adams                    | find-dired+             |
| Drew Adams                    | finder+                 |
| Drew Adams                    | fit-frame               |
| Drew Adams                    | font-lock+              |
| Drew Adams                    | frame-cmds              |
| Drew Adams                    | frame-fns               |
| Drew Adams                    | grep+                   |
| Drew Adams                    | header2                 |
| Drew Adams                    | help+                   |
| Drew Adams                    | help-fns+               |
| Drew Adams                    | help-mode+              |
| Drew Adams                    | hexrgb                  |
| Drew Adams                    | hide-comnt              |
| Drew Adams                    | highlight               |
| Drew Adams                    | highlight-chars         |
| Drew Adams                    | hl-defined              |
| Drew Adams                    | hl-line+                |
| Drew Adams                    | hl-spotlight            |
| Drew Adams                    | icicles                 |
| Drew Adams                    | icomplete+              |
| Drew Adams                    | imenu+                  |
| Drew Adams                    | info+                   |
| Drew Adams                    | isearch+                |
| Drew Adams                    | isearch-prop            |
| Drew Adams                    | lacarte                 |
| Drew Adams                    | lib-requires            |
| Drew Adams                    | macros+                 |
| Drew Adams                    | mb-depth+               |
| Drew Adams                    | menu-bar+               |
| Drew Adams                    | misc-cmds               |
| Drew Adams                    | misc-fns                |
| Drew Adams                    | modeline-char           |
| Drew Adams                    | modeline-posn           |
| Drew Adams                    | mouse+                  |
| Drew Adams                    | mouse3                  |
| Drew Adams                    | naked                   |
| Drew Adams                    | narrow-indirect         |
| Drew Adams                    | novice+                 |
| Drew Adams                    | oneonone                |
| Drew Adams                    | palette                 |
| Drew Adams                    | pp+                     |
| Drew Adams                    | pp-c-l                  |
| Drew Adams                    | pretty-lambdada         |
| Drew Adams                    | replace+                |
| Drew Adams                    | reveal-next             |
| Drew Adams                    | second-sel              |
| Drew Adams                    | showkey                 |
| Drew Adams                    | simple+                 |
| Drew Adams                    | strings                 |
| Drew Adams                    | subr+                   |
| Drew Adams                    | synonyms                |
| Drew Adams                    | thing-cmds              |
| Drew Adams                    | thingatpt+              |
| Drew Adams                    | thumb-frm               |
| Drew Adams                    | tool-bar+               |
| Drew Adams                    | ucs-cmds                |
| Drew Adams                    | window+                 |
| Drew Adams                    | zones                   |
| Drew Adams                    | zoom-frm                |
| Drew Adams, Lennart Borgman   | wid-edit+               |
| Drew Adams, Thierry Volpiatto | bookmark+               |
| Francis J. Wright             | dired-sort-menu         |
| Igor Sikaček                  | awk-it                  |
| Jan Rehders                   | hideshowvis             |
| Joe Bloggs                    | bs-ext                  |
| Jonathan Arkell               | todochiku               |
| Kahlil (Kal) HODGSON          | plsql                   |
| Kahlil (Kal) HODGSON          | swbuff-x                |
| Kahlil (Kal) HODGSON          | tidy                    |
| Kai Grossjohann               | message-x               |
| Karl Chen                     | apache-mode             |
| Kevin Rodgers                 | auto-capitalize         |
| Kevin Rodgers                 | igrep                   |
| Kumar Appaiah                 | muttrc-mode             |
| Martin Rudalics               | speck                   |
| Mathias Dahl                  | hide-region             |
| Michael Cook                  | cygwin-mount            |
| Miles Bader                   | echo-bell               |
| Rafal Jedruszek               | highlight-tail          |
| Rick Bielawski                | anchored-transpose      |
| Rick Bielawski                | column-marker           |
| Rob Giardina                  | dired-details           |
| Ryan Davis and Phil Hagelberg | project-local-variables |
| Scott Frazer                  | etags-select            |
| Scott Frazer                  | etags-table             |
| Seiji Zenitani                | smart-compile           |
| Simon Belak                   | sentence-highlight      |
| Taiki SUGAWARA                | highlight-cl            |
| Taiki SUGAWARA                | vline                   |
| Takeshi Banse                 | el-swank-fuzzy          |
| Trey Jackson                  | framemove               |
| Vinicius Jose Latorre         | ascii                   |
| Vinicius Jose Latorre         | blank-mode              |
| Yoshida Masato                | gnus-spotlight          |
| khiker                        | ruby-block              |
| rubikitch                     | lispxmp                 |
| rubikitch                     | minor-mode-hack         |
| rubikitch                     | recentf-ext             |
| rubikitch                     | screenshot              |
| rubikitch                     | sequential-command      |
| rubikitch                     | sticky                  |
| rubikitch                     | usage-memo              |
Member

tarsius commented Apr 5, 2017 edited

I have searched github for authors listed in the above table (click on the arrow to see it).

Please consider moving your package(s) listed in the above table from the Emacswiki to Github.

The reason we are asking you do this, is that anyone can edit your package(s) on the Emacswiki and that poses a security risk. For more information about that read this thread and https://www.reddit.com/r/emacs/comments/63e8hu/are_emacs_package_repositories_a_security_risk/.

All you have to do is go to https://github.com/emacsmirror/<YOUR-PACKAGE> and click on Fork and then drop a note here. This will preserve the history of your package. Please state whether you are okay with me replacing the file on the wiki.

I will take care of the rest. (Of course you will then have to push to that repository when you improve your package.)

Please do this even if you consider your package to be obsolete/unmainted/... Someone liked it enough to have it added to Melpa. That doesn't necessarily mean that it should be kept in Melpa, so please add a comment here in case you think we should remove it.

If you just happen to have the same name as the author of one of these packages, then please excuse the noise.

I have not contacted Andy Stewart, Alex Henning, Joe Bloggs, Karl Chen, Kevin Rodgers, Michael Cook, Ryan Davis, Scott Frazer, or Trey Jackson, because each of these names is shared by more than one person who has an account on github.

Member

tarsius commented Apr 5, 2017

@milkypostman I don't use melpa because I am concerned about this [security thread].

So out of the about four people who have made and are still making considerable contributions to Melpa, two don't actually use it. (I am the other one for the reasons given here).

I hope that users who are concerned about "Melpa doing it wrong", realize how much work we are already putting into this even without performing security best practices. In some cases even without directly benefiting from that work ourselves.

Not saying we shouldn't improve that, just that progress might be slower than the "severity of the issue" might warrant in the eye of those who don't actually do the work.

Owner

milkypostman commented Apr 5, 2017

Member

tarsius commented Apr 5, 2017

That last sentence sounds a bit ambiguous in my ears too. Do you use submodules for packages that you don't install using Melpa? (If so, then I recommend that you give my borg package manager a try.)

Owner

milkypostman commented Apr 5, 2017

Owner

purcell commented Apr 6, 2017 edited

The current situation is crappy, and I'm all in favour of fixing it aggressively by eliminating the emacswiki packages and letting the community pick up the pieces.

But an alternate angle would be to ask the Emacswiki maintainers to lock all source code to specific users. Then the situation would arguably be no worse for Emacswiki packages than for arbitrary github packages. (Similarly, we could ask that the emacswiki send an http response header or other indication that a retrieved source file is locked, and then we would only build packages that are thus flagged.)

Also, while I absolutely support addressing this specific issue, I feel like it is only a small part of eliminating the "malicious package" security threat faced by Emacs users: we just don't have good security oversight or practices in our community right now, and without them no user is going to get any useful degree of assurance about the safety of their Emacs packages without manually inspecting every new package before they install it.

glyph commented Apr 6, 2017

But an alternate angle would be to ask the Emacswiki maintainers to lock all source code to specific users. Then the situation would arguably be no worse for Emacswiki packages than for arbitrary github packages. (Similarly, we could ask that the emacswiki send an http response header or other indication that a retrieved source file is locked, and then only agree to build packages that are thus flagged.)

This seems like a pretty good step to take to me.

The major issue here, the one that really unambiguously needs to be addressed, is the fact that there are places in the pipeline where an attacker can just jump in without even executing an attack; they can just use emacswiki as designed, and it'll happily inject their exploits into legit downloads. It's OK to be relatively lax, and to let users trust a potentially nebulous and arbitrary group of maintainers; it's not OK to trust everyone in the world, because that's an opening big enough that any attacker can drive right in.

Forcing everything to be explicitly authenticated to some specific, authorized set of people (who can of course explicitly authorize others!) is a reduction of attack surface from 7.49 billion potential attackers to the much smaller set of infosec-sophisticated people who can execute targeted attacks against individuals. I don't know exactly what that number is, but I would be comfortable guessing it's at least 4 orders of magnitude smaller.

Owner

purcell commented Apr 6, 2017

I think we're all in violent agreement. Who would like to pick up my above suggestion with Alex Schroeder, who no longer appears to be on github? We'd need to first establish that source-file editor locking is indeed implemented on emacswiki, and then request either pervasive locking or a lock-indicator HTTP response header. (For the curious, Emacswiki appears to use Oddmuse with a published config which it might be sufficient to patch lightly for our purposes here.)

Owner

purcell commented Apr 6, 2017

Thanks @belak, I've applied that change to our recipe.

Owner

purcell commented Apr 6, 2017

Doh, sorry - I was mis-spelling your github name!

Agree that signatures and web of trust are the way to go. Signed package have been something we've wanted to move towards for ages (see ongoing discussion at #1749), so I sense an opening here to start moving ahead on that.

Could we do the header thing soon, to help address the immediate issue, and continue discussion of signatures in parallel?

Hi, I'm the author of dos-mode
https://emacswiki.org/emacs/DosMode
https://emacswiki.org/emacs/dos.el
https://github.com/emacsmirror/dos
In 2014, it was renamed to bat-mode and incorporated into Emacs core (version 24.4)
http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/progmodes/bat-mode.el

Therefore, the old dos-mode is obsolete and has no value. Instead of forking it, I suggest removing its source code from EmacsWiki (and GitHub). I just emptied the obsolete code from https://emacswiki.org/emacs/dos.el. Can we remove the dos.el page altogether?

Of slightly more value is a summary page comparing Dos-related packages
https://emacswiki.org/emacs/DosScripts
I just edited that page to add a link to the bat-mode source on the Savannah repo.

Owner

purcell commented Apr 7, 2017

Sure. Do you want to suggest a header?

@kensanata How about X-EmacsWiki-Protected: username, added for locked packages only?

Owner

purcell commented Apr 7, 2017

Aha, okay - so anybody can edit a locked page, even a source code page, as long as they are logged in? How does a page become locked, and what does that mean for its editability later?

Contributor

alphapapa commented Apr 7, 2017 edited

Just a note: if the wiki-locking thing works, it will be necessary to ensure that the TLS connection to the wiki is valid, because if an attacker were able to force the connection to plain HTTP, he could manipulate the headers. These kinds of "downgrade attacks" have been common, and since so much SSL/TLS software that's still in the wild fails to validate certificates and protect against downgrading (e.g. Emacs 24, recent versions of Python), I would say that anything which relies entirely on TLS is not to be entirely trusted. SSL/TLS is so complicated and so easy to get wrong that software often does, and that typically leaves software further up the stack completely oblivious to the broken security.

Contributor

alphapapa commented Apr 7, 2017

I appreciate Alex's candor. I don't think we should rely on locked wiki pages. :(

tarsius added a commit to emacsmirror/epkgs that referenced this issue Apr 9, 2017

remove 1 package
`dos' was renamed to `bat-mode' and incorporated into Emacs.
melpa/melpa#2342 (comment)

pkkm commented Jun 9, 2017

Is there an easy way to make package.el refuse to install packages from the wiki? I think it would be a good solution for the security-conscious until the issue is resolved.

Owner

milkypostman commented Jun 11, 2017

@pkkm This used to work; https://github.com/milkypostman/dotemacs/blob/master/init.el#L19

I don't think that works anymore, but I do believe you could do the same approach but just look at the detailed description instead of the name. I haven't played with that for a while.

pkkm commented Jun 17, 2017

I haven't had success with looking at the package description. Looking at the homepage works, but it's not reliable (some packages, e.g. goto-chg, don't set the homepage to their wiki page). Here's the code:

(defadvice package--add-to-archive-contents
    (around ignore-wiki-packages (package archive) activate)
  (let* ((package-extra-info (package--ac-desc-extras (cdr package)))
         (package-homepage (cdr (assoc :url package-extra-info))))
    (unless (and package-homepage
                 (string-match-p
                  (rx "http" (? "s") "://" (? "www.") "emacswiki.org/" (+ anything) ".el")
                  package-homepage))
      ad-do-it)))

Would it be hard to make MELPA add the fetcher to package metadata?

Contributor

jonnay commented Jun 22, 2017

Eeehhhh....

You can just kill todochiku. It's many years old. If there is a complaint, I'll fire it on a github.

Member

tarsius commented Jun 23, 2017

@jonnay I interpret that as "it's obsolete". So in accordance with #4384 (comment) I am removing todochiku.

tarsius added a commit that referenced this issue Jun 23, 2017

Owner

purcell commented Jun 25, 2017

@jonnay I interpret that as "it's obsolete". So in accordance with #4384 (comment) I am removing todochiku.

+1, thanks.

microamp added a commit to microamp/melpa that referenced this issue Jul 24, 2017

microamp added a commit to microamp/melpa that referenced this issue Jul 24, 2017

microamp added a commit to microamp/melpa that referenced this issue Jul 24, 2017

microamp added a commit to microamp/melpa that referenced this issue Jul 24, 2017

Owner

milkypostman commented Aug 19, 2017

Contributor

alphapapa commented Aug 20, 2017

@snogglethorpe Size isn't relevant, because anyone can edit the code on Emacswiki and replace it with anything. A one-line defsubst on Emacswiki that is automatically packaged and made available could be replaced with a multi-line function that does anything to the user's computer, and it could be automatically packaged and then installed by unsuspecting users before anyone notices, and they would be exploited.

The issue isn't size but access control and verification.

Contributor

raxod502 commented Aug 20, 2017

@snogglethorpe EmacsWiki is fine as a place for random snippets that people paste into their init-files. However, it is completely unacceptable as an upstream source for a package manager.

I believe that you are concerned about the loss of the EmacsWiki environment as a place to put snippets, which is not something that would happen if we stopped people putting packages on EmacsWiki.

@tarsius tarsius removed their assignment Sep 5, 2017

@tarsius tarsius referenced this issue Sep 15, 2017

Open

Remove all Emacswiki packages #5008

1 of 4 tasks complete
Member

tarsius commented Sep 25, 2017

@kensanata you probably overlooked this above because you were primarily invited to this discussion as the maintainer of the Emacswiki, but two of your own packages are still being imported from the wiki.

  • disk
  • typing

Assuming these should remain available, could you please move them to separate repositories on github?

Thanks!

@tarsius tarsius added the emacswiki label Oct 2, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment