Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion data/attackcon.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@
{
"date": "October 2026",
"title": "ATT&CKcon 7.0",
"description": "ATT&CKcon 7.0 is scheduled for October 27-28, 2026. Join the MITRE ATT&CK community in McLean or virtually for the next annual conference led by the MITRE ATT&CK team. More details will be shared on the event site as they become available.",
"description": "ATT&CKcon 7.0 is scheduled for October 27-28, 2026. Join the MITRE ATT&CK community in McLean or virtually for the next annual conference led by the MITRE ATT&CK team. Virtual registration is now open.",
"banner_img": "/theme/images/attackcon/attackcon-7.0/attackcon7-logo.png",
"banner_img_max_width": "32rem",
"event_dates": "October 27-28, 2026",
"event_location": "McLean, VA and virtual",
"event_link": "https://na.eventscloud.com/mitreattack7/",
"virtual_registration_link": "https://mitre.brandlive.com/MITRE-ATTACKcon-7-0",
"cfp_link": "https://www.openconf.org/ATTACKcon2026/openconf.php",
"cfp_deadline_et": "2026-07-02T20:00:00-04:00"
},
Expand Down
12 changes: 12 additions & 0 deletions modules/resources/templates/attackcon-overview.html
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,18 @@ <h2 class="h4"><strong>{{ con.title }} Event Details</strong></h2>
</button>
</a>
{% endif %}
{% if "virtual_registration_link" in con %}
<a class="my-2 ml-2" target="_blank" rel="noopener" href="{{ con.virtual_registration_link }}">
<button type="button" class="slide-button slide-button-secondary">
<span class="slide-button-text">
<span>Register Virtually</span>
</span>
<span class="slide-button-icon">
<i class="fa fa-external-link"></i>
</span>
</button>
</a>
{% endif %}
{% if con.show_cfp %}
<a class="my-2 ml-2" target="_blank" rel="noopener" href="{{ con.cfp_link }}">
<button type="button" class="slide-button slide-button-secondary">
Expand Down
8 changes: 7 additions & 1 deletion modules/stixtests/stixtests.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ def run_tests():
"""Run tests"""
error_list = []
tests = 0
invalid_stix_domains = []

logger.info("Removing old reports")
reports = [stixtests_config.linkbyids_report_filename]
Expand All @@ -39,11 +40,14 @@ def run_tests():
stix_filename = util.stixhelpers.get_stix_file_path(domain["name"])

logger.info(f"Validating STIX for domain: {domain['name']}")
tests += 1
results = stix2validator.validate_file(fn=str(stix_filename), options=options)
if results.is_valid:
logger.info(f"File {stix_filename} is valid")
else:
logger.error(f"File {stix_filename} is invalid:")
error_list.append(stixtests_config.INVALID_STIX_BUNDLE)
invalid_stix_domains.append(domain["name"])

stix2validator.print_results(results)

Expand Down Expand Up @@ -77,6 +81,8 @@ def run_tests():
error_count=broken_linkbyids_count,
error_type="Broken LinkByIds",
)
if invalid_stix_domains:
logger.error(f"STIX validation failed for: {', '.join(invalid_stix_domains)}")

if not site_config.args.override_exit_status:
handle_exit(error_list)
Expand Down Expand Up @@ -193,5 +199,5 @@ def handle_exit(exit_codes):
# Exit on failure if any of these exit codes are found
# Regarding the link checker, only exit on failure if a problem
# is found on an internal link
if stixtests_config.BROKEN_LINKBYID in exit_codes:
if stixtests_config.BROKEN_LINKBYID in exit_codes or stixtests_config.INVALID_STIX_BUNDLE in exit_codes:
exit(stixtests_config.FAILURE)
1 change: 1 addition & 0 deletions modules/stixtests/stixtests_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
FAILURE = 1
WARNING = 2
BROKEN_LINKBYID = -14
INVALID_STIX_BUNDLE = -15

# Used to reset text color
RESET = "\033[0m" # mode 0 = reset
Expand Down
8 changes: 7 additions & 1 deletion modules/util/stixhelpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -583,7 +583,13 @@ def download_stix_file(url, filepath):
def get_url_from_stix(stix_object, is_subtechnique=False):
"""Parse the website url from a stix object."""
if stix_object.get("external_references"):
url = stix_object["external_references"][0]["url"]
first_external_reference = stix_object["external_references"][0]
url = first_external_reference.get("url")
if not url:
attack_id = buildhelpers.get_attack_id(stix_object)
stix_id = stix_object["id"]
logger.warning(f"[{stix_id}] [{attack_id}] has no URL in its first external reference")
return None
split_url = url.split("/")
splitfrom = -3 if is_subtechnique else -2
link = "/".join(split_url[splitfrom:])
Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ bleach==6.3.0
colorama==0.4.6
future==1.0.0
loguru==0.7.3
mitreattack-python==6.2.0
mitreattack-python==6.2.1
pelican==4.12.0
pelican-sitemap==1.2.2
python-dotenv==1.2.2
Expand Down
2 changes: 1 addition & 1 deletion website-banner.production
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ATT&CKcon 7.0 in-person tickets are open! Join us October 27-28, 2026 in McLean, VA. <a href="https://na.eventscloud.com/website/93925/">Register here</a> for in-person tickets; hotel and location details can be found in the <a href="https://na.eventscloud.com/website/93925/faq/">FAQ</a>.
ATT&CKcon 7.0 registration is open! Join us October 27-28, 2026 in McLean, VA or virtually. <a href="https://na.eventscloud.com/website/93925/">Register in person</a> or <a href="https://mitre.brandlive.com/MITRE-ATTACKcon-7-0">register virtually</a>. See the <a href="https://na.eventscloud.com/website/93925/faq/">FAQ</a> for hotel and venue details.
Loading