Anti-Abuse Group

The Anti-Abuse group creates controls to prevent abuse of the GitLab product

Vision

Our goal is to provide Insider Threat features for your applications as well as GitLab itself. We will help proactively identify malicious activity, accidental risk, compromised user accounts or infrastructure components, anomalous use of the GitLab platform, and various high-risk behaviors where actionable remediation steps are possible.

How we work

  • We work in accordance with our GitLab values.
  • We work transparently with nearly everything public.
  • We get a chance to work on the things we want to work on.
  • We have a bias for action.
  • We make data-driven decisions.
  • Everyone can contribute to our work.

Collaboration

You are encouraged to work as closely as needed with our stable counterparts.

Other teams that we might collaborate with include but are not limited to:

Here are some examples of when to engage with your counterpart:

Direction

Team members

The following people are permanent members of the Anti-Abuse Group:

Name Role
Jay SwainJay Swain Engineering Manager, Govern:Authorization and Anti-abuse
Eugie LimpinEugie Limpin Senior Fullstack Engineer, Govern:Anti-Abuse
Ian AndersonIan Anderson Staff Backend Engineer, Govern:Anti-Abuse

How to contact us

  • Tag a team member in a merge request or issue
  • Post a message in the #g_govern_anti-abuse Slack channel (GitLab internal)

Project management process

Our team uses a hybrid of Scrum for our project management process. This process follows GitLab’s monthly milestone release cycle.

Workflow

Our team use the following workflow stages defined in the Product Development Flow:

Issue boards

We use a team specific issue board to track issue progress on a daily basis. Issue boards are our single source of truth for the status of our work.

Iteration

When planning how to construct our MVC, we need to be aware of the tradeoffs of slicing MR’s vertically vs horizontally. Reducing scope for each iteration is encouraged.

As requirements can shift, and complexity can increase when uncovering challenging areas in the codebase, we strive to keep issue requirements updated for clarity.

We follow the iteration process outlined by the Engineering function.

Refinement

Refinement is the responsibility of every team member. While planning out an epic or a feature we break it down into small consumable MVC’s. This process is challenging, and takes time. This is why we’ve set a weekly refinement meeting.

Milestone Planning and Timeline

Our team follows the Product Development Timeline as our group is dependent on the GitLab self-managed release cycle.

We use planning issues to discuss priorites (GitLab internal).

Issue labels

We use issue labels to keep us organized. Every issue has a set of required labels that the issue must be tagged with. Every issue also has a set of optional labels that are used as needed.

Required labels

  • Stage: ~devops::govern
  • Group: ~group::anti-abuse

Merge request labels

MR labels can mirror issue labels (which is automatically done when created from an issue), but only certain labels are required for correctly measuring engineering performance.

Required labels

  • Stage: ~devops::govern
  • Group: ~group::anti-abuse

Milestones

We tag each issue and MR with the planned milestone or the milestone at time of completion.

Team Meetings

Our group holds synchronous meetings to gain additional clarity and alignment on our async discussions. We aspire to record all of our meetings as our team members are spread across several time zones and often cannot attend at the scheduled time.

We have a weekly team sync meeting with rotating EMEA/AMER and AMER/APAC friendly time slots: Weds 14:30 UTC and Thurs 00:00 UTC.

We have a weekly refinement session Friday 00:00 UTC.

Abuse Maintenance

The Anti-abuse team works closely with Trust and Safety to mitigate abuse on our platform. It’s not uncommon for Trust and safety to request features or maintenance from our team to assist their effort of mitigating abuse. Prioritized requests are organized in our Abuse Maintenance epic.

Pipeline Validation Service responsibility

PVS is an internal service that belongs to the Anti-abuse team. It’s a combination of heuristic-based (text matching, etc) and behavior-based rules (duplicate builds, etc). The Trust and Safety team leverages this service the most, and acts as the customer for feature requests.

Heuristic rules

Due to the nature of cryptomining attacks, heuristics are going to change quickly and need to be implemented rapidly. Accordingly, T&S is invited to submit MR’s to PVS that are heuristic based, or alternatively request these changes from the Anti-abuse team.

Behavior rules

Behavior rules are more slow to change and potentially cast a much wider net (vs a very targeted heuristic rule). Changes to behavior rules are expected to come from T&S, and implemented by the Anti-abuse team.

Severity and Priority

Severity and priority will be added on all issues/merge requests created by T&S so that Anti-abuse can act on them accordingly.

Priority will be based on impact and likelihood of the attacker returning.

Iteration

Anti-abuse will periodically review the accuracy of PVS alerts to see where there are opportunities to reduce the False Positive rate, without impacting the true positives, and Trust and Safety will help provide the required information to do this.