549 karma · joined December 9, 2014
ltrace - same as above, if strace is not enough
perf trace - if you don't know the exact process to strace upfront
https://github.com/brendangregg/perf-tools - to track disk accesses or exec calls
env LD_DEBUG=all - debugging dynamic linker issues
Also, Haskell definitely has a standard package system: Hackage. (Stackage is just a "view"/subset of Hackage)
Or just use RefCell, deferring the borrow checking until runtime.
Another strategy could be to give every node an explicit ID, and then have a mapping ID -> node. Every else you just refer to the nodes by their IDs.
Even then, the software is provably correct according to some specification, which can still have bugs. No technology can fully prevent logic bugs.
For example, consider if every package that contained bash scripts would put bash in `propagatedBuildInputs`. Then I could not use a different version of bash for my user environment than those packages I installed used!
Also, `propagatedBuildInputs` are not even propagated into the user environment, the attribute that does that is `propagatedUserEnvPkgs` (not sure if that name is fully correct), and it is very sparingly used within nixpkgs.
Git protects against:
* Arbitrary installation attacks. (Because metadata is signed)
* Extraneous dependencies attacks. (Because metadata is signed)
* Mix-and-match attacks. (Because a git commit hash depends on its parents)
* Rollback attacks, assuming you make sure you only fast-forward when pulling.
* Wrong software installation.
It does not protect against: * Indefinite freeze attacks. The attacker could
just replay the same signed git repository for a long time.
* Vulnerability to key compromises. (Everyone can sign any commit, no separation)
It also has no built-in support for mirrors, and you cannot delegate trust to sub-maintainers easily, since any person who can sign a commit may potentially modify every file in the repo.So I don't see how `git` is a valid solutions to the problems that TUF wants to solve.
A problem with this particular approach is that chrome-trusted for example will no longer have access to the session's DBus, so it cannot show any notifications for example. And DBus, like X11, does not provide any separation right now as far as I'm aware (it has support for authentication, but in practice, `external` is used most of the time which is based on UID).
The only variant that might provide a real security benefit here is the -paranoid one, as that those not share the X11 server session.
Possible explainations:
* Perhaps many of those are automated build systems, which would also explain the high number of systems with admin access (for example, if you use travis without docker, every build runs in a clean vm with admin access).
* People download one package and install it multiple times? Seems unlikely
Any other ideas?