<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Whiskey Tango Foxtrot</title>
    <description>Let&apos;s explore security adventures and get some vitamins together.</description>
    <link>https://avicoder.me/</link>
    <atom:link href="https://avicoder.me/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sat, 08 Nov 2025 09:10:09 +0000</pubDate>
    <lastBuildDate>Sat, 08 Nov 2025 09:10:09 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>The Art of Building an AppSec Program That Developers Love</title>
        <description>&lt;hr /&gt;

&lt;p&gt;Creating a robust AppSec program is no easy feat. It requires a deep understanding of both the development process and security principles. But what does it take to build an AppSec program that not only secures applications but also wins the hearts of developers???&lt;/p&gt;

&lt;p&gt;Let’s explore some strategies:&lt;/p&gt;

&lt;h3 id=&quot;understanding-the-developers-mindset&quot;&gt;Understanding the Developer’s Mindset&lt;/h3&gt;

&lt;p&gt;Developers are often under immense pressure to deliver new features, fix bugs, and meet product deadlines.&lt;/p&gt;

&lt;p&gt;Security, while important, can sometimes feel like a hindrance to their primary goals.&lt;/p&gt;

&lt;p&gt;To engage developers in security practices, it’s essential to present the “why” behind security measures. For example, explaining the risks associated with not updating a vulnerable library can be more effective than simply instructing them to update it. Security should not just be about following orders; it should be about understanding and mitigating risks.&lt;/p&gt;

&lt;h3 id=&quot;creating-a-partnership-with-developers&quot;&gt;Creating a Partnership with Developers&lt;/h3&gt;

&lt;p&gt;A successful AppSec program is not a one-way street. It’s about creating a partnership where both security and development teams work together towards a common goal.&lt;/p&gt;

&lt;p&gt;This means involving developers in security discussions, understanding their challenges, and finding solutions that work for both sides. For example, allocating a portion of the development sprint for security tasks can help integrate security into the development lifecycle without overwhelming developers with additional work.&lt;/p&gt;

&lt;h3 id=&quot;security-champions-the-key-to-sustained-engagement&quot;&gt;Security Champions: The Key to Sustained Engagement&lt;/h3&gt;

&lt;p&gt;One effective way to maintain a strong security posture within the development team is through a Security Champions program.&lt;/p&gt;

&lt;p&gt;By appointing and empowering security-minded individuals within development teams, organisations can ensure that security considerations are woven into the fabric of the development process.&lt;/p&gt;

&lt;p&gt;However, the success of such a program depends on keeping it engaging and relevant. This can be achieved by treating these champions as equals in security discussions and giving them the autonomy to bring up concerns and suggestions.&lt;/p&gt;

&lt;h3 id=&quot;advocating-for-both-security-and-development&quot;&gt;Advocating for Both Security and Development&lt;/h3&gt;

&lt;p&gt;An AppSec leader should not only advocate for security within the development teams but also represent the needs and concerns of developers within the security team.&lt;/p&gt;

&lt;p&gt;This two-way advocacy ensures that decisions are balanced and take into account the practicalities of implementing security measures. For example, if developers are struggling with a particular security tool, it’s the AppSec leader’s role to find a solution that makes the developers’ jobs easier while still maintaining security standards.&lt;/p&gt;

&lt;h3 id=&quot;building-relationships-across-the-organization&quot;&gt;Building Relationships Across the Organization&lt;/h3&gt;

&lt;p&gt;Building relationships across different functions within the organization is crucial for an AppSec leader. This involves not only working closely with developers and product managers but also engaging with senior leadership to ensure security is integrated into the business strategy. Effective communication and the ability to translate technical jargon into business risks are essential skills for any AppSec professional.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;The future of application security hinges on Collaboration, Empathy, and a deep understanding of both security and development. By listening to developers, advocating for their needs, and integrating security into the development process, AppSec programs can become a seamless part of software development.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Remember the advice: “We have two ears and one mouth, so we should listen twice as much as we speak.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This philosophy can guide AppSec leaders to create programs that are not only effective but also embraced by those who implement them.&lt;/p&gt;

&lt;p&gt;Stay tuned for more insights and discussions on the future of application security. And remember, &lt;strong&gt;the key to a successful AppSec program lies in collaboration, not dictation.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading this post! We hope you found it helpful. If you have any comments or questions, please let me know in the comments below. Until next time… 👋🏽&lt;/p&gt;

</description>
        <pubDate>Sun, 18 Feb 2024 10:00:00 +0000</pubDate>
        <link>https://avicoder.me/2024/02/18/the-art-of-building-an-appsec-program/</link>
        <guid isPermaLink="true">https://avicoder.me/2024/02/18/the-art-of-building-an-appsec-program/</guid>
        
        
      </item>
    
      <item>
        <title>Host a bug bounty program under $500!</title>
        <description>&lt;hr /&gt;

&lt;h2 id=&quot;backstory&quot;&gt;Backstory&lt;/h2&gt;

&lt;p&gt;Security for our customers is our top priority.&lt;/p&gt;

&lt;p&gt;As a startup, we must continually seek ways to be resourceful by investing wisely in our business while safeguarding the information of our users. By being resourceful, we can reinvest possible savings into other initiatives that would improve the experience of our users and fuel the growth of the business.&lt;/p&gt;

&lt;p&gt;It is clear that bug bounties can be a valuable source of information about potential security issues in our system and provide us with the opportunity to close the gaps that might leave our users vulnerable to attack.&lt;/p&gt;

&lt;p&gt;In 2018, we launched a bug bounty program. we’ve done our research, figured out what we want to offer, and gotten all of our ducks in a row. But now comes the hard part: actually running the program!&lt;/p&gt;

&lt;p&gt;Previously, we received reports from users about possible problems with accounts or other parts of the site through a dedicated &lt;strong&gt;email&lt;/strong&gt; address. We faced the following challenges with this approach:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Keeping track of the reports;&lt;/li&gt;
  &lt;li&gt;There are major parts of the report missing, such as the class, CVSS, PoC, etc.&lt;/li&gt;
  &lt;li&gt;Trigger mails on changes in the state of the report such as triage, ask payment details etc.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;struggle&quot;&gt;Struggle&lt;/h2&gt;

&lt;p&gt;We looked for some alternatives and there are some really good products out there to host bug bounty program. The main issue we found is that most of the platforms out there charge exuberant entry fees just to get onboarded ~$50k.&lt;/p&gt;

&lt;p&gt;We also checked few open source solutions but it didn’t help our purpose, to keep it simple but effective, &lt;strong&gt;custom workflows&lt;/strong&gt; was a major requirement that we were looking for.&lt;/p&gt;

&lt;p&gt;Many of the existing integration solutions out there are missing the flexibility to customise the forms look and feel,  handling the workflow a difficult process. we’d checked integration solutions such as Zapier with Google Forms, custom Slack notifications with Jira Service tickets etc…&lt;/p&gt;

&lt;p&gt;We decided to go with JotForm for a few reasons:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;First, the forms can be customised. This means that you can create forms that match the aesthetic of your site and brand, which is extremely important for creating a seamless experience.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Second, JotForm integrates with most of the automation and alert solutions out in market today. This makes it easy to send alerts to users when they submit reports.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Thirdly, JotForm doesn’t cost too much—&lt;strong&gt;$500 per year&lt;/strong&gt; for their bronze plan and they also have free plan i.e. is pretty reasonable considering all of the features you get access to, including branding, custom workflows, mail customisation with templates and payment integration via PayPal.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Lastly, JotForm has a dashboard where you can see trends and the analytics about received issue, labelling, and assigning the reports to the security analyst.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;setup&quot;&gt;Setup&lt;/h2&gt;

&lt;p&gt;We use GitHub Pages to host a static page that includes details such as the&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Description&lt;/li&gt;
  &lt;li&gt;Scope&lt;/li&gt;
  &lt;li&gt;Eligibility&lt;/li&gt;
  &lt;li&gt;FAQs&lt;/li&gt;
  &lt;li&gt;Hall of Fame&lt;/li&gt;
  &lt;li&gt;Rewards&lt;/li&gt;
  &lt;li&gt;Criteria for Acceptance&lt;/li&gt;
  &lt;li&gt;Form for users to report bugs to us.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find it at: &lt;a href=&quot;https://security.glints.com/&quot;&gt;https://security.glints.com&lt;/a&gt; or feel free to look at code &lt;a href=&quot;https://github.com/glints-dev/bug-bounty/tree/gh-pages&quot;&gt;here&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;Github pages is straightforward to setup. The next step is to configure JotForm, head over to &lt;a href=&quot;https://www.jotform.com/&quot;&gt;https://www.jotform.com/&lt;/a&gt; to create an account and enable two-factor authentication.&lt;/p&gt;

&lt;p&gt;You can design and add the form fields as per your requirements. We like the Bugcrowd report structure and use it in report form. You can clone or import it in your account, this template is public and available at &lt;a href=&quot;https://www.jotform.com/form-templates/ur/bug-bounty-submission&quot;&gt;https://www.jotform.com/form-templates/ur/bug-bounty-submission&lt;/a&gt;, don’t forget to edit the options for Assets and Platform in your newly created form to match with your defined bug bounty scope. Once the form is ready, head over to the settings tab for further configuration for mail and workflow.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Next, Under Form Settings tab, Set form status to &lt;strong&gt;Enable&lt;/strong&gt;. After reports are sent, we need to send two emails through &lt;em&gt;autoresponders&lt;/em&gt;. In one mail we acknowledge that we have received the report by sending an email to the reporter’s address(reporter@xyz.com) and in another mail we send a message containing all the details of the report to our email(security@org.com).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&quot;https://tech.glints.com/content/images/2023/09/image-2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Go to Emails tab and click on Add Email. Let’s configure the acknowledgment mail by creating an &lt;strong&gt;Autoresponder Email&lt;/strong&gt;. You will need to make changes such as Subject, Content, Sender Name, Reply-to Address, Recipient Address.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&quot;https://tech.glints.com/content/images/2023/09/image-1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://tech.glints.com/content/images/2023/09/image-3.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Similarly create another email &lt;strong&gt;Notification Email&lt;/strong&gt; for sending the report to security team, also don’t miss to make changes as per your requirement.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&quot;https://tech.glints.com/content/images/2023/09/image-4.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;It is also recommended to set a Thank You page once the form is submitted.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&quot;https://tech.glints.com/content/images/2023/09/image-5.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Let’s move to the workflow section, which is the gist of this post. This will allow us to manage bug bounty reports in a similar way to how HackerOne and Bugcrowd allows.&lt;/p&gt;

&lt;p&gt;As of 2023, Jotform does not have a workflow export feature. However, you may create your own workflow using the tools on the jotform site. The process is fairly straightforward and involves dragging and dropping elements into place until you achieve the desired result. The heavy lifting has been done for you; all you need to do is follow along with this guide and you should be good to go!&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;To create the workflow and attach it with out submission form, go to &lt;a href=&quot;https://www.jotform.com/myapprovals&quot;&gt;https://www.jotform.com/myapprovals&lt;/a&gt; and click on &lt;strong&gt;Create Approval&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;for example check the one shown below, customise it as your current requirement.&lt;/p&gt;

&lt;p&gt;Also don’t forget to make the changes in the template for each action along with the &lt;strong&gt;Recipient Email&lt;/strong&gt;, let’s say if the report is &lt;em&gt;Not Applicable or Out of Scope&lt;/em&gt;, the email template would look like this:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Hi {firstName}
 
Thank you for participating in our &amp;lt;company name&amp;gt; Bug Bounty Program.
 
We have reviewed your bug report and would like to inform you that this bug is out of scope of our bug bounty program.
 
We request you to kindly refer to our bug bounty page at Scope for updated information on scope and details of our bug bounty program.
 
If you are able to abuse this functionality in order to gain access to sensitive data, or impact the system&apos;s integrity, please reply with some detailed reproduction steps and we will be happy to reconsider your report.
 
We appreciate your help in keeping Glints and our customers safe and secure.
 
Regards,
&amp;lt;company name&amp;gt; Security Team
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;on the similar lines for other action, such as:&lt;br /&gt;
- Request to validate fix&lt;br /&gt;
- Triage&lt;br /&gt;
- Request Payment details etc.&lt;/p&gt;

&lt;p&gt;Create the email template accordingly in the approval workflow.&lt;/p&gt;

&lt;p&gt;Once the form and approval flow is ready, attach it with the form that you’ve cloned earlier.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://tech.glints.com/content/images/2023/09/image-7.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;When bug bounty hunter sends a report using this form, all the details will be displayed in the dashboard called &lt;strong&gt;Inbox&lt;/strong&gt;. You can assign the form to individual members of your team and also label it. Filtering and mass operation on issues is also possible.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://tech.glints.com/content/images/2023/09/download--2-.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading this post! We hope you found it helpful. If you have any comments or questions, please let me know in the comments below. Until next time…&lt;/p&gt;

</description>
        <pubDate>Tue, 26 Sep 2023 10:00:00 +0000</pubDate>
        <link>https://avicoder.me/2023/09/26/host-bugbounty/</link>
        <guid isPermaLink="true">https://avicoder.me/2023/09/26/host-bugbounty/</guid>
        
        
      </item>
    
      <item>
        <title>Learning and Breaking GraphQL</title>
        <description>&lt;hr /&gt;
&lt;p&gt;tldr;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Apollo&apos;s Odyssey GraphQL Assessment had a security vulnerability that allowed anyone to view the correct answer before submitting the final report.&lt;/code&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;learning&quot;&gt;Learning&lt;/h3&gt;

&lt;p&gt;I developed a interest in learning more about GraphQL in the past couple of years, for the simple reason that it is still quite a new technology for some of the application developers, and due to its flexibility to adapt to customer needs, it’s a technology that is experiencing a significant growth in popularity.&lt;/p&gt;

&lt;p&gt;Even though I have done quite a bit of bug bounty work and pentesting around GraphQL, I have not been well versed in the development using GraphQL. My first step was to browse through their official documentation and tutorials. You can find a number of worthwhile resources on their site, including a blog series covering everything from the basics to advanced concepts like custom scalars and directives.&lt;/p&gt;

&lt;p&gt;Later, I was presented with a fantastic book. It was straightforward and gave me a better understanding of GraphQL. I was eager to get my hands dirty and came across the &lt;a href=&quot;https://www.apollographql.com/tutorials/&quot;&gt;Apollo Odyssey Learning Platform&lt;/a&gt;, it offers hands-on GraphQL tutorials.&lt;/p&gt;

&lt;center&gt;&lt;iframe type=&quot;text/html&quot; sandbox=&quot;allow-scripts allow-same-origin allow-popups&quot; width=&quot;165&quot; height=&quot;275&quot; frameborder=&quot;0&quot; style=&quot;max-width:100%&quot; src=&quot;https://read.amazon.com/kp/card?asin=B07K5TF5LP&amp;amp;preview=inline&amp;amp;linkCode=kpe&amp;amp;ref_=cm_sw_r_kb_dp_YD426Q7JD4ZYSBJ50S6J&quot;&gt;&lt;/iframe&gt;&lt;/center&gt;

&lt;p&gt;I completed it in a couple of weeks and the course provided me with everything that I needed to know about how GraphQL works behind-the-scenes as well as how it can be exploited by attackers who want access to your data or want to disrupt your services by sending bad requests through your API endpoint(s).&lt;/p&gt;

&lt;p&gt;Apollo Odyessy also provides a certification if you score seventy or above marks in the final assessment. Due to my familiarity with GraphQL, it was a breeze.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/odyessy-2.svg&quot; height=&quot;12%&quot; width=&quot;12%&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;breaking&quot;&gt;Breaking&lt;/h3&gt;

&lt;p&gt;Let’s now get to the hacking part. After getting familiar with how GraphQL works at a high level, I decided that it was time for me to start breaking something! So naturally my first instinct was “to look for companies  that uses GraphQL extensively” and I was looking for a target. However what would be a better target than Apollo’s own website? haha.&lt;/p&gt;

&lt;p&gt;As I explored and intercepted the traffic on the Exam page using the Burp suite, I noticed that when someone selected any option for the given question, a request was sent immediately. As part of the response to these requests, there is an interesting parameter called “correct” whose value will reveal whether the current answer is correct or not. The fact that anyone can run this request multiple times before submitting the final report makes it possible for the correct option to be iterated simply by iterating it again.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Request body&lt;/em&gt;&lt;/p&gt;

&lt;div class=&quot;language-json highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;operationName&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;SetOdysseyResponse&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;variables&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;userId&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;gh.██████████████████████████████&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;response&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;attemptId&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;fa0d9916█████████████████████6&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;questionId&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;mcq-res-calls-1&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;values&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;mutation&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;SetOdysseyResponse($response:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;OdysseyResponseInput!&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;$userId:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;ID!)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;user(id:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;$userId)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;response:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;setOdysseyResponse(response:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;$response)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;...ResponseFragment&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;__typename&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;__typename&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;

&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;fragment&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;ResponseFragment&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;OdysseyResponse&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;questionId&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;correct&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;values&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;__typename&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;__typename&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Response&lt;/em&gt;&lt;/p&gt;

&lt;div class=&quot;language-json highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;data&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;user&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;response&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;id&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;22748&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;questionId&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;mcq-res-calls-1&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;correct&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;values&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[],&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;__typename&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;OdysseyResponse&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;__typename&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;UserMutation&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Issues&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;correct&lt;/code&gt; should not be reflected to mutation response.&lt;/li&gt;
  &lt;li&gt;It is also possible to nest all the options and get the correct answers easily&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is worth mentioning that if these parameters are not restricted, someone with a knowledge of the schema could request the values of them to receive more information.&lt;/p&gt;

&lt;p&gt;Using this method, anyone can easily pass this assessment with a score of 100/100 after going through all the questions.&lt;/p&gt;

&lt;p&gt;I immediately reported this to the &lt;a href=&quot;https://community.apollographql.com/t/where-to-report-a-security-vulnerability-in-odyssey-platform/4472&quot;&gt;Apollo&lt;/a&gt; through twitter and their support forum. They were quite prompt in response and acknowledged it as a valid issue.&lt;/p&gt;

&lt;p&gt;While fixing it from their end did take some time, they did a great job.&lt;/p&gt;

&lt;p&gt;My next few posts will also explain how to leverage tools in SAST and DAST to continuously check graphQL security in an organization.&lt;/p&gt;

&lt;p&gt;~ avi&lt;/p&gt;
</description>
        <pubDate>Mon, 23 Jan 2023 10:00:00 +0000</pubDate>
        <link>https://avicoder.me/2023/01/23/hacking-graphql/</link>
        <guid isPermaLink="true">https://avicoder.me/2023/01/23/hacking-graphql/</guid>
        
        
      </item>
    
      <item>
        <title>Security of Google Groups</title>
        <description>&lt;p&gt;Here we go again!&lt;/p&gt;

&lt;p&gt;I’m back with another series of discussion topics. This time it’s Google Workspace.&lt;/p&gt;

&lt;p&gt;Alphabet has a variety of applications for organisations that help you work with your teams and clients, but one of the most powerful is Google Workspace.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/avicoder/avicoder.github.io/master/images/google-workspace.png&quot; alt=&quot;Goole Workspace&quot; /&gt;&lt;/p&gt;

&lt;p&gt;There are a ton of applications that allow you to access your emails, calendars and contacts from anywhere with an internet connection. It also makes it easy for you to share files with other members of your team or company.&lt;/p&gt;

&lt;p&gt;But there’s a problem. Let me explain to you why: when you navigate to “https://groups.google.com/a/{org_domain}/g/{group_name}” and able to view all the conversations that are happening inside the organisation. That’s because of a common misconfiguration while setting the sharing options.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/avicoder/avicoder.github.io/master/images/google-sharing.png&quot; alt=&quot;Goole Workspace&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Many companies mistakenly think that “public on the internet” means that their communications are available only within the organization; they don’t realize that anyone can see them if they know where to look, which is not a problem with a few lines of automation.&lt;/p&gt;

&lt;p&gt;Based on the HTTP Status Code if:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The group will return &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;403&lt;/code&gt; if it exists and is private.&lt;/li&gt;
  &lt;li&gt;The group will return &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;200&lt;/code&gt; if it exists and is public.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;302&lt;/code&gt; will be returned if the group does not exist.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I ran a one-liner on the top 1 million sites with common DL/Group names such as:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;support&lt;/li&gt;
  &lt;li&gt;help&lt;/li&gt;
  &lt;li&gt;people&lt;/li&gt;
  &lt;li&gt;security etc.
and found 100s of instances.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Digging deeper into the conversation reveals more obscure and difficult-to-find Google groups with internal information.&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;cat &lt;/span&gt;1m.txt | &lt;span class=&quot;k&quot;&gt;while &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;read &lt;/span&gt;line&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do  &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;result&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;curl &lt;span class=&quot;nt&quot;&gt;-s&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-o&lt;/span&gt; /dev/null &lt;span class=&quot;nt&quot;&gt;-w&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;%{http_code}&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; https://groups.google.com/a/&lt;span class=&quot;nv&quot;&gt;$line&lt;/span&gt;/g/support&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$result&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-eq&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;200&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;then &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$line&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;## HIT ###&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;fi&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If your conversations are publicly accessible, all someone needs to do is guess at the URL for your group within your organization and then they have access to all of your confidential information!&lt;/p&gt;

&lt;p&gt;So what do you do? To protect yourself and your company, make sure you’ve selected “Private” under “Accessing groups from outside the organization.”&lt;/p&gt;

&lt;p&gt;Until next time …&lt;/p&gt;

&lt;p&gt;Avi
👋&lt;/p&gt;
</description>
        <pubDate>Mon, 16 Jan 2023 10:00:00 +0000</pubDate>
        <link>https://avicoder.me/2023/01/16/google-groups-security/</link>
        <guid isPermaLink="true">https://avicoder.me/2023/01/16/google-groups-security/</guid>
        
        
      </item>
    
      <item>
        <title>YaY!! CISSP Certified</title>
        <description>&lt;p&gt;&lt;img src=&quot;/images/study.png&quot; height=&quot;50%&quot; width=&quot;50%&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Following my CISSP certification, I have a few opinions to share.&lt;/p&gt;

&lt;p&gt;Newcomers - don’t wait, opt for it!&lt;/p&gt;

&lt;p&gt;In fact, it should be one of the first certificates pursued after a couple of years of experience. I regret not doing it earlier.&lt;/p&gt;

&lt;p&gt;I think it is not as complicated as it has been advertised to be, but it depends on the individual. I have only read a few books and I believe you will be ready to start.&lt;/p&gt;

&lt;p&gt;During the course of reading these books, I have abandoned my idea that these are textbooks that I would need to complete in order to become a certified CISSP. Instead, I am enjoying it as a regular book. This has opened new avenues for me and enabled me to be a better analytical thinker.&lt;/p&gt;

&lt;p&gt;This means that, for example, if the module discusses the kind of processes that are done during BCP or asset management, I focus on the exact required entities and the steps that have to be considered rather than sharing ideas from flash cards and all that stuff.&lt;/p&gt;

&lt;p&gt;Thanks &lt;a href=&quot;https://www.isc2.org/certified-in-cybersecurity&quot;&gt;CC&lt;/a&gt;, it helped.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/CC-Square.png&quot; height=&quot;6%&quot; width=&quot;6%&quot; /&gt;&lt;/p&gt;

&lt;p&gt;There is currently a promotion running for the 1st million candidates who can attempt the Certified in Cybersecurity℠ - CC examination and receive one year of free training materials from ISC2. The CC certification is a unique entry level certification provided by ISC2, which is one of a kind in the industry. Through this opportunity, I had the opportunity to give an exam at the center and to brush up on my basics.&lt;/p&gt;

&lt;p&gt;I had booked my exam 1 month in advance and spent nights reading these two books only:&lt;/p&gt;

&lt;iframe type=&quot;text/html&quot; sandbox=&quot;allow-scripts allow-same-origin allow-popups&quot; width=&quot;212&quot; height=&quot;362&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot; style=&quot;max-width:100%&quot; src=&quot;https://read.amazon.com/kp/card?asin=B097NHJK9Q&amp;amp;preview=newtab&amp;amp;linkCode=kpe&amp;amp;ref_=cm_sw_r_kb_dp_9ZP0AYQPHF44N19ZPEZ0&amp;amp;hideBuy=true&amp;amp;hideShare=true&quot;&gt;&lt;/iframe&gt;

&lt;iframe type=&quot;text/html&quot; sandbox=&quot;allow-scripts allow-same-origin allow-popups&quot; width=&quot;212&quot; height=&quot;362&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot; style=&quot;max-width:100%&quot; src=&quot;https://read.amazon.com/kp/card?asin=B09ZD8WMZV&amp;amp;preview=newtab&amp;amp;linkCode=kpe&amp;amp;ref_=cm_sw_r_kb_dp_SY2RWS94JDXG5EJM73P4&amp;amp;hideBuy=true&amp;amp;hideShare=true&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;Until next time …
👋&lt;/p&gt;

</description>
        <pubDate>Wed, 14 Dec 2022 10:00:00 +0000</pubDate>
        <link>https://avicoder.me/2022/12/14/CISSP-certified/</link>
        <guid isPermaLink="true">https://avicoder.me/2022/12/14/CISSP-certified/</guid>
        
        
      </item>
    
      <item>
        <title>Security Roadmap, Strategies and Challenges</title>
        <description>&lt;p&gt;&lt;em&gt;It’s hard to develop a cybersecurity roadmap since several elements need to be considered, such as compliance and risk posture, policy framework, detection and response capabilities, resilience and recovery after a breach.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Hi Everyone 👋 , in this &lt;strong&gt;part-series&lt;/strong&gt; I’m gonna to be sharing about developing a security roadmap, that usually comes after asking some relevant questions. Also, I’ll talk about what good security looks like, because it’s hard to make a good roadmap if you don’t really know what you’re aiming for. I’ll talk about where to start and how to get there.&lt;/p&gt;

&lt;p&gt;Let’s discuss what executives typically ask…&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/d-1.png&quot; height=&quot;50%&quot; width=&quot;50%&quot; /&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Are we Compliant?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can be compliant, but that doesn’t mean you’re secure, but you can get there and there’s a lot in compliance requirements and standards etc. that’ll help you out. In the end, it won’t make a lot of difference unless you live and breathe it.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Are we Secure?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In the same token, you can be compliant and still be secure, and we see that quite a bit of the time, when people have very good security practices and operations in their organization, but they’re bad at documenting stuff, so from a compliance standpoint, they won’t be compliant but still secure.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;How much progress did we make in making us more secure?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;How did we do compared to last year? That’s a tough one since the landscape in which we worked last year was different. As you know, the attacks that we saw last year might have been a few, but now we may see attacks that are vastly different from what we saw in the past. Information Security is a dynamic discipline, which means that everything changes and everything stays the same, so all the processes, procedures, and things we do from an operational perspective don’t really change that much over time. However, attacks, how we respond to them, do change every day, so it’s a bit of both.&lt;/p&gt;

&lt;p&gt;In the last 12 months if you didn’t change your security effort, you were doing a great job dealing with the types of attacks you were seeing, but if you’re still doing the same thing, then there’s a fair chance that the attacks have outpaced you.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;What would we do in case of a breach?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is a great question because they’re trying to figure out if you’re prepared for an attack since their awareness has been raised. Whenever there’s an incident, we see people like you asking this question.&lt;/p&gt;

&lt;p&gt;When executives ask all these questions above, there’s actually a subtext to the questions that they’re actually asking.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;When they ask for “Are we compliant?” they’re really asking…&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;In order to achieve or exceed our goals, what standards must we meet?&lt;/li&gt;
  &lt;li&gt;Have we met them yet?&lt;/li&gt;
  &lt;li&gt;How are we doing? Do we continue to meet with them?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;On the similar footsteps “Are you secure?”&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;What are the current risks and how well do we understand them?&lt;/li&gt;
  &lt;li&gt;Are we aware of our key assets?&lt;/li&gt;
  &lt;li&gt;What are we doing to protect those key assets?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s the question really being asked!!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“How much progress did we make in making us more secure?”&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Over the past year, what has changed?&lt;/li&gt;
  &lt;li&gt;What are we doing to meet these new challenges?&lt;/li&gt;
  &lt;li&gt;What are the areas where we need to improve?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;“What would we do in case of a breach?”&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;How have we handled incidents that have actually occurred?&lt;/li&gt;
  &lt;li&gt;What did we learn and how are we adapting?&lt;/li&gt;
  &lt;li&gt;Were there any changes we made to ensure we met the challenge?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In essence, that’s what the executive is asking when he’s asking any one of these four questions, but if you ask them on their own they can be difficult to understand, but if you combine them, they give you a clearer picture of where the organization fits into the security structure.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/d-2.png&quot; height=&quot;50%&quot; width=&quot;50%&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;what-does-good-security-look-like&quot;&gt;What does good security look like?&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;Good security needs to be proactive&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In a lot of companies, security teams are purely reactive, they react to new features and projects request for assessment. We’ve all probably run into the situation where someone comes up to your desk just before the weekend and says “hey, this project needs to go live in a few hours, can you please approve it? 😰”. Our security team needs to change from a reactive to a proactive one.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Security should not be Obstructive.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Often, in-your-face security generates obstacles to the business, so our role as security team is to ensure that the business is able to do what it needs to do in a secure manner. Nobody has ever thanked a security team for saying “No” constantly. Obviously there are times when saying No is the right thing to do because there are plenty of things from a security perspective that are bad ideas, but ideally you’ll have a security team that can actually contribute to the success of the organization.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Security Coverage is one of the main pillars.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The right coverage needs to happen,with tools and solutions that are in place, we let it run and then in many organizations it is just there for the rest of the year. We come across systems that after it’s been implemented it’s never been touched, well it does what it’s supposed to do but they do need kind of a little bit of love.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Implement technology/controls correctly&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If your organization is at the point where you have firewalls and anti-viruses - for instance, if you have firewalls, then your next purchase won’t be one that grabs everything and analyzes it all - there is probably a technology use between the two that you will want to consider.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Minimize the Risk&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There is a need for us to understand what the risks are. We need to understand what we will be able to do about these risks in order to minimize them as much as possible.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Cost Effectiveness&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Security solutions must be cost-effective. If it is going to cost 2-3 times as much as the annual revenue of the company, it is probably not going to be of much use to the company.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Responding to current threats&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Having an understanding of what’s going on in the world right now will give your security team a competitive edge towards proactiveness.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Repeatable process&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You must be able to repeat whatever you do. If you discover an XSS, you may be able to find the same issue anywhere with the help of tools and scripts sooner, so you can focus on more interesting things rather than sweating over finding the same issue on different instances a week later.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Detailed documentation&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Documentation is important and we all kind of stink at it a little bit. but it’s okay to start small and then build slowly.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/d-3.png&quot; height=&quot;50%&quot; width=&quot;50%&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;what-does-it-take-to-get-good-security&quot;&gt;What does it take to get good security?&lt;/h2&gt;

&lt;p&gt;In an organization, four main functions must take place:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Make sure you’re taking some sort of &lt;strong&gt;Risk and Compliance/Governance&lt;/strong&gt; to help identify what you need to protect. To do this, you need to know your assets, your risks, your controls, your metrics, your policies, etc., all documented in a rinse, lather, repeat manner.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;There is typically some sort of &lt;strong&gt;Security Architecture and Design&lt;/strong&gt; component within an organization, this is a team that liaises with the business more closely to understand what the requirements are, what the impacts are, how I will protect it and how will I know it’s being done well. We can’t emphasize enough how important it is to get into a project earlier. Instead of finding out at the end that someone has put a database somewhere in the internet and you’re connecting to it over HTTP. Or, code has been downloaded from a Russian website and embedded into your core application, it would be nice to find out at the beginning rather than at the end.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The &lt;strong&gt;Security Administration&lt;/strong&gt; function is all about adding users, giving them access, taking it away, and doing some reviews. In order to succeed in security administration, you typically need to have some defined processes, regular review, and maintenance procedures.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Security operations&lt;/strong&gt; role is to detect,respond and identify any threats. The goal here is to gain visibility on network servers and endpoints, and make sure that the tools that cover what you’re supposed to cover are configured appropriately. Respond to threats, manage them, and analyze them.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Skills and services for all of these requirements are not necessarily confined to your organization, and it’s fine to get someone else to assist you. You don’t necessarily have to run a security business but some of these functions must be performed and they must be handled by someone, which you can outsource easily.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/d-4.png&quot; height=&quot;50%&quot; width=&quot;50%&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;where-are-we-in-terms-of-security-maturity&quot;&gt;Where are we in terms of security maturity?&lt;/h2&gt;

&lt;p&gt;There’s different ways of doing it and it’s obviously a very high level and to be honest the more immature you are the easier this process..&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Non-Existence&lt;/strong&gt;:  we have a Firewall we have AntiVirus if that’s the answer to the question of what are you doing for information security then you’re probably going to be in that non-existent. However, that makes life easy because your roadmap can take in whatever direction you want to be with minimal friction from the stakeholders.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Immature:&lt;/strong&gt; In general, you will have a Security Administration function and you may have some policies, or you might not have any policies at all but people just know what to do. People seem to know what to do quite naturally when it comes to this. You might have some technical controls beyond your firewall or your antivirus in place within the organization, you might do some threat management, we’re still a fairly immature organization, there’s no real strategy.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Doing our best:&lt;/strong&gt; In this case, the Security Admin function is pretty good, and you can add/remove users, modify policies, or even develop a little bit of a risk and compliance or security operations tool, these technical controls with some customization. In contrast to the default tools you bought on day one, these have actually had some thought and configuration assigned to them.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Getting there:&lt;/strong&gt; Everyone is aware of the Security Administration’s policies. As part of security operations, you’re getting some visibility into the network, you’re having some logs and cloudtrail set up, and you’re reviewing those logs. Your risk and compliance function is taking place throughout the year, and you’re analyzing where you sit for the most significant risks. Getting involved in projects means you know it may not be at the end, maybe you’re in the middle, but the objective is to get there as soon as possible.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Mature:&lt;/strong&gt; You start adding to get established and you’ve got things documented. Security operations are improved on your visibility. The policies are in place and they’re regularly being reviewed. The technical controls are in place.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Very Mature Organization:&lt;/strong&gt; You’re doing everything you were doing before, but now that you have metrics, you can determine whether or not things are working as they should. Your security architecture is documented. You have invested resources in automating some administrative or operational tasks. You’re reducing the time it takes you to respond to incidents and noticing them more often. Perhaps you are evaluating the advanced tools deployed within your organization now that the policies are in place.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;The next post - “part ii” of this series will discuss ways to improve security and the roadmap.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;🙏&lt;/p&gt;

&lt;p&gt;References:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.mcafee.com/enterprise/en-us/assets/data-sheets/ds-strategic-security-roadmap-plan.pdf&quot;&gt;McAfee&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://purplesec.us/learn/cyber-security-strategy/&quot;&gt;PurpleSec&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.techtarget.com/searchsecurity/tip/How-to-develop-a-cybersecurity-strategy-Step-by-step-guide&quot;&gt;TechTarget&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.shearwater.com.au&quot;&gt;Shearwater&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/49883665-tribe-of-hackers-security-leaders&quot;&gt;Tribe of Hackers Security Leaders&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/23201316-cybersecurity-leadership&quot;&gt;Cybersecurity Leadership&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/52431662-a-leader-s-guide-to-cybersecurity&quot;&gt;A Leader’s Guide to Cybersecurity&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Sat, 06 Aug 2022 10:00:00 +0000</pubDate>
        <link>https://avicoder.me/2022/08/06/cybersecurity-strategies/</link>
        <guid isPermaLink="true">https://avicoder.me/2022/08/06/cybersecurity-strategies/</guid>
        
        
      </item>
    
      <item>
        <title>Free Email Provider List</title>
        <description>&lt;p&gt;&lt;a href=&quot;https://circleci.com/gh/avicoder/avicoder.github.io/tree/master&quot;&gt;&lt;img src=&quot;https://circleci.com/gh/avicoder/avicoder.github.io/tree/master.svg?style=svg&quot; alt=&quot;CircleCI&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using this API endpoint&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;https://avicoder.me/api/mailproviders.json
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;, a user can retrieve a list of free email providers. The information here is not exhaustive and is based on the gist people have provided.&lt;/p&gt;

&lt;p&gt;Daily updates are made to it.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;
&lt;code class=&quot;hljs javascript&quot;&gt;
&lt;div id=&quot;myData&quot;&gt;&lt;/div&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;script&gt;
 var getJSON = function(url, callback) {
     var xhr = new XMLHttpRequest();
     xhr.open(&apos;GET&apos;, url, true);
     xhr.responseType = &apos;json&apos;;
     xhr.onload = function() {
       var status = xhr.status;
       if (status === 200) {
         callback(null, xhr.response);
       } else {
         callback(status, xhr.response);
       }
     };
     xhr.send();
 };

getJSON(&apos;https://avicoder.me/api/mailproviders.json&apos;,
function(err, data) {
  if (err !== null) {
    alert(&apos;Something went wrong: &apos; + err);
  } else {
    var mainContainer = document.getElementById(&quot;myData&quot;);
    for (var i = 0; i &lt; data.result.length; i++) {
                var div = document.createElement(&quot;div&quot;);
                div.innerHTML = data[&apos;result&apos;][i];
                mainContainer.appendChild(div);
            }
          }
});
 &lt;/script&gt;

&lt;p&gt;Thank you&lt;/p&gt;
</description>
        <pubDate>Mon, 06 Sep 2021 00:00:00 +0000</pubDate>
        <link>https://avicoder.me/2021/09/06/Free-Mail-Providers-list-api/</link>
        <guid isPermaLink="true">https://avicoder.me/2021/09/06/Free-Mail-Providers-list-api/</guid>
        
        
      </item>
    
      <item>
        <title>Root AVD and Install Magisk</title>
        <description>&lt;p&gt;Mostly I have done the android app penetration testing on GenyMotion.
The problem is that a few apps aren’t working properly lately because of architectural requirements and incompatibility.&lt;/p&gt;

&lt;p&gt;Android Virtual Devices (AVD) can be a good alternative, but the images do not support rooting.&lt;/p&gt;

&lt;p&gt;So let’s root the AVD to overcome this limitation. The following guide is what I used to setup env on Mac machines.&lt;/p&gt;

&lt;p&gt;Start by downloading the SDK or installing Android Studio.
&lt;img src=&quot;/images/andimages.png&quot; alt=&quot;Android System Images&quot; width=&quot;600px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Next, we will create a virtual device. You can choose which System Image you want to download.
After booting the device, open the terminal and clone the &lt;a href=&quot;https://github.com/newbit1/rootAVD&quot;&gt;rootAVD&lt;/a&gt; script.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/notrooted.png&quot; alt=&quot;Not Rooted&quot; width=&quot;300px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Change the system image (android-xx) accordingly and run:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt; ./rootAVD.sh ~/Library/Android/sdk/system-images/android-30/google_apis/x86/ramdisk.img
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;./rootAVD.sh InstallApps
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Wait for it to finish.&lt;/p&gt;

&lt;p&gt;Your phone is now rooted.&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;adb shell                                                                                                                                                                                                                        
generic_x86_arm:/ $ su root
generic_x86_arm:/ # whoami
root
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;/images/rooted.png&quot; alt=&quot;Rooted&quot; width=&quot;300px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In order to intercept traffic and get Frida installed, you need to install a few Magisk modules.
 Here are some options:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/NVISOsecurity/MagiskTrustUserCerts&quot;&gt;Magisk Trust User Certs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/ViRb3/magisk-frida&quot;&gt;MagiskFrida&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With this setup, you can begin conducting your security assessment.&lt;/p&gt;

&lt;p&gt;Thank you and see you next time&lt;/p&gt;
</description>
        <pubDate>Thu, 02 Sep 2021 00:00:00 +0000</pubDate>
        <link>https://avicoder.me/2021/09/02/Root-AVD-and-install-Magisk/</link>
        <guid isPermaLink="true">https://avicoder.me/2021/09/02/Root-AVD-and-install-Magisk/</guid>
        
        
      </item>
    
      <item>
        <title>Dual TZ - Fitbit</title>
        <description>&lt;p&gt;Fist bump folks,&lt;/p&gt;

&lt;p&gt;I don’t have much here about to talk about this Fitbit clock-face.&lt;/p&gt;

&lt;p&gt;One of my friend wanted to have an elegant clock-face for her Fitbit sense with support of dual clock so I made one on weekends. It is compatible with Sense and Versa 3 and built on  Fitbit SDK 5.0&lt;/p&gt;

&lt;center&gt;&lt;image src=&quot;https://raw.githubusercontent.com/avicoder/Dual-TZ/master/Dual-TZ.png&quot; /&gt;&lt;/center&gt;

&lt;p&gt;You can try it on your Fitbit Sense by installing it from &lt;a href=&quot;https://gallery.fitbit.com/details/c422e397-ea03-4f64-84af-e01e4a81b328&quot;&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It has these features and more will be added depending on the demand, open a &lt;a href=&quot;https://github.com/avicoder/Dual-TZ&quot;&gt;issue&lt;/a&gt; for any more enhancements and bugs.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Added two GMT timezone on the clock face&lt;/li&gt;
  &lt;li&gt;Great for travellers&lt;/li&gt;
  &lt;li&gt;4 stats right on the screen
    &lt;ul&gt;
      &lt;li&gt;Steps&lt;/li&gt;
      &lt;li&gt;BPM&lt;/li&gt;
      &lt;li&gt;KCal&lt;/li&gt;
      &lt;li&gt;Distance&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks&lt;/p&gt;
</description>
        <pubDate>Tue, 20 Apr 2021 10:00:00 +0000</pubDate>
        <link>https://avicoder.me/2021/04/20/Dual-TZ/</link>
        <guid isPermaLink="true">https://avicoder.me/2021/04/20/Dual-TZ/</guid>
        
        
      </item>
    
      <item>
        <title>Hackerone inscope urls</title>
        <description>&lt;h5 id=&quot;this-is-the-compilation-of-all-the-in-scope-urls-found-in-the-public-bugbounty-program-on-hackerone&quot;&gt;This is the compilation of all the in scope urls found in the public bugbounty program on hackerone.&lt;/h5&gt;

&lt;p&gt;Updated daily!&lt;/p&gt;

&lt;p&gt;⤋ &lt;a href=&quot;https://avicoder.me/api/h1_inscope_urls.json&quot;&gt;Download JSON file&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://circleci.com/gh/avicoder/avicoder.github.io/tree/master&quot;&gt;&lt;img src=&quot;https://circleci.com/gh/avicoder/avicoder.github.io/tree/master.svg?style=svg&quot; alt=&quot;CircleCI&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
        <pubDate>Tue, 19 Nov 2019 10:00:00 +0000</pubDate>
        <link>https://avicoder.me/2019/11/19/h1-inscope-urls/</link>
        <guid isPermaLink="true">https://avicoder.me/2019/11/19/h1-inscope-urls/</guid>
        
        
      </item>
    
  </channel>
</rss>
