{"id":1050,"date":"2016-07-05T19:54:03","date_gmt":"2016-07-05T19:54:03","guid":{"rendered":"http:\/\/richardabbott.datascenesdev.com\/blog\/?p=1050"},"modified":"2016-07-05T19:54:03","modified_gmt":"2016-07-05T19:54:03","slug":"hacking-qa-and-software-bugs","status":"publish","type":"post","link":"http:\/\/richardabbott.datascenesdev.com\/blog\/index.php\/2016\/07\/05\/hacking-qa-and-software-bugs\/","title":{"rendered":"Hacking, QA, and software bugs"},"content":{"rendered":"<figure style=\"width: 220px\" class=\"wp-caption alignright\"><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/en\/thumb\/e\/e8\/Swordfish_movie.jpg\/220px-Swordfish_movie.jpg\" alt=\"Swordfish film - Wiki\" width=\"220\" height=\"327\" \/><figcaption class=\"wp-caption-text\">Swordfish film &#8211; Wiki<\/figcaption><\/figure>\n<p dir=\"ltr\">A few weeks ago I wrote about <a href=\"http:\/\/richardabbott.datascenesdev.com\/blog\/index.php\/2016\/05\/24\/coding-past-present-and-future\/\">software development and hacking<\/a>, and this is a loose follow-up. The image of hackers presented in films &#8211; Swordfish is a fair example, or GoldenEye &#8211; is of rather scruffy individuals who type incredibly quickly with keyboard at arms length, undeterred by all kinds of enticing distractions around them.<\/p>\n<p dir=\"ltr\">But most often, a successful hack is the result of careful analysis into some existing code, and a good dollop of insight into what kinds of precautions developers forget to take. In that, it shares a great deal in common with my own trade of QA. Effective software testing is not really about repeating hundreds of test cases which regularly pass &#8211; there are automated ways of dong those &#8211; it&#8217;s about finding the odd situations where proper execution fails. This might be because some developer has copied and pasted the wrong code, but it&#8217;s much more often because some rare but important set of circumstances was overlooked.<\/p>\n<figure style=\"width: 220px\" class=\"wp-caption alignright\"><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/8\/8c\/Cheval_de_Troie_d%27apr%C3%A8s_le_Virgile_du_Vatican.jpg\/220px-Cheval_de_Troie_d%27apr%C3%A8s_le_Virgile_du_Vatican.jpg\" alt=\"Trojan horse illustration (Wiki)\" width=\"220\" height=\"262\" \/><figcaption class=\"wp-caption-text\">Trojan horse illustration (Wiki)<\/figcaption><\/figure>\n<p dir=\"ltr\">Missing values, extra-long pieces of text, duplicate entries where only one was expected, dates in weird formats &#8211; all these and many more keep us QA folk in work. And\u00a0problems can creep in during the whole life of a product, not just at the start, Every time some change is carried out to a piece of software, there is the risk of breaking some existing behaviour, or introducing some new vulnerability which can be exploited by somebody.<\/p>\n<p dir=\"ltr\">It has been said that a great many of these things persist\u00a0through laziness. One particular hack exploit &#8211; &#8220;SQL injection&#8221; &#8211; has been around for something over\u00a015 years, in essentially unchanged form. You would think that by now, defences would be so automatic that it would no longer be an issue. But it is, and systems still fall prey to a relatively simple trick. I have worked with a lot of different computer languages, and find that pretty much the same problems\u00a0turn up in any of them. As computer languages get more sophisticated and\u00a0more robust, we expect them to do more interesting and more complicated things,<\/p>\n<figure style=\"width: 220px\" class=\"wp-caption alignright\"><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/3\/3c\/Data_breach_average_cost_germany.svg\/220px-Data_breach_average_cost_germany.svg.png\" alt=\"Estimated cost of data breaches in Germany (Wiki)\" width=\"220\" height=\"330\" \/><figcaption class=\"wp-caption-text\">Estimated cost of data breaches in Germany (Wiki)<\/figcaption><\/figure>\n<p dir=\"ltr\">QA and hacking are at different parts of\u00a0a spectrum, and a fair proportion of hackery goes on specifically to help firms and charities find weaknesses in their own systems. The legal distinction of when an activity crosses a line has to do with intention of malice, though a number of governments take a much stricter line where there own systems are concerned.<\/p>\n<p dir=\"ltr\">What has this to do with fiction? Well, Mitnash and Slate spend a lot of their time tracking down and defending against hacking in the\u00a0area of finance. Their added complication is that the physical locations\u00a0they travel to are scattered all around the solar system, with journey times of weeks or months, and signal times of hours. It is interesting to think about how hacking &#8211; and the defence against it &#8211; might evolve in such a situation.<\/p>\n<p dir=\"ltr\">In <em>Timing<\/em>, due for release in the late summer or early autumn, they are first sent to Jupiter to resolve a minor issue. It doesn&#8217;t seem very interesting or important to them. But then a much larger and more serious matter intrudes. To their dismay, the hackers &#8211; malicious ones in this case &#8211; have designed a new form of attack which our two heroes don&#8217;t really understand. They need help, and\u00a0aren&#8217;t very sure they can trust their new-found helper.<\/p>\n<p dir=\"ltr\">To finish with, I can&#8217;t resist adding one of NASA&#8217;s pieces of artwork concerning the Juno probe, now successfully in orbit around Jupiter. It&#8217;s a great achievement, and we can look forward to some great science emerging from it.<\/p>\n<figure style=\"width: 1041px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"http:\/\/www.nasa.gov\/sites\/default\/files\/styles\/ubernode_alt_horiz\/public\/thumbnails\/image\/juno_160701.jpg?itok=FoZmIVe9\" alt=\"Juno at Jupiter - NASA\/JPL\" width=\"1041\" height=\"320\" \/><figcaption class=\"wp-caption-text\">Juno at Jupiter &#8211; NASA\/JPL<\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>A few weeks ago I wrote about software development and hacking, and this is a loose follow-up. The image of hackers presented in films &#8211; Swordfish is a fair example, or GoldenEye &#8211; is of rather scruffy individuals who type incredibly quickly with keyboard at arms length, undeterred by all kinds of enticing distractions around &hellip; <a href=\"http:\/\/richardabbott.datascenesdev.com\/blog\/index.php\/2016\/07\/05\/hacking-qa-and-software-bugs\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Hacking, QA, and software bugs<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[41,21,43],"tags":[],"class_list":["post-1050","post","type-post","status-publish","format-standard","hentry","category-science","category-software","category-timing"],"_links":{"self":[{"href":"http:\/\/richardabbott.datascenesdev.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1050","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/richardabbott.datascenesdev.com\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/richardabbott.datascenesdev.com\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/richardabbott.datascenesdev.com\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/richardabbott.datascenesdev.com\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=1050"}],"version-history":[{"count":1,"href":"http:\/\/richardabbott.datascenesdev.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1050\/revisions"}],"predecessor-version":[{"id":1051,"href":"http:\/\/richardabbott.datascenesdev.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1050\/revisions\/1051"}],"wp:attachment":[{"href":"http:\/\/richardabbott.datascenesdev.com\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=1050"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/richardabbott.datascenesdev.com\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=1050"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/richardabbott.datascenesdev.com\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=1050"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}