semgrep.dev Open in urlscan Pro
13.32.99.31  Public Scan

Submitted URL: https://returntocorporation.oramalthea.com/api/mailings/click/PMRGSZBCHIZDONJXHE2SYITVOJWCEORCNB2HI4DTHIXS643FNVTXEZLQFZSGK5RPMNQXGZJNON2HK...
Effective URL: https://semgrep.dev/case-studies/lyft/
Submission Tags: urlscan
Submission: On March 22 via api from US — Scanned from DE

Form analysis 4 forms found in the DOM

<form id="mktoForm_1180" class="subscribeForm mktoForm mktoHasWidth mktoLayoutLeft" novalidate="novalidate" style="font-family: Helvetica, Arial, sans-serif; font-size: 13px; color: rgb(51, 51, 51); width: 531px;" digitalpi-utms-added="true">
  <style type="text/css">
    .mktoForm .mktoButtonWrap.mktoSimple .mktoButton {
      color: #fff;
      border: 1px solid #75ae4c;
      padding: 0.4em 1em;
      font-size: 1em;
      background-color: #99c47c;
      background-image: -webkit-gradient(linear, left top, left bottom, from(#99c47c), to(#75ae4c));
      background-image: -webkit-linear-gradient(top, #99c47c, #75ae4c);
      background-image: -moz-linear-gradient(top, #99c47c, #75ae4c);
      background-image: linear-gradient(to bottom, #99c47c, #75ae4c);
    }

    .mktoForm .mktoButtonWrap.mktoSimple .mktoButton:hover {
      border: 1px solid #447f19;
    }

    .mktoForm .mktoButtonWrap.mktoSimple .mktoButton:focus {
      outline: none;
      border: 1px solid #447f19;
    }

    .mktoForm .mktoButtonWrap.mktoSimple .mktoButton:active {
      background-color: #75ae4c;
      background-image: -webkit-gradient(linear, left top, left bottom, from(#75ae4c), to(#99c47c));
      background-image: -webkit-linear-gradient(top, #75ae4c, #99c47c);
      background-image: -moz-linear-gradient(top, #75ae4c, #99c47c);
      background-image: linear-gradient(to bottom, #75ae4c, #99c47c);
    }
  </style>
  <div class="mktoFormRow">
    <div class="mktoFieldDescriptor mktoFormCol" style="margin-bottom: 10px;">
      <div class="mktoOffset" style="width: 10px;"></div>
      <div class="mktoFieldWrap mktoRequiredField"><label for="Email" id="LblEmail" class="mktoLabel mktoHasWidth" style="width: 100px;">
          <div class="mktoAsterix">*</div>Email<span style="font-size: 10px;"><sup><span style="color: #ff0000;">*</span></sup></span>
        </label>
        <div class="mktoGutter mktoHasWidth" style="width: 10px;"></div><input id="Email" name="Email" placeholder="Enter your email" maxlength="255" title="Enter your email here" aria-labelledby="LblEmail InstructEmail" type="email"
          class="mktoField mktoEmailField mktoHasWidth mktoRequired" aria-required="true" style="width: 420px;"><span id="InstructEmail" tabindex="-1" class="mktoInstruction">Enter your email here</span>
        <div class="mktoClear"></div>
      </div>
      <div class="mktoClear"></div>
    </div>
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="UTM_Term__c" class="mktoField mktoFieldDescriptor mktoFormCol" value="" style="margin-bottom: 10px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="UTM_Campaign__c" class="mktoField mktoFieldDescriptor mktoFormCol" value="" style="margin-bottom: 10px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="UTM_Source__c" class="mktoField mktoFieldDescriptor mktoFormCol" value="" style="margin-bottom: 10px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="UTM_Medium__c" class="mktoField mktoFieldDescriptor mktoFormCol" value="" style="margin-bottom: 10px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="UTM_Content__c" class="mktoField mktoFieldDescriptor mktoFormCol" value="" style="margin-bottom: 10px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoButtonRow"><span class="mktoButtonWrap mktoSimple" style="margin-left: 120px;"><button type="submit" class="mktoButton">Subscribe</button></span></div><input type="hidden" name="formid" class="mktoField mktoFieldDescriptor"
    value="1180"><input type="hidden" name="munchkinId" class="mktoField mktoFieldDescriptor" value="825-QQZ-896"><input type="hidden" name="originalUTMMedium" class="mktoField mktoFieldDescriptor" value="none"><input type="hidden"
    name="originalUtmSource" class="mktoField mktoFieldDescriptor" value="none">
</form>

<form id="mktoForm_1070" class="mkForm mktoForm mktoHasWidth mktoLayoutLeft" novalidate="novalidate" style="font-family: Helvetica, Arial, sans-serif; font-size: 13px; color: rgb(51, 51, 51); width: 531px;" digitalpi-utms-added="true">
  <style type="text/css">
    .mktoForm .mktoButtonWrap.mktoSimple .mktoButton {
      color: #fff;
      border: 1px solid #75ae4c;
      padding: 0.4em 1em;
      font-size: 1em;
      background-color: #99c47c;
      background-image: -webkit-gradient(linear, left top, left bottom, from(#99c47c), to(#75ae4c));
      background-image: -webkit-linear-gradient(top, #99c47c, #75ae4c);
      background-image: -moz-linear-gradient(top, #99c47c, #75ae4c);
      background-image: linear-gradient(to bottom, #99c47c, #75ae4c);
    }

    .mktoForm .mktoButtonWrap.mktoSimple .mktoButton:hover {
      border: 1px solid #447f19;
    }

    .mktoForm .mktoButtonWrap.mktoSimple .mktoButton:focus {
      outline: none;
      border: 1px solid #447f19;
    }

    .mktoForm .mktoButtonWrap.mktoSimple .mktoButton:active {
      background-color: #75ae4c;
      background-image: -webkit-gradient(linear, left top, left bottom, from(#75ae4c), to(#99c47c));
      background-image: -webkit-linear-gradient(top, #75ae4c, #99c47c);
      background-image: -moz-linear-gradient(top, #75ae4c, #99c47c);
      background-image: linear-gradient(to bottom, #75ae4c, #99c47c);
    }
  </style>
  <div class="mktoFormRow">
    <div class="mktoFieldDescriptor mktoFormCol" style="margin-bottom: 10px;">
      <div class="mktoOffset" style="width: 10px;"></div>
      <div class="mktoFieldWrap mktoRequiredField"><label for="Email" id="LblEmail" class="mktoLabel mktoHasWidth" style="width: 100px;">
          <div class="mktoAsterix">*</div>Email<span style="font-size: 10px;"><sup><span style="color: #ff0000;">*</span></sup></span>
        </label>
        <div class="mktoGutter mktoHasWidth" style="width: 10px;"></div><input id="Email" name="Email" placeholder="Enter your email" maxlength="255" title="Enter your email here" aria-labelledby="LblEmail InstructEmail" type="email"
          class="mktoField mktoEmailField mktoHasWidth mktoRequired" aria-required="true" style="width: 420px;"><span id="InstructEmail" tabindex="-1" class="mktoInstruction">Enter your email here</span>
        <div class="mktoClear"></div>
      </div>
      <div class="mktoClear"></div>
    </div>
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="UTM_Term__c" class="mktoField mktoFieldDescriptor mktoFormCol" value="" style="margin-bottom: 10px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="UTM_Campaign__c" class="mktoField mktoFieldDescriptor mktoFormCol" value="" style="margin-bottom: 10px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="UTM_Source__c" class="mktoField mktoFieldDescriptor mktoFormCol" value="" style="margin-bottom: 10px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="UTM_Medium__c" class="mktoField mktoFieldDescriptor mktoFormCol" value="" style="margin-bottom: 10px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="UTM_Content__c" class="mktoField mktoFieldDescriptor mktoFormCol" value="" style="margin-bottom: 10px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoButtonRow"><span class="mktoButtonWrap mktoSimple" style="margin-left: 120px;"><button type="submit" class="mktoButton">Subscribe</button></span></div><input type="hidden" name="formid" class="mktoField mktoFieldDescriptor"
    value="1070"><input type="hidden" name="munchkinId" class="mktoField mktoFieldDescriptor" value="825-QQZ-896"><input type="hidden" name="originalUTMMedium" class="mktoField mktoFieldDescriptor" value="none"><input type="hidden"
    name="originalUtmSource" class="mktoField mktoFieldDescriptor" value="none">
</form>

<form class="mkForm mktoForm mktoHasWidth mktoLayoutLeft" novalidate="novalidate"
  style="font-family: Helvetica, Arial, sans-serif; font-size: 13px; color: rgb(51, 51, 51); visibility: hidden; position: absolute; top: -500px; left: -1000px; width: 1600px;"></form>

<form class="subscribeForm mktoForm mktoHasWidth mktoLayoutLeft" novalidate="novalidate"
  style="font-family: Helvetica, Arial, sans-serif; font-size: 13px; color: rgb(51, 51, 51); visibility: hidden; position: absolute; top: -500px; left: -1000px; width: 1600px;"></form>

Text Content

Sign InProduct SupportContact Us
Book demoTry for free

Products

PRODUCTS

SEMGREP CODE

Find and fix issues that matter in your code (SAST)

SEMGREP SUPPLY CHAIN

Find and fix reachable dependency vulnerabilities (SCA)

SEMGREP SECRETS

Find and fix secrets using Semantic Analysis

PLATFORM

SEMGREP ASSISTANT

Automated recommendations for triage and code remediation using Semgrep assisted
by GPT-4

SEMGREP CLOUD PLATFORM

Manage and enforce code standards across your organization

SEMGREP PRO ENGINE

Advanced analysis for detecting vulnerabilities across files and functions.

FEATURED

REGISTRY

Find rules written by Semgrep and the community.

PLAYGROUND

Write and share rules using our online interactive tool.

PRODUCT UPDATES

Stay up to date on changes to the Semgrep platform, big and small.

DEMO CENTER

Check out the guided tour of Semgrep Supply Chain

Resources

DOCS

Want to read all the docs? Start here

BLOG

Get the latest news about Semgrep

ROI CALCULATOR

See how Semgrep can reduce your tech debt

COMMUNITY SLACK

Join the friendly Slack group to ask questions or share feedback

EVENTS

Join us at a Semgrep Event!

CASE STUDIES

See why users love Semgrep

FEATURED

Blog

INTRODUCING SEMGREP SECRETS

Blog

SEMGREP, A CODE & SUPPLY CHAIN SECURITY SEARCH ENGINE, RAISES SERIES C

Resource Hub
Company

ABOUT

The Semgrep story & values

CAREERS

Join the team!

PricingSign InProduct SupportContact Us
Book demoTry for free

Book demoTry for free
Case StudiessecurityHow Lyft finds security issues that matter with Semgrep
Customer Success Story


HOW LYFT FINDS SECURITY ISSUES THAT MATTER WITH SEMGREP

 * The ease of writing custom rules and testing with Semgrep has been valuable
   to Lyft in catching issues specific to its code

 * Semgrep Supply Chain (SCA) has enabled Lyft to identify and prioritize the
   dependency updates that matter the most



SUBSCRIBE TO OUR NEWSLETTER

*
Email*

Enter your email here








Subscribe

SHARE



SHARE


About the security team at LyftSecurity before SemgrepEase of writing custom
rules with SemgrepSemgrep Supply Chain helps significantly reduce noiseLooking
forward


ABOUT THE SECURITY TEAM AT LYFT

Lyft’s product security team is responsible for the security of all its
products. Their goal is to scale security by shifting left as much as possible
through the building of tooling and processes that catch security issues early
in the software development lifecycle.




SECURITY BEFORE SEMGREP

In order to shift left, finding issues specific to their code is very important
as it drastically reduces the number of false positive issues surfaced to
developers. The higher the number of false positives, the less likely developers
can fix issues. Therefore Lyft needed a solution that could support custom rule
writing and testing. Before Semgrep, the Lyft security team wrote custom rules
with tools that proved to be too time-consuming. This meant spending hours
writing rules and validating them. As a result, the Lyft security team realized
they needed to be more efficient and began seeking out a SAST solution.




EASE OF WRITING CUSTOM RULES WITH SEMGREP

The security team at Lyft chose Semgrep because it simplified writing custom
rules and covered all coding languages used by Lyft. And, these custom rules
enabled Lyft to find issues for its specific code and infrastructure. For
example, an application security engineer can go days without needing to write
or modify a custom rule, and Semgrep’s rule syntax makes it easy to start
writing or modifying rules again. This allows them to spend their time on other
pressing projects. Other SAST solutions didn't provide Lyft with this level of
expertise, especially as it relates to their complex rule syntax. Lyft also
adopted Semgrep because of its support for the necessary CI/CD tools and
well-maintained Pro rules.


https://semgrep.dev/r?q=gitlab.bandit.B506

The security team at Lyft customizes rules like this by adding a couple of
patterns to catch issues specific to their code




SEMGREP SUPPLY CHAIN HELPS SIGNIFICANTLY REDUCE NOISE

Lyft was using another product for scanning open source dependencies (SCA),
which they found to be extremely noisy - so noisy that they could not surface
the findings from that product to developers. With Semgrep Supply Chain’s
reachability analysis, the security team at Lyft has more confidence in
surfacing SCA findings to developers because they are now actionable. For
example, the security team can now ask developers to fix the issues because
there is proof that developers use the vulnerable dependencies in their code.
Semgrep Supply Chain also points out the exact location and when the code was
introduced, making it easy for developers to fix the issue and rule out false
positives.



> “Semgrep Supply Chain has helped reduce the noise by 95%” Khanh Le-Do,
> Security Software Engineer at Lyft

When the Log4Shell vulnerability was announced, the security team at Lyft
identified and remediated all instances of Log4Shell immediately. Semgrep Supply
Chain helped in finding a non-production, internal instance of Log4Shell in a
dependency. The security team at Lyft values the work that Semgrep’s security
researchers put into analyzing each CVE and writing reachability rules for them.
When a rule can be improved, the feedback process is straightforward and
produces quality results.

The Semgrep Supply Chain findings are routed to Lyft’s own open source security
graph tool - Cartography. The security team asks the developers to fix only the
reachable findings from Semgrep Supply Chain. Thus, Semgrep Supply Chain has
enabled the security team at Lyft to reduce the noise with actionable findings
and shift left.



 


LOOKING FORWARD

The security team is excited to try out Semgrep Assistant— which uses AI to
auto-triage security issues and automatically recommend code fixes. Due to the
significant time savings because of Semgrep Supply Chain, the security team is
looking forward to scaling their security program by tightly integrating Semgrep
into their workflow and enabling use cases such as writing more custom rules,
improving current rules, and testing them out against all repositories.

ABOUT

Semgrep lets security teams partner with developers and shift left organically,
without introducing friction. Semgrep gives security teams confidence that they
are only surfacing true, actionable issues to developers, and makes it easy for
developers to fix these issues in their existing environments.

FEATURED POSTS FROM THE SEMGREP BLOG, WRITTEN BY OUR ENGINEERING TEAM:

Announcement

December 01, 20223 min read

RELEASING SEMGREP 1.0

Yoann Padioleau
Security

January 17, 20239 min read

XML SECURITY IN JAVA

Pieter De Cremer
Best practices

October 13, 20228 min read

A DEEP DIVE INTO SEMGREP SUPPLY CHAIN

Kurt Boberg

Find and fix the issues that matter before build time

Semgrep helps organizations shift left without the developer productivity tax.

Get started in minutesBook a demo

Make shift left work



Products

Semgrep Code
Semgrep Supply Chain
Semgrep Cloud Platform
Semgrep Pro Engine

Community

Blog

Resources

Docs
ROI Calculator
Pricing
Getting Started With Semgrep
Registry
Playground
Book a demo
Help Center

Company

About
Careers
Contact us

STAY UP TO DATE

Subscribe to our newsletter

*
Email*

Enter your email here








Subscribe


© 2024 Semgrep, Inc. Semgrep is a registered trademark of Semgrep, Inc.

TermsPrivacy

By clicking “Accept All Cookies”, you agree to the storing of cookies on your
device to enhance site navigation, analyze site usage, and assist in our
marketing efforts. Semgrep's Privacy Policy
Cookies Settings Reject Optional Cookies Accept All Cookies



PRIVACY PREFERENCE CENTER

When you visit any website, it may store or retrieve information on your
browser, mostly in the form of cookies. This information might be about you,
your preferences or your device and is mostly used to make the site work as you
expect it to. The information does not usually directly identify you, but it can
give you a more personalized web experience. Because we respect your right to
privacy, you can choose not to allow some types of cookies. Click on the
different category headings to find out more and change our default settings.
However, blocking some types of cookies may impact your experience of the site
and the services we are able to offer.
More information
Allow All


MANAGE CONSENT PREFERENCES

STRICTLY NECESSARY COOKIES

Always Active

These cookies are necessary for the website to function and cannot be switched
off in our systems. They are usually only set in response to actions made by you
which amount to a request for services, such as setting your privacy
preferences, logging in or filling in forms. You can set your browser to block
or alert you about these cookies, but some parts of the site will not then work.
These cookies do not store any personally identifiable information.

PERFORMANCE COOKIES

Performance Cookies

These cookies allow us to count visits and traffic sources so we can measure and
improve the performance of our site. They help us to know which pages are the
most and least popular and see how visitors move around the site. All
information these cookies collect is aggregated and therefore anonymous. If you
do not allow these cookies we will not know when you have visited our site, and
will not be able to monitor its performance.

FUNCTIONAL COOKIES

Functional Cookies

These cookies enable the website to provide enhanced functionality and
personalisation. They may be set by us or by third party providers whose
services we have added to our pages. If you do not allow these cookies then some
or all of these services may not function properly.

TARGETING COOKIES

Targeting Cookies

These cookies may be set through our site by our advertising partners. They may
be used by those companies to build a profile of your interests and show you
relevant adverts on other sites. They do not store directly personal
information, but are based on uniquely identifying your browser and internet
device. If you do not allow these cookies, you will experience less targeted
advertising.

SOCIAL MEDIA COOKIES

Social Media Cookies

These cookies are set by a range of social media services that we have added to
the site to enable you to share our content with your friends and networks. They
are capable of tracking your browser across other sites and building up a
profile of your interests. This may impact the content and messages you see on
other websites you visit. If you do not allow these cookies you may not be able
to use or see these sharing tools.

Back Button


COOKIE LIST



Search Icon
Filter Icon

Clear
checkbox label label
Apply Cancel
Consent Leg.Interest
checkbox label label
checkbox label label
checkbox label label

Reject Optional Cookies Confirm My Choices