Thanks Gabriel,
       this is another cool related work to add to the long list of
readings for who is interested in package management.

On Thu, Jun 09, 2016 at 10:57:05AM -0400, Gabriel Scherer wrote:
> Hi opam-devel,
> 
> Here is a rather cool bachelor thesis that seems relevant to OPAM repository
> management:
> 
>   Typosquatting in Programming Language Package Managers
>   Nikolai Philipp Tschacher, March 2016
>   http://incolumitas.com/2016/06/08/typosquatting-package-managers/
> 
> The described attack is to propose packages whose names are typo-close to very
> popular packages. Instead of "opam install omake" I run "opam install omaek",
> but "omaek" exists and is attacker-controlled, and its install script wreaks
> havoc on my machine.
> 
> This is interesting because it is a way to subvert a specific package that is
> immune to the common defenses against impersonation -- signing a package with
> its maintainers keys, etc. The author of the thesis suggests three defense
> methods:
> 
> 1. Make package installation sandboxed in such a way that just installing a
> package is harmless as long as its code is not linked and run. (Of course this
> code may be linked and run if a developer also makes a typo in its software.)
> 
> 2. Alert repository administrators when a typo-candidate is proposed for
> integration. (This is especially relevant for repositories with no human
> oversight on package addition, but even for OPAM one may consider that the
> maintainers themselves may be fooled by the typo or not think of the security
> consequences.)
> 
> 3. Keep a log of the non-existing packages that users commonly try to install
> (good candidates for typos) and alert administrators when a matching package 
> is
> proposed.
> 
> I'm sure that the systems expert in the room have plans for (1) already. I
> suspect that opam's architecture does not let us do (3), but I was interesting
> in quickly hacking (2) this morning -- I suppose I like typo-detection stuff.
> 
> My plan was: in `opam lint`, emit a warning if the linted package name is at
> edit distance 2 or less (but not 0) of an existing package in the repository.
> But this does not quite work; I quickly looked at the code and it seems that
> "opam lint" is meant to be run purely locally, it does not have access to a
> base of packages available in the repository.
> 
> So my question: where in the opam-repository QA process should I add a script
> (preferably written in OCaml rather than shell) that gets the name of the
> packages proposed for inclusion, also has access to the name of existing
> packages in the repository, and can fail or warn if the proposed one is
> typo-close to an existing one?
> 
> (This test can have false positives, eg. installing lablgtk2 when lablgtk
> exists. It should still fail in a visible way in the UI, but not in a way that
> prevent other, more advanced tests, such as package installability.)

> _______________________________________________
> opam-devel mailing list
> opam-devel@lists.ocaml.org
> http://lists.ocaml.org/listinfo/opam-devel


-- 
Roberto Di Cosmo
 
------------------------------------------------------------------
Professeur (on leave at/detache a INRIA Roquencourt)
IRIF                          E-mail : robe...@dicosmo.org
Universite Paris Diderot         Web : http://www.dicosmo.org
Case 7014                    Twitter : http://twitter.com/rdicosmo         
5, Rue Thomas Mann       
F-75205 Paris Cedex 13 France  
------------------------------------------------------------------
Office location:

Paris Diderot                       INRIA
 
Bureau 3020 (3rd floor)             Bureau C123
Batiment Sophie Germain             Batiment C
8 place Aurélie Nemours             2, Rue Simone Iff
Tel: +33 1 57 27 92 20              Tel: +33 1 80 49 44 42 

Metro
  Bibliotheque F. Mitterrand        Ligne 6: Dugommier
  ligne 14/RER C                    Ligne 14/RER A: Gare de Lyon
------------------------------------------------------------------              
                                   
GPG fingerprint 2931 20CE 3A5A 5390 98EC 8BFC FCCA C3BE 39CB 12D3               
         
_______________________________________________
opam-devel mailing list
opam-devel@lists.ocaml.org
http://lists.ocaml.org/listinfo/opam-devel

Reply via email to