{"action":"created","issue":{"url":"https://api.github.com/repos/fscheck/FsCheck/issues/152","labels_url":"https://api.github.com/repos/fscheck/FsCheck/issues/152/labels{/name}","comments_url":"https://api.github.com/repos/fscheck/FsCheck/issues/152/comments","events_url":"https://api.github.com/repos/fscheck/FsCheck/issues/152/events","html_url":"https://github.com/fscheck/FsCheck/issues/152","id":107299632,"number":152,"title":"FsCheck.dll assembly should be signed","user":{"login":"DmitryKakurin","id":14189429,"avatar_url":"https://avatars.githubusercontent.com/u/14189429?v=3","gravatar_id":"","url":"https://api.github.com/users/DmitryKakurin","html_url":"https://github.com/DmitryKakurin","followers_url":"https://api.github.com/users/DmitryKakurin/followers","following_url":"https://api.github.com/users/DmitryKakurin/following{/other_user}","gists_url":"https://api.github.com/users/DmitryKakurin/gists{/gist_id}","starred_url":"https://api.github.com/users/DmitryKakurin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DmitryKakurin/subscriptions","organizations_url":"https://api.github.com/users/DmitryKakurin/orgs","repos_url":"https://api.github.com/users/DmitryKakurin/repos","events_url":"https://api.github.com/users/DmitryKakurin/events{/privacy}","received_events_url":"https://api.github.com/users/DmitryKakurin/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":9,"created_at":"2015-09-19T00:38:46Z","updated_at":"2015-09-22T18:47:27Z","closed_at":"2015-09-19T17:22:09Z","body":"Here is why:\r\n1. My Production code must be signed\r\n2. My Production code uses [assembly: InternalsVisibleTo(MyUnitTest strong name)] to give unit test access to its internals.\r\n3. The name MyUnitTest specified to InternalsVisibleTo MUST be a strong name, so MyUnitTest must be signed too\r\n4. MyUnitTest cannot reference FsCheck.dll because FsCheck is not signed."},"comment":{"url":"https://api.github.com/repos/fscheck/FsCheck/issues/comments/142382757","html_url":"https://github.com/fscheck/FsCheck/issues/152#issuecomment-142382757","issue_url":"https://api.github.com/repos/fscheck/FsCheck/issues/152","id":142382757,"user":{"login":"jzabroski","id":447485,"avatar_url":"https://avatars.githubusercontent.com/u/447485?v=3","gravatar_id":"","url":"https://api.github.com/users/jzabroski","html_url":"https://github.com/jzabroski","followers_url":"https://api.github.com/users/jzabroski/followers","following_url":"https://api.github.com/users/jzabroski/following{/other_user}","gists_url":"https://api.github.com/users/jzabroski/gists{/gist_id}","starred_url":"https://api.github.com/users/jzabroski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jzabroski/subscriptions","organizations_url":"https://api.github.com/users/jzabroski/orgs","repos_url":"https://api.github.com/users/jzabroski/repos","events_url":"https://api.github.com/users/jzabroski/events{/privacy}","received_events_url":"https://api.github.com/users/jzabroski/received_events","type":"User","site_admin":false},"created_at":"2015-09-22T18:47:27Z","updated_at":"2015-09-22T18:47:27Z","body":"@DmitryKakurin The attack is a Confused Deputy attack, and would definitely require some \"trampoline\" function to execute, but it's doable.  All that needs to happen is have some code that loads your assembly and executes a static class constructor.  In the latest .NET, they have changed how some code is loaded, in particular, in mscorlib, it the behavior of GetInternalCustomAttributes was changed which would cause a property to be _touched_ if it had said attributes.  Boing - trampoline attack vector and confused deputy attack all-in-one.  Moreover, we can generalize this attack using static analysis to build \"weaponry\" on-the-fly by constructing \"gadgets\" that allow a property to be _touched_.\r\n\r\nBottom line: @kurtschelfthout  should never, ever give out his private key."}}