{"id":381,"date":"2022-06-04T10:25:52","date_gmt":"2022-06-04T16:25:52","guid":{"rendered":"http:\/\/brookschoenfield.com\/?p=381"},"modified":"2022-06-04T10:25:52","modified_gmt":"2022-06-04T16:25:52","slug":"all-logs-bad","status":"publish","type":"post","link":"https:\/\/brookschoenfield.com\/?p=381","title":{"rendered":"All Logs: Bad!"},"content":{"rendered":"<p>I heard a rather distressing story last night. A major tech company\u2019s security architects routinely demand requirements like this example:<\/p>\n<p>\u201cSend all logs to security\u201d<\/p>\n<p>This is so bad on so many levels.<\/p>\n<p>What does \u201call\u201d mean? <br \/>\u2014 Every debugging instrument in the code? That should slow performance down to a crawl. It might even log sensitive information and leave plenty of \u00a0clues about how to exploit the code (\u201cinformation disclosure\u201d).<br \/>\u2014 Every possible item in every log that the code makes?<br \/>&#8211; debugging <br \/>&#8211; behaviour<br \/>&#8211; performance<br \/>&#8211; scale <br \/>&#8211; etc.<br \/>Astute readers will note that some of these are probably at best, only marginally of security interest.<\/p>\n<p>Consider what the inundation of log detail does to the poor analysts who must sift through a mountain of dross for indicators of compromise (IoC). That\u2019s not a job I want.<\/p>\n<p>If you\u2019re giving your developers requirements like \u201csend all logs\u201d, you are causing far more harm than good.<\/p>\n<p>Any savvy developer is going to understand that most of what their code logs isn\u2019t relevant (until perhaps, post-attack analysis. It\u2019s good practice to archive runtime logs \u201csomewhere\u201d).<\/p>\n<p>Slamming developers with unspecific, perhaps impossible requirements burns precious influence in a useless firestorm. You\u2019re letting your partners know that you don\u2019t understand the problem, don\u2019t care about them, and ultimately, do not offer value to their process.<\/p>\n<p>As I\u2019ve said many times, \u201cDevelopers are very good at disinviting disruptive and valueless people to their meetings.\u201d<\/p>\n<p>Besides, such \u201crequirements\u201d are lazy. If you throw this kind of junk at people, you aren\u2019t doing your job.<\/p>\n<p>Our clients routinely ask us what they should monitor for security. We consider the tech, the architecture, the platform very carefully. To start, we try to cherry pick the most security relevant items.<\/p>\n<p>We usually offer a plan that goes from essentials towards what should become a mature security operations practice. What to monitor from application and running logs typically requires a journey of discovery: start manageably and build.<\/p>\n<p>\u201cAll\u201d is a lazy, disinterested answer. Security people need to be better than that.<\/p>\n<p>Cheers,<\/p>\n<p>\/brook<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I heard a rather distressing story last night. A major tech company\u2019s security architects routinely demand requirements like this example: \u201cSend all logs to security\u201d This is so bad on so many levels. What does \u201call\u201d mean? \u2014 Every debugging &hellip; <a href=\"https:\/\/brookschoenfield.com\/?p=381\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","footnotes":""},"categories":[],"tags":[99,103,105,104,106,48,98],"class_list":["post-381","post","type-post","status-publish","format-standard","hentry","tag-appsec-2","tag-architects","tag-securityarchitect","tag-securityarchitecture","tag-securitymonitoring","tag-software-process","tag-softwaresecurity-2"],"_links":{"self":[{"href":"https:\/\/brookschoenfield.com\/index.php?rest_route=\/wp\/v2\/posts\/381","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/brookschoenfield.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/brookschoenfield.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/brookschoenfield.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/brookschoenfield.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=381"}],"version-history":[{"count":1,"href":"https:\/\/brookschoenfield.com\/index.php?rest_route=\/wp\/v2\/posts\/381\/revisions"}],"predecessor-version":[{"id":382,"href":"https:\/\/brookschoenfield.com\/index.php?rest_route=\/wp\/v2\/posts\/381\/revisions\/382"}],"wp:attachment":[{"href":"https:\/\/brookschoenfield.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=381"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/brookschoenfield.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=381"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/brookschoenfield.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=381"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}